夜雨聆风学习资料网

ARTICLE · 997623

文档堆和知识图谱,为什么检索效果不同?

文档堆和知识图谱,为什么检索效果不同?

向量检索回答"在哪提到 X",知识图谱回答"X 和 Y 什么关系"。GraphRAG 的核心是用图结构组织知识,让检索从"文本相似度匹配"升级为"图模式匹配",从而支持关系推理和全局综合问题。

18.1 从"文档堆"到"知识地图"

传统 RAG 的盲区

传统 RAG 把文档切成块、编码成向量、检索时按相似度匹配。这种方式有两个局限:

  • 关系盲
    :文档块是独立单元,块与块之间的关系(谁引用谁、谁属于谁)被切断。
  • 全局盲
    :跨文档的综合问题(比如"整个语料涉及哪些主题?")很难用局部检索回答,只能寄希望于生成模型的归纳能力。

知识图谱把实体和关系显式建模,检索时按"图模式"匹配,这两个盲区都能缓解。

两种检索结果的对比

图 18-1 文档堆 vs 知识地图:两种检索形态

图 18-1 展示了两种形态的差异。文档堆是扁平的文本列表,检索结果是若干块,需要 LLM 自己拼出"关系";知识地图是结构化的图,检索结果本身就是实体和关系,关系是显式可见的。

GraphRAG 的定位

GraphRAG 不是要替代向量 RAG,而是在向量 RAG 之上叠加一层图结构:

  • 向量 RAG 负责
    :文本语义匹配,找最相似的文档块。
  • 知识图谱负责
    :实体和关系建模,支持关系推理、全局查询。
  • 协同方式
    :先抽取知识图谱(离线),检索时混合使用向量和图查询,生成时把图谱子图一并送给 LLM。

🧠

GraphRAG 的核心动机

GraphRAG 不是"更高级的向量检索",而是补足向量检索的结构盲区: 

  1. 关系推理
    :"A 间接关联 B"通过图遍历可以直接算,不需要 LLM 推理。
  2. 全局综合
    :用社区检测把图分成主题社区,综合问题时查社区,避免塞全部文档。
  3. 多跳问答
    :"X 的供应链涉及谁"这种多跳问题,向量检索容易断,图遍历稳。

适用场景:实体关系密集的语料(企业知识库、学术论文、法律法规、医疗病历)。

18.2 知识图谱的构建

文本到图谱的流水线

知识图谱不是凭空存在的,要从文本中抽取。典型的流水线是"分块 -> 实体识别 -> 关系抽取 -> 属性提取 -> 存储"。

图 18-2 知识图谱构建流水线

每一步都有关键选择:

实体识别与链接(NER)

实体识别是从文本中找出"实体"(人名、设备名、工艺名、地点等)。实体链接是把识别出的实体对应到知识库中的标准实体(去重、消歧)。

方法
原理
优势
局限
传统 NER 模型
BERT + CRF 序列标注
快、可控
需标注数据、领域迁移差
LLM NER
大模型 prompt 抽取
零样本、灵活
成本高、有幻觉
规则 + 词典
正则 + 实体词典
精确、可解释
覆盖面窄、维护成本高
混合策略
词典打底 + LLM 补全
平衡精度和召回
工程复杂度高

关系抽取

关系抽取是识别"实体 A 和实体 B 是什么关系"(如 A 依赖 B、A 属于 B、A 影响 B)。

  • 基于模式
    :用依存句法 + 规则模板抽取,精确但覆盖面窄。
  • 基于分类
    :把关系类别当作分类标签,需要标注数据。
  • 基于 LLM
    :用大模型直接读句子输出三元组(头实体,关系,尾实体),灵活但需校验。

LLM 驱动的抽取现在是主流,但抽取结果要做去重和一致性校验,避免"同实体不同名"和"矛盾关系"。

属性提取

属性是实体的额外信息(设备的生产年份、人员的职务、文档的发布时间等)。属性让图谱更丰富,检索时可以按属性过滤。

1

文本预处理

undefined

