# Neo4j 知识图谱(Knowledge Graph)
微语提供独立的图数据库 compose 文件 `compose/compose-neo4j.yaml`(一镜像一文件),包含 [Neo4j](https://github.com/neo4j/neo4j) 社区版(原生图数据库,用于知识图谱 / GraphRAG 能力验证),通过关键字 `neo4j` 按需启动,自动接入 `bytedesk-network`。
> **企业版高级功能**:应用侧知识图谱代码位于 `enterprise/ai` 模块(`com.bytedesk.ai.neo4j` 包),仅企业版/平台版可用,社区版发布镜像中不包含此功能。
- 官方文档:
- 镜像:
## 启动 Neo4j
`start.sh` / `stop.sh` 支持关键字 `neo4j`,用于启停 `compose/compose-neo4j.yaml`:
```bash
cd deploy/docker
# 方式 A(推荐):在启动中间件/应用栈时附带 Neo4j
./start.sh middleware neo4j
./start.sh all neo4j # 全量栈 + 图数据库
./stop.sh stop middleware neo4j
./stop.sh down middleware neo4j # 删除容器,数据卷保留
# 方式 B:仅 Neo4j(需先确保 bytedesk-network 存在;在 deploy/docker 目录执行)
docker compose --env-file .env -f compose/compose-neo4j.yaml up -d
```
## 访问地址
| 服务 | 地址 | 说明 |
| --- | --- | --- |
| Neo4j Browser | | 浏览器可视化与管理 |
| Bolt 连接 | bolt://127.0.0.1:17687 | 源码本地运行时应用使用;docker 全量时应用容器内为 `bolt://neo4j-bytedesk:7687` |
默认账号 `neo4j` / `${NEO4J_PASSWORD}`(`.env` 中配置,默认 `bytedesk-neo4j`)。
## 密码说明(重要)
- `NEO4J_AUTH` 中的初始密码**仅对空数据卷首次启动生效**;复用已有 `neo4j-data` 卷时,修改 `.env` 中的 `NEO4J_PASSWORD` **不会**覆盖库内旧密码
- 若在 Browser 中已修改过密码,需同步更新 `.env` 的 `NEO4J_PASSWORD` 与应用侧 `BYTEDESK_AI_NEO4J_PASSWORD`,否则应用连接会认证失败
- 需要彻底重置密码时,先 `./stop.sh down middleware neo4j` 再手动删除 `neo4j-data` 数据卷(`docker volume rm bytedesk_neo4j-data`),或按 Neo4j 官方方式在库内改密
## 启用应用侧知识图谱
Neo4j 启动后,还需在应用侧打开开关(默认关闭,不影响正常启动):
```bash
# .env 中配置(docker 全量启动时生效,容器内通过容器名访问)
BYTEDESK_AI_NEO4J_ENABLED=true
BYTEDESK_AI_NEO4J_URI=bolt://neo4j-bytedesk:7687
BYTEDESK_AI_NEO4J_PASSWORD=<与 NEO4J_PASSWORD 保持一致>
# 或源码本地运行时,在 properties 中配置(宿主机端口)
# bytedesk.ai.neo4j.enabled=true
# bytedesk.ai.neo4j.uri=bolt://127.0.0.1:17687
```
## 测试接口(bytedesk.debug=true 时可用)
```bash
# 1. 服务状态与连通性检查
curl http://127.0.0.1:9003/spring/ai/api/v1/neo4j/status
# 2. 写入演示知识图谱(幂等,:BytedeskDemo 标签隔离,模拟 分类-[:CONTAINS]->FAQ、FAQ-[:RELATED_TO]->FAQ、FAQ-[:MENTIONS]->产品实体)
curl -X POST http://127.0.0.1:9003/spring/ai/api/v1/neo4j/seed-demo
# 3. 读取演示图谱节点与关系
curl "http://127.0.0.1:9003/spring/ai/api/v1/neo4j/graph-demo?limit=100"
# 4. 清理演示图谱数据
curl -X POST http://127.0.0.1:9003/spring/ai/api/v1/neo4j/clear-demo
```
## 说明
- 镜像固定 `neo4j:5.26.30`(5.x LTS 社区版),不使用 `latest`,避免大版本漂移
- 应用侧相关参数:`bytedesk.ai.neo4j.enabled`(开关)、`uri`、`username`、`password`、`database`、`connect-timeout-ms`、`max-connection-pool-size`
- 开关关闭(默认)时应用不触发任何连库行为,不影响启动;演示数据统一打 `:BytedeskDemo {demo:true}` 标签,与业务数据完全隔离
- 本阶段仅做连通性与演示验证,GraphRAG 检索增强等业务能力见 `docs/plans/` 知识图谱业务规划