向量检索解决了"找相似"的问题,但企业里更多的问题是"找关系"------而这正是知识图谱的主场。
一、一个向量检索解决不了的问题
假设你是一家制造企业的 IT 负责人,员工向知识库提问:
"零件 A 的尺寸变更会影响哪些下游工序,涉及哪些岗位需要重新培训?"
这个问题有几个特点:它不是在找"语义相似的文档",而是在追踪一条关系链------零件 → 工序 → 岗位 → 培训制度。任何一个环节的文档单独拿出来,都回答不了这个问题。
纯 RAG 在这里会失败:它会召回若干"看起来相关"的文档片段,拼凑出一个缺乏结构的答案,遗漏中间的关联节点。
这就是知识图谱(Knowledge Graph)进入 Agent 架构的核心动机:它不替代向量检索,而是补充向量检索天然缺失的关系推理能力。
二、知识图谱的基本结构
知识图谱本质上是一张有向图,由三元组构成:
plaintext
(实体 A) --[关系]--> (实体 B)
例如:
(零件-A) --[用于]--> (工序-冲压)
(工序-冲压) --[需要岗位]--> (冲压工-二级)
(冲压工-二级) --[需通过]--> (培训课程-设备操作规程V3)
(培训课程-V3) --[依据]--> (制度文件-设备管理规范2024)
将这张图构建出来之后,上面那个问题就变成了一次图遍历:从"零件 A"出发,沿关系边向下追溯,直到覆盖所有受影响的节点。
实体类型可以非常多样------人、物、流程、制度、系统、表单、工单......只要两者之间存在可定义的关系,就可以进图。
三、图谱构建:从文档到结构化关系网络
构建知识图谱最大的工程挑战,是从非结构化文档中自动抽取实体和关系。这一步的质量决定了图谱能否真正可用。
3.1 实体与关系抽取(NER + RE)
命名实体识别(NER)负责识别文本中的实体,关系抽取(RE)负责识别实体间的语义关系。传统方案依赖规则或小模型,LLM 的引入让这一步的泛化能力大幅提升:
python
# 基于 LLM 的实体关系抽取示意
import json
def extract_entities_and_relations(text: str, llm_client) -> dict:
prompt = f"""
从以下企业文档中抽取实体和关系,以 JSON 格式返回。
实体类型:人员、岗位、流程、制度、系统、设备、产品
关系类型:负责、依据、触发、影响、包含、需要、产出
文档内容:
{text}
输出格式:
{{
"entities": [
{{"id": "e1", "type": "岗位", "name": "质检工程师"}},
],
"relations": [
{{"source": "e1", "relation": "依据", "target": "e2"}},
]
}}
只返回 JSON,不要其他内容。
"""
response = llm_client.complete(prompt)
return json.loads(response.text)
但 LLM 抽取的结果并不总是可信的------实体边界模糊、关系方向错误、同义实体未合并("设备操作规程"和"设备规程"指同一文件)。这就需要人工校正机制:业务人员通过可视化界面对自动抽取的结果进行审查和补录,让图谱逐步从"基本可用"走向"精准可用"。
3.2 实体消歧与合并
同一实体在不同文档里可能有不同表述。如果不做消歧,图谱里会出现大量孤立节点,关系链断裂。
常见策略:字符串归一化(去除空格、统一全半角、处理缩写)、嵌入相似度合并(向量化后相似度超过阈值则视为同一实体)、规则约束(同类型同上级组织的实体,名称编辑距离小于 N 则合并)。
python
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")
def deduplicate_entities(entities: list, threshold: float = 0.92) -> list:
"""基于语义相似度合并重复实体"""
names = [e["name"] for e in entities]
embeddings = model.encode(names)
merged, visited = [], set()
for i, entity in enumerate(entities):
if i in visited:
continue
group = [entity]
for j in range(i + 1, len(entities)):
if j in visited or entities[j]["type"] != entity["type"]:
continue
sim = np.dot(embeddings[i], embeddings[j]) / (
np.linalg.norm(embeddings[i]) * np.linalg.norm(embeddings[j])
)
if sim >= threshold:
group.append(entities[j])
visited.add(j)
# 取出现频次最高的名称作为标准名
merged.append(max(group, key=lambda e: e.get("freq", 1)))
visited.add(i)
return merged
四、图谱增强检索:向量 + 图的混合查询
图谱构建完成后,如何融入 Agent 的检索链路?
4.1 两阶段检索架构
plaintext
用户问题
│
▼
[Stage 1] 向量检索
找到最相关的 Top-K 文档片段
识别片段中出现的关键实体
│
▼
[Stage 2] 图谱扩展
以识别到的实体为起点,在知识图谱中做 N 跳遍历
扩展召回关联实体及其所在的文档片段
│
▼
[Merge & Rerank]
合并两路结果,按相关性重排序
│
▼
[LLM 生成]
基于扩展后的上下文生成答案,标注来源路径
Stage 2 中的"N 跳遍历"是关键参数。跳数太少,关联信息覆盖不全;跳数太多,引入大量无关噪声。实践中通常从 2 跳开始,根据业务场景调整,并结合关系类型做剪枝("参考"关系的权重低于"依据"关系)。
4.2 推理路径的价值
图谱检索还能输出推理路径,即 Agent 是怎么一步步从问题出发找到答案的:
plaintext
问题:质量问题 QC-2024-0312 的根因是什么,涉及哪些责任岗位?
推理路径:
质量问题-QC-2024-0312
└─[发生于]─ 产线-B3-封装段
└─[设备]─ 封装机-#07
└─[维保记录]─ 维保工单-2024-09-15(超期未维保)
└─[负责岗位]─ 设备工程师-王某
└─[所属部门]─ 设备管理部
结论:根因为封装机-#07 超期未完成预防性维保,
责任岗位为设备管理部设备工程师。
这条推理路径可以直接附在答案后面作为溯源依据,让 Agent 的回答从"说了什么"变成"怎么得出的"------在合规要求高的行业(医药、金融、政府)尤为重要。
五、知识图谱在企业 Agent 中的典型场景
合同影响分析:大型企业里,一份框架合同下面挂着几十个子合同、补充协议、对应的采购订单。某条款发生变更时,人工排查影响范围往往需要数天。图谱将合同之间的引用关系、条款与业务流程的绑定关系显式化,变更发生时 Agent 沿图谱追溯,秒级输出影响清单。
SOP 合规核查:制造业的 SOP 文件之间存在大量引用------操作规程引用设备规格、引用安全标准、引用培训要求。当设备升级或国标更新时,需核查哪些 SOP 需要同步修订。将引用关系建入图谱后,Agent 可自动生成"需修订文件清单 + 修订建议 + 依据条款"的结构化报告。
多跳知识问答:"我们公司采购 X 类物料需要经过哪几级审批,最终审批人是谁,依据的是哪个制度文件第几条?"这类问题跨越物料分类、审批流程、人员组织、制度文档四个知识域,纯 RAG 几乎无法准确回答,图谱将这四个域串联后,Agent 可以沿链路完整推理。
国内已有企业级 Agent 平台在此方向做了较深的工程化。以国产智能体服务商比孚科技的 Bizfocus ADP 为例,其知识图谱模块支持从文档自动抽取实体关系、业务人员可视化校正补录,并将"制度---流程---系统---岗位---表单---工单"等业务要素串联成可查询的关系网络,支持"影响分析""故障根因链路""政策条款引用链"等应用化输出,图谱检索与 RAG 混合方案在私有化部署环境中完整运行。
六、工程落地的几个注意点
图谱冷启动:从核心业务文档(制度汇编、流程手册、组织架构)开始构建,不要试图一次覆盖所有文档。先建一个小而准的图,比建一个大而乱的图更有价值。
图谱与文档的同步:文档更新时图谱需要同步维护,否则会出现"图谱里的关系指向已失效文档版本"这类隐性错误。理想状态是图谱节点直接绑定文档的版本标识,文档变更时触发关联节点的审查流程。
查询性能:图遍历在数据量大时可能成为瓶颈。常用优化手段包括:对高频查询路径做缓存、限制单次遍历的最大节点数、对边的类型和权重做索引。图数据库的选型(Neo4j、NebulaGraph、TuGraph 等)也会影响大规模场景下的查询延迟。
知识图谱的边界 :图谱不是万能的。适合用图谱的场景是实体关系复杂、需要多跳推理、答案需要可溯源、知识域相对稳定。如果知识以非结构化叙述为主,或业务变化极快导致图谱维护成本远高于收益,纯 RAG 可能是更务实的选择。一个务实的起点:先用纯 RAG 跑通业务,识别出哪些问题 RAG 持续答错,再判断是否值得引入图谱补充这部分能力。
七、向前看:Agent 与图谱的深度融合
当前图谱增强 RAG 的主流模式,是把图谱作为检索的一个数据源。更进一步的方向是让 Agent 具备图谱推理能力:不只是查已有的关系,而是能根据已知事实和规则,推断出图谱中尚未显式存在的新关系。这与知识推理、因果推断的研究方向正在逐步融合。
另一个值得关注的方向是动态图谱:随着 Agent 的运行,图谱本身持续更新------Agent 处理的每一个案例、每一次异常,都可以作为新的节点和关系写入图谱,让图谱随业务运转而自动生长。
这两个方向都还在工程化早期,但已经有团队在法律、医药、工业等垂直领域做出了有说服力的原型。对于正在规划企业 AI 基础设施的团队来说,现在是一个好时机去理解这条技术路线------即使暂时不实施。
欢迎在评论区交流你在企业知识图谱落地中遇到的问题。