11. GraphRAG 和多跳检索适合什么场景?

整理 GraphRAG 和多跳检索适合什么场景? 的核心概念、工程要点与面试回答。

简单回答

GraphRAG 是用知识图谱(Knowledge Graph)增强 RAG 的检索能力,适合需要跨文档推理、涉及实体关系、以及需要多跳推理的场景。比如"A 公司的 CEO 的母校有哪些知名校友"——这需要先找到 CEO 是谁、他的母校是哪、再找该校的知名校友,普通向量检索很难一次性召回所有相关信息。多跳检索(Multi-hop Retrieval)则是在检索过程中进行多轮迭代检索,每一轮基于上一轮的结果进一步深入。

详细解释

为什么普通 RAG 不够

传统 RAG 的检索方式本质上是"一跳"的——用户问一个问题,检索一次,拿到结果,生成答案。这对于简单的事实性问题足够了("产品 A 的价格是多少"),但对于需要关联多个信息源、做推理串联的问题就力不从心了。

典型的困难场景:用户问"我们和竞品 B 相比,哪些功能指标更好"——答案散落在"我们的产品文档"和"竞品分析报告"两类完全不同的文档中,一次检索很难同时召回两边的相关内容。又比如"去年 Q4 和今年 Q1 的销售额对比"——需要跨时间维度关联数据。

GraphRAG 的核心思路

GraphRAG 的做法是在传统的向量索引之外,额外构建一个知识图谱。知识图谱以实体(Entity)为节点、以关系(Relation)为边,存储结构化的知识。比如:

(张三, 任职于, A公司)
(A公司, 产品, 产品X)
(产品X, 竞品, 产品Y)
(产品Y, 所属, B公司)

检索时,除了做向量检索外,还可以在图上做图遍历——从用户 query 中识别出关键实体,在图谱中找到相关的实体和关系,然后把图谱信息和向量检索结果一起作为上下文给模型。

微软 2024 年发布的 GraphRAG 方案比较有代表性。它的做法是用 LLM 从原始文档中抽取实体和关系构建图谱,然后对图谱做社区检测(community detection),把密切关联的实体聚类成社区,为每个社区生成摘要。检索时不仅匹配单个文档片段,还能拿到社区级别的摘要——这种"全局视图"的能力是普通 RAG 做不到的。

多跳检索

多跳检索的思路是在检索过程中做多轮迭代。第一轮检索拿到初步结果后,分析结果中还缺什么信息,生成新的检索 query,再做第二轮检索。这个过程可以重复多次。

比如用户问"DeepSeek-V3 的 MoE 专家数量和 Mixtral 比怎么样"。第一跳可以检索 DeepSeek-V3 的 MoE 配置,拿到结果后发现还需要 Mixtral 的数据,第二跳再去检索 Mixtral 的 MoE 配置,最后把两次的结果合并给模型做对比生成。

多跳检索的实现通常和 Agent 结合——让 LLM 在每一跳之后判断"信息是否充分",如果不充分就自动生成下一跳的 query。这其实已经接近 Agentic RAG 的范畴了。

适用场景和局限

GraphRAG 适合以下场景:知识库中实体关系复杂、用户问题经常涉及跨文档推理、需要"全局性"的总结或分析(比如"公司所有产品的共同技术特点是什么")。在企业知识管理、金融研报分析、学术文献综述等领域有明显价值。

但 GraphRAG 的代价不小。知识图谱的构建成本很高——从非结构化文档中抽取实体和关系,要么靠人工标注,要么靠 LLM 批量抽取(微软的方案就是用 GPT-4 抽取的,成本不低)。图谱的维护和更新也是问题——文档更新了,图谱需要同步更新,关系可能变化。另外,图谱的质量直接影响效果,如果抽取的实体和关系噪声很大,图谱反而会引入误导。

多跳检索的代价主要是延迟——每多一跳就多一次检索和一次 LLM 调用,端到端延迟会成倍增加。如果跳数不受控(LLM 一直觉得信息不充分),可能会陷入无效循环。

对于大多数 RAG 场景,做好向量检索 + BM25 混合检索 + Rerank 已经能覆盖 80% 以上的需求。GraphRAG 和多跳检索是在这个基础上的进阶方案,不要在基础还没打好的时候就急着上复杂架构。

面试时可以这样答

GraphRAG 和多跳检索主要解决的是普通 RAG 在跨文档推理和复杂关联查询上的短板。

传统 RAG 是"一跳"检索,用户问一个问题检索一次拿结果。但很多实际问题需要关联多个来源的信息——比如跨文档对比、涉及多个实体关系的推理。这种场景下,一次向量检索很难召回所有需要的信息。

GraphRAG 的做法是额外构建知识图谱,用实体和关系把分散在不同文档中的知识关联起来。检索时可以在图上遍历,拿到单纯向量检索拿不到的关联信息。微软的方案还做了社区聚类和摘要,能提供全局性的视角。

多跳检索则是在检索过程中做多轮迭代,每一轮基于上一轮的结果判断信息是否充分,不充分就继续检索。这通常和 Agent 结合。

但这两种方案都有成本。GraphRAG 的图谱构建和维护成本很高,多跳检索的延迟会成倍增加。对大多数场景来说,先把基础 RAG 做好——向量检索加 BM25、Rerank——比直接上 GraphRAG 更优先。

常见追问

  1. 知识图谱从非结构化文档中怎么自动构建?准确率能到多少?
  2. GraphRAG 和传统知识图谱问答(KBQA)有什么区别?
  3. 多跳检索的跳数怎么控制?怎么避免无效循环?