知识图谱部署

已经有完整的weknora部署指南,现在在已有部署基础上添加neo4j配置。

WeKnora 的知识图谱功能可以不部署 Neo4j 也能启用,但功能会有限制。

Neo4j 在 WeKnora 中是一个可选组件 ,主要作用是为知识图谱提供持久化存储和查询能力。即使没有 Neo4j,你仍然可以使用知识图谱功能,只是无法获得完整的 GraphRAG(基于知识图谱的检索增强生成)体验。

不部署 Neo4j 时,知识图谱能做什么?

  • 实体和关系提取 :系统仍然可以分析文档,自动提取其中的实体(如人物、地点、概念)和它们之间的关系。
  • Wiki 模式下的交互式图谱 :在"Wiki 模式"下,Agent 可以将原始文档整理成交互式知识图谱,即使没有 Neo4j 作为后端,这个功能依然可用。

❌ 不部署 Neo4j 时,知识图谱不能做什么?

  • GraphRAG 增强检索 :这是知识图谱最核心的用途之一。没有 Neo4j,系统就无法在进行检索时,利用知识图谱中实体间的关联关系来找到更全面、更相关的上下文信息。
  • 图谱数据的持久化与可视化查询 :你无法通过 Neo4j 的浏览器界面(http://localhost:7474)来直观地查看、管理和查询构建好的知识图谱。

⚙️ 如何配置?

前置检查

确保您当前在 WeKnora 项目目录下(cd WeKnora),且 Docker 服务正常运行。


第一步:修改 .env 文件,添加 Neo4j 配置

在项目根目录下,使用 vi .env 或 sed 命令添加以下 Neo4j 配置项(如果已有则修改):

复制代码
# 追加到 .env 末尾
cat >> .env << 'EOF'
NEO4J_ENABLE=true
NEO4J_URI=bolt://neo4j:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=your_strong_password_here
EOF

请将 your_strong_password_here****替换为您自己的强密码(例如 WeKnora2025!****) ,并记住此密码。

注意 :DB_* 配置保持不变,NEO4J_* 是新增的,不会影响现有 PostgreSQL 数据库。


第二步:修改 docker-compose.yml,添加 Neo4j 服务

WeKnora 的 docker-compose.yml 可能已包含 Neo4j 服务(但被注释或需要 profile)。您需要编辑该文件,确保 Neo4j 服务被启用。

打开 docker-compose.yml:

  1. vi docker-compose.yml

  2. 查找 neo4j 服务定义。如果存在但被 profiles 限制,请移除或修改该限制。通常该服务定义如下(若无,请将以下内容添加到 services 部分):

    neo4j:
    image: neo4j:5.22.0
    container_name: weknora-neo4j
    ports:
    - "7474:7474" # HTTP 管理界面
    - "7687:7687" # Bolt 协议端口
    environment:
    - NEO4J_AUTH={NEO4J_USERNAME}/{NEO4J_PASSWORD}
    - NEO4J_PLUGINS=["apoc"]
    volumes:
    - neo4j-data:/data
    - neo4j-logs:/logs
    networks:
    - weknora-network
    restart: unless-stopped
    # 如果原有的 services 中有 profiles,请删除或注释掉

同时,在文件末尾的 volumes 部分添加:

复制代码
volumes:
  neo4j-data:
  neo4j-logs:

网络部分(networks)应已存在 weknora-network,无需修改。

  1. 保存并退出。

第三步:重启服务并启动 Neo4j

使用 Docker Compose 重新启动所有服务(包括新加入的 Neo4j):

复制代码
docker compose down   # 可选,如果不希望中断现有服务,也可以直接 up
docker compose up -d

查看所有容器状态:

docker compose ps

您应该能看到名为 weknora-neo4j 的容器状态为 Up。


第四步:验证 Neo4j 是否正常运行

查看 Neo4j 日志 (确认无报错):

  1. docker compose logs neo4j --tail=50
  2. 访问 Neo4j 浏览器 :在浏览器中打开 http://您的服务器公网IP:7474,使用您在 .env 中设置的用户名(neo4j)和密码登录。如果能够登录,则 Neo4j 已正常运行。
  3. 若无法成功,可能因为没有设置安全组
  4. docker compose logs app | grep -i neo4j

如果出现类似 Neo4j driver initialized successfully 或 GraphRAG enabled 的信息,则表示连接成功。

设置安全组

如果希望从外部访问 Neo4j 浏览器(7474 端口),请在腾讯云安全组中放行该端口。若不需外部访问,可跳过此步。

确认 WeKnora 能连接 Neo4j :查看 app 容器的日志,看是否有成功连接 Neo4j 的信息:


第五步:在 WeKnora Web 界面启用知识图谱

  1. 登录 WeKnora Web 界面(http://您的服务器公网IP:8081)。
  2. 进入某个知识库 的设置页面(或全局设置)。
  3. 找到 "知识图谱""实体和关系抽取" 选项,将其启用
  4. 根据需要调整抽取强度等参数(默认即可)。
  5. 保存设置。

第六步:上传文档,自动构建知识图谱

向该知识库上传文档(支持 PDF、Word、Markdown 等),WeKnora 会在后台自动进行实体和关系抽取,并存入 Neo4j。

可以重新构建已上传文档,WeKnora 会在后台自动进行实体和关系抽取,并存入 Neo4j。