3.6 知识图谱

知识库靠「相似度」检索,知识图谱靠「关系」检索。订单号、会员价格、A 部门隶属 B 体系这类精确事实,向量检索的区分度往往不够——把它们组织成类型化的点与边后,AI 可以沿着关系给出确定性的答案。两者配合使用效果最佳:知识库存文档,图谱存结构化事实。

图谱能力依赖图数据库(Memgraph 或外部 Neo4j),由超级管理员在「系统设置 → 知识图谱」中开启并配置连接。入口在团队空间的「知识图谱」菜单,一个团队可以创建多个图谱实例分别承载不同业务。

建模:先定义类型,再灌数据

图谱的质量取决于建模。进入图谱的「维护」分区,按「定义模型 → 录入实例 → 连接关系」三步向导操作:

图谱维护:类型建模

  • 实体类型:点「新增实体类型」定义业务概念(如 产品、功能、会员版本),可为类型声明属性(如产品的「官网」);
  • 关系类型:定义点与点之间的连接(如 包含功能、提供功能、升级至),可约束起点/终点类型;
  • 录入实例与连接关系:向导的第二、三步手工录入数据——适合少量样例,批量数据请走导入。

建模经验:业务数字、编号、价格这类精确信息要写进节点的描述里。语义检索返回给模型的是名称与描述,描述里没有的信息模型拿不到。

数据导入:JSON 结构化导入

「导入」分区提供两种方式:

  • JSON 导入:把结构化数据整批导入,适合从业务系统定期导出的台账;
  • AI 智能导入:把文档或文本交给模型抽取点边,适合从非结构化内容建图(需要对话模型可用)。

JSON 导入的格式(类型按名称引用并可自动创建,节点携带业务 key):

{
  "mode": "upsert",
  "autoCreateTypes": true,
  "nodes": [
    { "key": "m-1", "entityTypeName": "会员版本", "name": "黄金会员",
      "description": "20 元/月或 198 元/年;2TB 空间,单文件最大 20GB" }
  ],
  "edges": [
    { "relationTypeName": "升级至", "source": { "key": "m-1" }, "target": { "key": "m-2" } }
  ]
}

JSON 导入

几个关键设计:

  • 业务 key 幂等 upsert:key 是节点的业务标识,重复导入同 key 数据是更新而不是重复创建——业务系统可以放心地反复同步;
  • 预检(不落库):先执行一次 validateOnly,看「将新建多少、更新多少、哪些行会失败」,确认无误再正式导入:

导入预检报告

  • 逐条报告不阻断:坏行逐条报告,不影响其他数据继续导入;
  • 疑似重复检测:导入时自动提示可能重复的节点。

图览:可视化检查

「图览」分区以力导向图渲染整张图谱,按实体类型着色、边上标注关系名,支持按名称搜索节点。导入后先来这里看一眼结构是否符合预期:

图谱画布

语义检索与召回测试

图谱支持向量化语义检索:在图谱设置中配置向量化模型后,可按自然语言搜索节点,返回名称、描述与一跳邻居。「召回测试」分区用于验证效果,参数与知识库召回测试一致(返回条数、相似度阈值、AI 优化问题与回答):

图谱召回测试

在应用与集成中使用

  • 应用绑定:Agent 应用在「配置」中勾选允许语义检索的图谱(仅本团队托管图谱),流程应用使用知识图谱检索节点;
  • 外部接口:业务系统可通过应用接入 key 读写图谱(kg_read / kg_write 分档,支持类型节点边维护、批量导入与按业务 key 同步),详见 3.10 应用接入;
  • MCP:图谱同样提供 MCP 只读工具,接入方式与 知识库 MCP 一致。

案例:云途业务图谱

本章截图来自一个真实的演示图谱「云途业务图谱」,建模与导入过程如下:

  1. 建模:定义 产品 / 功能 / 会员版本 三个实体类型,包含功能 / 提供功能 / 升级至 三个关系类型;
  2. 灌数:JSON 导入 9 个节点、11 条边——产品挂五个功能,三个会员版本各自「提供功能」,黄金会员「升级至」白金会员;价格、容量等数字全部写进节点描述;
  3. 预检:先跑预检确认「新建 9 节点 / 11 边、0 失败」,再正式导入;
  4. 核验:图览确认结构,召回测试验证「会员能免提码分享吗」这类问题能沿 提供功能→文件分享 的关系命中。

后续业务系统按业务 key 增量 upsert(如会员价格调整只更新 m-1 节点),图谱即可长期与业务保持一致。

常见问题

语义检索总是搜不到该搜的点?
九成是描述问题:把编号、价格、别名等精确信息补进节点描述;向量化模型必须在图谱设置中配置且已完成向量化同步。

导入报错怎么看是哪一行的问题?
导入结果逐行列出失败原因(类型不存在且未开自动创建、端点引用无法解析等),修正对应行后重新导入即可——已成功的行因幂等 upsert 不会重复创建。

不用 Memgraph 行不行?
平台支持接入外部 Neo4j(系统设置中切换方言),连接信息由管理员配置。

图谱和知识库应该选哪个?
文档、手册、FAQ 放知识库;编号、价格、从属关系等结构化事实放图谱。客服场景的常见组合是两者都绑定——模型先按关系查事实,再按相似度查细节。