跳到主要内容

K7.1 GraphRAG:回答「拼不出来」的问题

一个普通 RAG 答不出的问题​

到现在为止,我们的 RAG 都在做同一件事:拿问题去找和它最像的那几段资料(K1)。这对「答案就写在某一段里」的问题很好用。可有些问题偏偏不是这样:

「张伟的经理的助理是谁?」

翻遍知识库,没有任何一段直接写着这个答案。它藏在三段资料的关系链里:张伟属于技术部、技术部的经理是李娜、李娜的助理是王芳。你得把这三段串起来才能推出「王芳」。这叫多跳推理——A→B、B→C,所以 A→C。

而单段相似检索,恰恰跨不过这个坎。亲眼看一遍:

🎮 动手实验
GraphRAG:顺着关系跳,回答「拼不出来」的问题
问题「张伟的经理的助理是谁」的答案,没有任何一段资料直接写着——它藏在三段资料的关系链里。看普通 RAG 怎么卡壳,GraphRAG 怎么一跳跳走出来。(内容为教学构造)
🧑‍💻 张伟的经理的助理是谁?
📄 知识库里的 5 段资料:
🔗 张伟属于技术部。🔗 技术部的经理是李娜。🔗 李娜的助理是王芳。销售部的经理是赵强。王芳负责会议室预订。(🔗 = 答案链条上的三段)
按「和问题的相似度」检索 Top 3:
1
张伟属于技术部。 🔗
72%
2
销售部的经理是赵强。
45%
3
王芳负责会议室预订。
40%
😵 卡壳了:问题里没提「技术部」「李娜」,所以「技术部的经理是李娜」「李娜的助理是王芳」这两段中间跳相似度太低、没被检索到。普通 RAG 只捞回了链条的头(张伟属于技术部)和一些无关段,拿着残缺的资料,模型要么答「资料不足」,要么瞎猜。单段相似检索,跨不过多跳的坎。
💡 要点:普通 RAG 按「和问题像不像」检索单段资料——可有些问题的答案要串起好几段才能推出来(张伟→技术部→李娜→王芳)。问题里压根没提「技术部」「李娜」,中间那两跳相似度很低、根本捞不回来,于是普通 RAG 卡在半路。GraphRAG 换了个存法:先把资料抽成「实体+关系」的图谱,检索时顺着关系一跳跳走,多跳问题就迎刃而解。代价是要先花力气把图谱建出来——它不是取代普通 RAG,而是专治「关系型、多跳」的硬骨头。

为什么普通 RAG 会卡壳​

玩过实验你会发现:普通 RAG 模式下,检索按「和问题的相似度」排序,可问题「张伟的经理的助理是谁」里压根没提「技术部」「李娜」——于是中间那两跳「技术部的经理是李娜」「李娜的助理是王芳」相似度太低、根本捞不回来。它只拿到了链条的头(张伟属于技术部),然后就卡住了。

根子在于:相似检索找的是「和问题像的段」,可多跳问题的中间环节,字面上和问题一点都不像。这是朴素 RAG 的结构性软肋。

GraphRAG 的思路:先连成图,再顺着走​

GraphRAG 换了个存法。它不满足于把资料切成一段段孤立的块,而是先从文档里把实体和关系抽出来,连成一张知识图谱:

张伟 —属于→ 技术部 —经理→ 李娜 —助理→ 王芳

检索时,它不只找相似段,还能顺着关系边一跳跳走。切到实验的 GraphRAG 模式,点「顺着关系走一遍」——它从「张伟」出发,沿「属于→经理→助理」三跳到位,稳稳走到「王芳」。多跳问题,迎刃而解。微软在 2024 年把这套思路做成了开源方案 GraphRAG,带火了这个方向。

但它有代价。 建图谱要先花一大笔力气:用大模型从每篇文档里抽实体、抽关系、去重、连边——又慢又贵。所以 GraphRAG 不是来取代普通 RAG 的,而是专治「关系密集、多跳」的硬骨头:梳理整个组织架构、跨多份文档追一条因果链、回答「把这批文档整体串起来看,讲了什么」这类全局问题。

别为了炫技上 GraphRAG

两个提醒。其一:图谱质量取决于抽取质量——要是大模型把关系抽错了(把「李娜的助理是王芳」抽成「王芳的助理是李娜」),顺着走只会走进沟里,这是垃圾进垃圾出的新版本。其二:现实中很多日常问答是单跳的(「退货政策是什么」),普通 RAG 又快又好,硬上 GraphRAG 纯属杀鸡用牛刀。2024-2026 年 RAG vs GraphRAG 的评测结论也是这样:各有胜场,看问题类型——多跳、全局、关系型问题 GraphRAG 强,简单事实问答普通 RAG 更划算。

小结​

本节要点
  • 多跳问题:答案没写在任何单段里,得串起好几段才能推出来(张伟→技术部→李娜→王芳)。
  • 普通 RAG 卡壳,是因为中间环节字面上和问题不像、相似检索捞不回来。
  • GraphRAG 先把资料抽成「实体+关系」图谱,检索时顺着关系边遍历,多跳迎刃而解(微软 2024 开源)。
  • 代价是建图又慢又贵;它专治关系密集、多跳、全局型问题,别拿它做简单事实问答。
📝 动手自测0/3
1. 「张伟的经理的助理是谁」这个问题,为什么普通 RAG 容易答不出来?
2. GraphRAG 相比普通 RAG,核心的不同做法是什么?
3. 关于什么时候该用 GraphRAG,哪个说法最准确?

延伸阅读​