GraphRAG 是什么:知识图谱增强 RAG 入门
GraphRAG 是结合 RAG 与知识图谱的检索增强生成方法。它用图结构组织实体关系和问答上下文,适合理解 GraphRAG 与 RAG 的区别、复杂数据问答和主题发现。

什么是 GraphRAG?
GraphRAG 是一种将 RAG 与知识图谱结合的检索增强生成方法,可以理解为“使用图结构组织知识和关系的 RAG”。它不是一个单独的基础模型,也不只是普通的向量相似性检索,而是把 LLM、外部知识与图关系结合起来,为问答生成更有针对性的上下文。
GraphRAG 通常被介绍为由微软研究院开发。它的核心思路是:面对复杂信息或大型数据集时,先把文本中的知识组织成图,再围绕用户问题从图中形成上下文,最后交给 LLM 生成回答。
一个简单类比是:普通 RAG 更像在资料库里寻找相似段落,GraphRAG 更像在一张关系地图上查找相关节点、路径和主题区域。前者关注“哪些文本片段相似”,后者更强调“信息之间如何连接”。
要点: GraphRAG 的关键不在于替换 LLM,而在于改进 LLM 获取和组织上下文的方式。它更适合信息关系复杂、跨文档线索较多的问答任务。
从 RAG 到 GraphRAG 的演进逻辑
RAG,即检索增强生成,通常会先从外部知识源、内部知识库或向量数据库中检索相关信息,再把检索到的内容与 LLM 结合,用于生成具备上下文感知能力的回答。
传统 RAG 的常见流程可以概括为三步:
- 用户提出问题。
- 系统通过相似性搜索找到相关文本片段或知识内容。
- LLM 基于检索结果生成回答。
这种方式适合很多知识问答场景。但当问题依赖多个实体、关系、层级或跨文档线索时,仅靠相似文本片段,可能难以组织出足够完整的上下文。
GraphRAG 的改进方向,是在 RAG 中加入图或知识图谱。它不只判断哪些文本片段和问题相似,也关注资料中的实体、关系和结构,从而帮助系统形成更有针对性的问答上下文。
GraphRAG 的核心原理
GraphRAG 的核心原理可以概括为:从原始文本中提取知识图谱,再利用图结构围绕问题组织上下文,最后由 LLM 基于这些上下文生成回答。
由于公开资料不足以支撑具体算法参数、索引细节或 API 调用方式,这里只介绍通用工作思路。
输入原始文本
GraphRAG 首先需要处理一批文本资料,例如文档、知识库内容、报告或其他非结构化文本。与普通 RAG 一样,这些文本提供了回答问题所需的外部知识。
构建知识图谱
接下来,系统会从原始文本中提取知识,形成知识图谱。知识图谱通常用于表达实体、概念以及它们之间的关系,因此比单独的文本片段更容易承载结构化信息。
在这个阶段,GraphRAG 关注的不只是某段文字本身,还包括文字中提到的对象、对象之间的关系,以及这些关系在整体资料中的位置。
基于图形成问答上下文
当用户提出问题后,GraphRAG 会利用图结构来帮助判断哪些知识、关系或主题区域与问题相关。与只返回若干相似文本片段相比,图结构可以帮助系统围绕问题组织更有针对性的上下文。
这些上下文可能来自多个节点、关系或相关文本区域,因此更适合处理跨文档、多关系、多主题的问题。
交给 LLM 生成回答
最后,LLM 会基于 GraphRAG 组织出的上下文生成自然语言回答。LLM 仍然负责语言理解和生成,图结构主要帮助它获得更合适的背景信息。
| 环节 | 作用 | 关注重点 |
|---|---|---|
| 输入文本 | 提供外部知识来源 | 文档、知识库、报告等原始资料 |
| 知识图谱构建 | 把文本知识结构化 | 实体、概念、关系和层级 |
| 图上上下文组织 | 为问题形成目标上下文 | 相关节点、关系、主题线索 |
| LLM 生成 | 输出自然语言回答 | 基于上下文进行回答生成 |
GraphRAG 与传统 RAG 有什么区别?
GraphRAG 与传统 RAG 不是简单的替代关系。更准确地说,GraphRAG 是 RAG 在复杂关系和大规模信息场景下的一种扩展思路。
传统 RAG 更常见的是基于相似性搜索检索文本片段,然后把这些片段提供给 LLM。GraphRAG 则更强调图和知识图谱中的关系信息,用结构化方式组织上下文。
| 对比维度 | 传统 RAG | GraphRAG |
|---|---|---|
| 检索对象 | 常见为文本片段、向量数据库中的相似内容、外部知识源或内部知识库 | 图或知识图谱中的知识、关系及相关上下文 |
| 上下文组织方式 | 主要依赖检索出的相关文本片段 | 利用图结构围绕问题组织更有针对性的上下文 |
| 信息结构化程度 | 通常以文本片段为主,结构化程度相对有限 | 更强调实体、关系、层级等结构化信息 |
| 适合问题 | 简单事实查询、知识库问答、文本匹配类问题 | 复杂数据问答、跨文档关系理解、主题发现 |
| 与 LLM 的关系 | 把检索结果交给 LLM 生成回答 | 把基于图组织出的上下文交给 LLM 生成回答 |
需要注意的是,GraphRAG 并不意味着普通 RAG 失效。对于许多简单问答任务,传统 RAG 已经足够直接;只有当问题需要理解复杂关系或跨文档结构时,GraphRAG 的价值才更容易体现。
GraphRAG 适合解决哪些问题?
GraphRAG 适合用于复杂信息和大型数据集上的问答,也可用于主题发现。它的价值主要来自图结构对关系和上下文的组织能力,而不是来自某个固定的性能承诺。
| 用户需求 | 解决方式 | 可能带来的效果 |
|---|---|---|
| 在大量资料中回答复杂问题 | 利用知识图谱组织相关实体、关系和上下文 | 帮助 LLM 获得更有针对性的背景信息 |
| 理解跨文档关系 | 将分散文本中的相关知识连接到图结构中 | 更容易发现不同资料之间的关联线索 |
| 进行主题发现 | 从大型数据集中识别主题、关系和上下文线索 | 帮助用户理解资料中的主要主题结构 |
| 处理多实体、多关系问题 | 围绕问题在图中定位相关知识区域 | 有助于缓解只依赖相似文本片段时的上下文不足 |
例如,当用户的问题不是询问某个孤立事实,而是需要理解多个概念之间的关系、某个主题在多份文档中的展开方式,或大量资料中的主要主题线索时,GraphRAG 通常比单纯的文本片段检索更贴近任务需求。
使用 GraphRAG 前如何判断是否合适?
在引入 GraphRAG 前,首先要判断问题是否真的需要图结构。如果任务只是简单事实查询、短文本匹配或少量文档问答,普通 RAG 可能已经足够。
GraphRAG 更适合以下数据和问题特征:
- 数据中存在明显的实体、关系、层级或跨文档关联。
- 用户问题经常需要综合多个来源的信息。
- 回答质量依赖对关系和上下文结构的理解。
- 需要从大量资料中进行主题发现或关系梳理。
- 团队能够接受知识图谱构建和维护带来的额外复杂度。
可以用下面的检查清单做初步判断:
| 判断问题 | 如果答案是“是” | 如果答案是“否” |
|---|---|---|
| 数据中是否有清晰的实体和关系? | 可以考虑 GraphRAG | 普通 RAG 可能更合适 |
| 问题是否依赖跨文档关联? | GraphRAG 可能更有价值 | 文本片段检索可能已足够 |
| 是否需要主题发现? | GraphRAG 的图结构可能有帮助 | 不一定需要构建图 |
| 是否能承担知识图谱构建成本? | 可进一步评估方案 | 应谨慎引入 GraphRAG |
| 是否有明确的复杂问答需求? | 适合继续验证 | 不建议只为技术新颖性引入 |
要点: GraphRAG 的价值来自结构化关系和目标上下文。如果数据关系并不复杂,或者问题不依赖关系理解,优先选择更简单的 RAG 方案通常更稳妥。