ARTICLE · 997623
文档堆和知识图谱,为什么检索效果不同?
向量检索回答"在哪提到 X",知识图谱回答"X 和 Y 什么关系"。GraphRAG 的核心是用图结构组织知识,让检索从"文本相似度匹配"升级为"图模式匹配",从而支持关系推理和全局综合问题。
18.1 从"文档堆"到"知识地图"
传统 RAG 的盲区
传统 RAG 把文档切成块、编码成向量、检索时按相似度匹配。这种方式有两个局限:
- 关系盲
:文档块是独立单元,块与块之间的关系(谁引用谁、谁属于谁)被切断。 - 全局盲
:跨文档的综合问题(比如"整个语料涉及哪些主题?")很难用局部检索回答,只能寄希望于生成模型的归纳能力。
知识图谱把实体和关系显式建模,检索时按"图模式"匹配,这两个盲区都能缓解。
两种检索结果的对比
图 18-1 展示了两种形态的差异。文档堆是扁平的文本列表,检索结果是若干块,需要 LLM 自己拼出"关系";知识地图是结构化的图,检索结果本身就是实体和关系,关系是显式可见的。
GraphRAG 的定位
GraphRAG 不是要替代向量 RAG,而是在向量 RAG 之上叠加一层图结构:
- 向量 RAG 负责
:文本语义匹配,找最相似的文档块。 - 知识图谱负责
:实体和关系建模,支持关系推理、全局查询。 - 协同方式
:先抽取知识图谱(离线),检索时混合使用向量和图查询,生成时把图谱子图一并送给 LLM。
🧠
GraphRAG 的核心动机
GraphRAG 不是"更高级的向量检索",而是补足向量检索的结构盲区:
- 关系推理
:"A 间接关联 B"通过图遍历可以直接算,不需要 LLM 推理。 - 全局综合
:用社区检测把图分成主题社区,综合问题时查社区,避免塞全部文档。 - 多跳问答
:"X 的供应链涉及谁"这种多跳问题,向量检索容易断,图遍历稳。
适用场景:实体关系密集的语料(企业知识库、学术论文、法律法规、医疗病历)。
18.2 知识图谱的构建
文本到图谱的流水线
知识图谱不是凭空存在的,要从文本中抽取。典型的流水线是"分块 -> 实体识别 -> 关系抽取 -> 属性提取 -> 存储"。
每一步都有关键选择:
实体识别与链接(NER)
实体识别是从文本中找出"实体"(人名、设备名、工艺名、地点等)。实体链接是把识别出的实体对应到知识库中的标准实体(去重、消歧)。
关系抽取
关系抽取是识别"实体 A 和实体 B 是什么关系"(如 A 依赖 B、A 属于 B、A 影响 B)。
- 基于模式
:用依存句法 + 规则模板抽取,精确但覆盖面窄。 - 基于分类
:把关系类别当作分类标签,需要标注数据。 - 基于 LLM
:用大模型直接读句子输出三元组(头实体,关系,尾实体),灵活但需校验。
LLM 驱动的抽取现在是主流,但抽取结果要做去重和一致性校验,避免"同实体不同名"和"矛盾关系"。
属性提取
属性是实体的额外信息(设备的生产年份、人员的职务、文档的发布时间等)。属性让图谱更丰富,检索时可以按属性过滤。
1
文本预处理
undefined
2
实体识别
undefined
3
关系抽取
undefined
4
属性提取
undefined
5
存储与索引
undefined
💡
图谱构建的工程现实
构建知识图谱是 GraphRAG 最重的工程环节,几个常见做法:
- LLM 主导
:让大模型批量读文档,输出结构化三元组,人工抽检质量。 - 小模型补充
:对高频模式用规则或小模型抽,降低 LLM 成本。 - 增量更新
:文档新增时,只对新增部分重抽,避免全量重建。 - 质量门禁
:抽取后做一致性校验(冲突检测、孤儿节点清理),保证图谱可用。
构建成本不低,但一旦图谱稳定,检索效果提升明显,适合关系密集的语料。
18.3 图结构的层次
从局部到全局的四层抽象
知识图谱不是扁平的"节点+边",而是有层次的抽象。不同查询类型对应不同层次:
- 实体层
:单个实体(设备 A、人员 X)。 - 关系层
:实体之间的直接关系(A 依赖 B)。 - 社区层
:通过图聚类形成的实体子群(同一工艺相关的设备群)。 - 全局层
:整个图的概览(主题分布、关键节点)。
四层抽象对应不同查询:
实体层与关系层:精确问答
"设备 A 的供应商是谁"是实体 + 关系的精确问题,图遍历一两跳就能回答,不需要 LLM 介入。向量检索对这类问题常常答不准,因为"供应商"这个关系在文本中可能被各种方式表达。
社区层:主题级综合
"涉及高温工艺的设备有哪些"是主题级问题,需要先识别"高温工艺"这个社区,再列出社区内的设备。社区检测算法(Leiden、Louvain)把图聚成若干主题群,每个群有摘要,综合查询时按社区检索。
全局层:跨语料综述
"整个文档库涉及哪些主要主题"是全局问题。如果用向量检索,需要把全部文档塞给 LLM,成本高且容易遗漏。GraphRAG 预先对每个社区生成摘要,全局查询时汇总社区摘要,成本可控且更结构化。
四层抽象的选择不是固定的,实际系统中常混合使用:先在全局层定位相关社区,再在社区层下钻,最后在实体/关系层取出具体节点,形成"由粗到细"的检索路径。这种分层结构让 GraphRAG 在不同粒度的问题上都能给出结构化的答案。
⚠️
图谱不是越多越好
GraphRAG 也有成本和局限:
- 构建成本高
:抽取、清洗、校验都要投入,语料小时不划算。 - 关系质量参差
:LLM 抽取的关系可能错,需要人审或规则校验。 - 更新滞后
:文档更新后图谱不立即同步,要设计增量更新流程。 - 不是所有问题都适合
:简单事实查询用纯向量 RAG 就够,上 GraphRAG 反而重。
建议:实体关系密集的语料(企业知识、医疗、学术)用 GraphRAG;简单文档库用向量 RAG 就够。
18.4 小结
本章讲了 GraphRAG 的动机和基础:
- 动机
:向量检索答"在哪提到 X",图谱检索答"X 和 Y 什么关系"。GraphRAG 补足向量检索的关系盲和全局盲。 - 构建
:流水线是"分块 -> 实体识别 -> 关系抽取 -> 属性提取 -> 存储",LLM 驱动的自动构建是主流,但要配质量校验。 - 结构层次
:实体层(单点)→ 关系层(边)→ 社区层(主题群)→ 全局层(综述),不同查询类型对应不同层次。 - 适用场景
:实体关系密集的语料(企业知识、医疗、学术、法律),简单文档库用纯向量 RAG 即可。
下一章讲 GraphRAG 的检索与生成--图谱建好之后,怎么在图上做检索、怎么把图谱子图送给 LLM。
18.5 一句话回顾
GraphRAG 的本质是把"文档堆"变成"知识地图",让检索从文本相似度匹配升级为图模式匹配。