2

实体识别

undefined

3

关系抽取

undefined

4

属性提取

undefined

5

存储与索引

undefined

💡

图谱构建的工程现实

构建知识图谱是 GraphRAG 最重的工程环节,几个常见做法: 

  1. LLM 主导
    :让大模型批量读文档,输出结构化三元组,人工抽检质量。
  2. 小模型补充
    :对高频模式用规则或小模型抽,降低 LLM 成本。
  3. 增量更新
    :文档新增时,只对新增部分重抽,避免全量重建。
  4. 质量门禁
    :抽取后做一致性校验(冲突检测、孤儿节点清理),保证图谱可用。

构建成本不低,但一旦图谱稳定,检索效果提升明显,适合关系密集的语料。

18.3 图结构的层次

从局部到全局的四层抽象

知识图谱不是扁平的"节点+边",而是有层次的抽象。不同查询类型对应不同层次:

  • 实体层
    :单个实体(设备 A、人员 X)。
  • 关系层
    :实体之间的直接关系(A 依赖 B)。
  • 社区层
    :通过图聚类形成的实体子群(同一工艺相关的设备群)。
  • 全局层
    :整个图的概览(主题分布、关键节点)。
图 18-3 图结构的四层抽象

四层抽象对应不同查询:

实体层与关系层:精确问答

"设备 A 的供应商是谁"是实体 + 关系的精确问题,图遍历一两跳就能回答,不需要 LLM 介入。向量检索对这类问题常常答不准,因为"供应商"这个关系在文本中可能被各种方式表达。

社区层:主题级综合

"涉及高温工艺的设备有哪些"是主题级问题,需要先识别"高温工艺"这个社区,再列出社区内的设备。社区检测算法(Leiden、Louvain)把图聚成若干主题群,每个群有摘要,综合查询时按社区检索。

全局层:跨语料综述

"整个文档库涉及哪些主要主题"是全局问题。如果用向量检索,需要把全部文档塞给 LLM,成本高且容易遗漏。GraphRAG 预先对每个社区生成摘要,全局查询时汇总社区摘要,成本可控且更结构化。

四层抽象的选择不是固定的,实际系统中常混合使用:先在全局层定位相关社区,再在社区层下钻,最后在实体/关系层取出具体节点,形成"由粗到细"的检索路径。这种分层结构让 GraphRAG 在不同粒度的问题上都能给出结构化的答案。

⚠️

图谱不是越多越好

GraphRAG 也有成本和局限: 

  1. 构建成本高
    :抽取、清洗、校验都要投入,语料小时不划算。
  2. 关系质量参差
    :LLM 抽取的关系可能错,需要人审或规则校验。
  3. 更新滞后
    :文档更新后图谱不立即同步,要设计增量更新流程。
  4. 不是所有问题都适合
    :简单事实查询用纯向量 RAG 就够,上 GraphRAG 反而重。

建议:实体关系密集的语料(企业知识、医疗、学术)用 GraphRAG;简单文档库用向量 RAG 就够。

18.4 小结

本章讲了 GraphRAG 的动机和基础:

  • 动机
    :向量检索答"在哪提到 X",图谱检索答"X 和 Y 什么关系"。GraphRAG 补足向量检索的关系盲和全局盲。
  • 构建
    :流水线是"分块 -> 实体识别 -> 关系抽取 -> 属性提取 -> 存储",LLM 驱动的自动构建是主流,但要配质量校验。
  • 结构层次
    :实体层(单点)→ 关系层(边)→ 社区层(主题群)→ 全局层(综述),不同查询类型对应不同层次。
  • 适用场景
    :实体关系密集的语料(企业知识、医疗、学术、法律),简单文档库用纯向量 RAG 即可。

下一章讲 GraphRAG 的检索与生成--图谱建好之后,怎么在图上做检索、怎么把图谱子图送给 LLM。

18.5 一句话回顾

GraphRAG 的本质是把"文档堆"变成"知识地图",让检索从文本相似度匹配升级为图模式匹配。

相关学习资料