首页
学习
活动
专区
圈层
工具
发布

GraphRAG

修改于 2026-09-21 11:13:17
10
概述

GraphRAG(Graph-based Retrieval-Augmented Generation,图增强检索生成)是由 Microsoft Research 提出的模块化图增强检索生成系统,通过将非结构化文本转化为知识图谱,并结合层级社区检测与社区摘要,增强大语言模型对私有文本语料的全局理解与多跳推理能力。与传统仅依赖向量相似度检索的 RAG 不同,GraphRAG知识图谱为结构化记忆层,能够回答需要跨文档整合、主题归纳和关系推导的复杂问题。该项目以 MIT 协议开源,采用 Python 实现,是当前图增强 RAG 方向的代表性参考方案。

一、GraphRAG 的核心工作流程是怎样的?

GraphRAG 的整体流程分为离线索引构建与在线查询检索两大阶段,形成"先建图、再检索"的完整闭环。

1. 离线索引构建阶段

  • 原始文档首先被切分为若干文本块(TextUnit),作为后续处理的基本单元
  • 大语言模型对每个文本块进行实体、关系和声明的抽取,形成结构化的图元素
  • 抽取出的实体与关系被聚合为知识图谱,并通过社区检测算法划分为层级化的社区结构
  • 系统为每个社区预生成自然语言摘要,构建出可被查询复用的"社区层级索引"

2. 在线查询检索阶段

  • 用户提出问题后,系统根据问题类型选择合适的检索模式(Global、Local、DRIFT 或 Basic)
  • 检索引擎从知识图谱与社区摘要中定位相关内容,组装为增强上下文
  • 大语言模型基于组装后的上下文生成最终回答,并可追溯到具体的实体、关系与源文本

3. 图结构带来的关键变化

  • 检索对象从"孤立的文本块"升级为"相互连接的实体与关系网络"
  • 通过社区摘要,系统具备了对整个语料库进行全局归纳的能力
  • 借助图谱路径,系统能够支撑跨多个文档片段的连续推理

二、GraphRAG 的知识图谱是如何从文本中构建的?

GraphRAG 的知识图谱由大语言模型在离线抽取阶段自动构建,无需人工标注,其核心是"文本块 → 图元素 → 图聚合"的三步转化。

1. 文本块切分

  • 源文档被分割为粒度适中的文本块,用于后续的实体与关系抽取
  • 切分粒度直接影响抽取质量:官方实验表明,在 HotPotQA 数据集上,采用 600 token 的分块所抽取的实体引用数量,接近 2400 token 分块的两倍
  • 分块越短,实体召回率越高,但需要更多的 LLM 调用,需在召回率与效率之间权衡

2. 图元素抽取

  • 大语言模型对每个文本块识别实体(名称、类型、描述)与关系(源实体、目标实体、关系描述)
  • 抽取结果以分隔元组的形式输出,实体与关系共同构成图的节点与边
  • 可通过多轮"gleanings"(补全式抽取)机制,促使模型补全首轮遗漏的实体,从而在较大分块下仍保持抽取质量

3. 图聚合与去重

  • 各文本块抽取出的实体与关系被聚合为统一的无向加权图
  • 边的权重反映实体在语料中共现的频率与强度
  • 指向同一实体的不同名称变体会被归并为规范节点,图谱对命名不一致具有一定容错能力

三、GraphRAG 中的实体、关系和声明分别指什么?

GraphRAG 的图索引由三类核心元素构成,分别对应图的节点、边和协变量。

1. 实体(Entity)

  • 实体是图中的节点,代表文本中出现的具体对象,如人物、组织、地点、技术、概念等
  • 每个实体包含名称、类型和描述信息,描述由大语言模型基于源文本抽象生成
  • 实体是知识图谱进行社区划分与检索推理的基本锚点

2. 关系(Relationship)

  • 关系是图中的边,描述两个实体之间的明确联系
  • 每条关系包含源实体、目标实体以及对二者联系的描述
  • 关系将分散在不同文档中的实体连接起来,是支撑多跳推理的结构基础

3. 声明(Claim)

  • 声明是附着在实体上的协变量(covariate),表示与实体相关的可核实断言
  • 一条声明通常包含主体、客体、类型、描述、源文本片段以及起止时间等信息
  • 声明为图谱补充了事实性细节,增强了回答的可溯源性

四、GraphRAG 的社区检测采用什么算法?

GraphRAG 采用 Leiden 算法进行社区检测,将知识图谱划分为语义内聚的社区群组。

1. Leiden 算法的作用

  • Leiden 算法是一种基于模块度优化的图聚类方法,用于将连接紧密的节点划分为同一社区
  • 相比早期常用的 Louvain 算法,Leiden 算法能够保证划分出的社区内部连通性更好,避免出现断裂的子社区
  • 该算法由 Traag 等人在 2019 年提出,是 GraphRAG 层级社区结构的技术基础

2. 社区检测在流程中的位置

  • 社区检测发生在知识图谱构建完成之后、社区摘要生成之前
  • 算法将庞大的实体网络切分为大小不一的社区,为后续并行生成摘要提供分组依据
  • 借助社区的模块性,系统可以在索引阶段和查询阶段并行处理各社区,提升整体效率

五、GraphRAG 的社区层级是如何划分的?

GraphRAG 通过 Leiden 算法生成多层级的社区结构,形成从宏观到微观的层级索引。

1. 多层级社区结构

  • 社区被组织为层级结构,顶层是覆盖范围广的宏观社区,底层是粒度更细的微观社区
  • 高层社区用于把握整体主题,低层社区用于聚焦具体实体群组
  • 这种层级划分使系统能够在不同抽象粒度上回答不同类型的问题

2. 社区摘要的生成

  • 系统为每个层级的每个社区预生成一份社区摘要(Community Report)
  • 摘要通常包含标题、内容概述、关键洞察、重要性评级以及指向源文本的引用
  • 高层社区的摘要会用子社区摘要替换冗余细节,从而在有限上下文内承载更大范围的信息

3. 层级索引的价值

  • 层级化的社区摘要构成了可复用的结构化索引,查询时无需重新扫描全部原始文本
  • 面对全局性问题时,系统可直接调用高层社区摘要进行归纳,显著提升查询效率
  • 层级结构是 GraphRAG 能够"俯瞰全局"的核心机制

六、GraphRAG 的索引构建需要哪些步骤?

GraphRAG 的索引构建是一个多阶段的离线流水线,可通过命令行工具或模块化 Python 工作流执行。

1. 文本切分

  • 将原始文档切分为文本块(TextUnit),通常控制在数百到一千余 token 的粒度
  • 切分时会设置适当重叠,以保证跨边界的实体与关系不被遗漏

2. 实体与关系抽取

  • 大语言模型逐文本块识别实体、关系与声明,输出结构化图元素
  • 可通过领域特定的少样本示例提升专业领域的抽取精度

3. 图构建与聚合

  • 将抽取出的实体与关系聚合为统一的加权知识图谱,完成实体去重与规范归并

4. 社区检测与摘要生成

  • 使用 Leiden 算法对图谱进行层级化社区划分
  • 为每个社区生成自然语言摘要,形成最终的可查询索引

5. 索引产物存储

  • 实体、关系、文本块、社区报告等结果以可检查的表格形式存储
  • 文本与实体的向量嵌入被索引到向量数据库中,供相似度检索使用

七、GraphRAG 的 Global Search 是如何工作的?

Global Search 是 GraphRAG 面向全局性问题的检索模式,采用 map-reduce 机制在整个语料库范围内进行归纳推理。

1. 适用问题类型

  • Global Search 用于回答跨越整个数据集的宏观、主题性问题,例如"这批报告的主要趋势是什么"
  • 这类问题无法通过检索单个文本块得到答案,因为答案分散在大量文档之中

2. map-reduce 工作机制

  • 在 map 阶段,系统让每个相关社区摘要独立并行地生成部分回答
  • 每个部分回答会依据与问题的相关度获得帮助性评分,低分回答被过滤
  • 在 reduce 阶段,系统将过滤后的高分部分回答汇总,生成最终的全局回答

3. 相较向量检索的优势

  • 传统向量检索只能召回孤立的相似文本块,难以整合跨文档信息
  • Global Search 借助社区摘要,天然具备对整个语料库进行综合归纳的能力
  • 这是 GraphRAG 区别于纯向量 RAG 的标志性能力之一

八、GraphRAG 在多跳推理任务上表现如何?

GraphRAG 借助知识图谱的路径结构,在多跳推理任务上明显优于纯向量检索方案。

1. 多跳推理的含义

  • 多跳推理指回答一个问题需要串联多个分散的信息片段,像接力一样逐跳推导
  • 例如"发明了 Transformer 架构的核心成员后来创办了哪家公司",需要依次定位作者、其任职经历与创业信息

2. 图谱对多跳推理的支撑

  • 知识图谱显式记录了实体之间的关系,中间节点之间的逻辑联系不会因分块而被割裂
  • 系统可沿图谱路径遍历,将跨文档的关联线索串联为完整推理链
  • 相比仅凭向量相似度召回,图谱路径能够更可靠地补齐推理所需的中间环节

3. 表现结论

  • 官方研究指出,在多跳与综合推理类基准上,GraphRAG 相比朴素 RAG 取得了更优结果
  • 其 DRIFT 等检索模式进一步融合了局部实体邻域与社区上下文,增强了混合问题的推理表现

九、GraphRAG 如何实现增量索引更新?

GraphRAG 的索引以批处理方式构建,针对数据变更提供了增量更新能力,但整体更新成本相对较高。

1. 批处理索引的特性

  • GraphRAG 的索引构建是离线批处理过程,而非流式实时更新
  • 索引阶段需要对每个文本块调用大语言模型进行抽取,属于一次性的高成本操作

2. 增量更新机制

  • 当源数据发生局部变化时,可通过增量更新流水线仅处理变更部分,避免全量重建
  • 增量更新需要维护图谱节点、关系与社区结构的一致性,操作相对复杂

3. 实践注意事项

  • 对于频繁变化的数据,增量更新与重新索引的开销需要纳入评估
  • 官方建议先在小规模数据上测算单文档成本,再扩展到生产规模
  • 若数据高度动态且要求实时更新,需审慎评估 GraphRAG 的适配性

十、GraphRAG 的提示词调优为什么重要?

提示词调优直接影响知识图谱的抽取质量,是 GraphRAG 落地中不可忽视的关键环节。

1. 抽取质量依赖提示词

  • 实体、关系与声明的抽取完全由大语言模型基于提示词完成,提示词质量决定图谱质量
  • 默认提示词面向通用的命名实体(人物、地点、组织),适用于广泛场景
  • 对于科学、医学、法律等专业领域,通用提示词可能遗漏领域特定的实体类型

2. 领域自适应的方式

  • 主要通过提供领域特定的少样本示例进行上下文学习,提升专业领域的抽取精度
  • GraphRAG 支持自动提示词调优与手动调优两种方式,官方文档建议针对自有数据进行迭代优化

3. 开箱即用的局限

  • 官方明确提示,未经调优的抽取结果可能未达预期,推荐通过迭代配置获得理想效果
  • 提示词调优需要结合实体抽取、社区层级与检索模式等因素综合实验

十一、GraphRAG 的索引成本主要由哪些因素决定?

GraphRAG 的索引成本主要来自大语言模型调用,是部署前需要重点规划的部分。

1. LLM 调用是主要成本

  • 索引阶段需对每个文本块调用大语言模型进行实体与关系抽取,还会进行多轮补全抽取
  • 社区摘要生成同样需要大量 LLM 调用,语料规模越大,调用次数越多
  • 因此索引成本与文本块数量、抽取轮数、所用模型的计费标准直接相关

2. 影响成本的关键因素

  • 分块粒度:分块越短,实体召回率越高,但 LLM 调用次数也相应增加
  • 抽取轮数:多轮 gleanings 会提升质量,同时推高调用量
  • 社区层级数量:层级越多,摘要生成的调用量越大

3. 成本控制建议

  • 官方建议先用低成本模型在教程数据集上试跑,评估成本后再投入大规模索引
  • 可通过调整分块策略、抽取轮数与社区层级控制调用规模
  • 后续发布的 LazyGraphRAG 模式大幅降低了索引开销,为成本敏感场景提供了选择

十二、GraphRAG 在企业知识管理中有哪些价值?

GraphRAG 适用于文档密集、关系复杂的知识管理场景,其价值集中在全局理解与关系推理。

1. 支撑全局性问题解答

  • 面对"这批文档的核心主题是什么"一类问题,GraphRAG 能够基于社区摘要进行整体归纳
  • 这类能力是传统向量 RAG 难以覆盖的,因为答案并不集中在单一文本块中

2. 挖掘跨文档关系

  • 知识图谱将分散在大量文档中的实体与关系连接起来,便于发现隐含关联
  • 在合规审查、研究综述、情报分析等需要跨文档推理的场景中价值突出

3. 提升回答可解释性

  • 每个回答都可追溯到具体的实体、关系与源文本片段,具备清晰的证据来源
  • 可溯源性对法律、金融等强监管行业的知识应用尤为重要

十三、GraphRAG 部署需要哪些技术前提?

部署 GraphRAG 需要具备一定的工程与大语言模型使用基础,并提前做好成本与环境准备。

1. 运行环境

  • GraphRAG 是开源的 Python 框架,需通过命令行工具驱动,依赖 Python 运行环境
  • 需配置大语言模型 API 密钥及相关参数,用于索引抽取与查询生成

2. 大语言模型接入

  • 框架支持多种大语言模型后端,可基于配置切换不同的模型服务
  • 需确认所选模型服务的数据处理与合规策略符合自身要求

3. 成本与数据准备

  • 索引是 token 消耗较高的批处理过程,需提前预算 LLM 调用成本
  • 官方建议在正式索引前先用小规模数据验证流程与成本
  • 索引产物与向量嵌入需要相应的存储与向量检索组件支撑,可结合腾讯云向量数据库等组件构建检索层,知识图谱的存储与查询则可借助图数据库承载

十四、GraphRAG 与传统向量 RAG 相比解决了哪些问题?

传统向量 RAG 擅长事实型局部检索,但在需要全局归纳与关系推理的场景中存在明显短板,GraphRAG 正是针对这些短板提出。

1. 全局归纳能力

  • 传统向量 RAG 通过切块、向量化并召回相似片段工作,只能返回孤立的文本片段
  • 面对"整个数据集的主要趋势"这类需要跨全文整合的问题时,向量 RAG 容易答案碎片化
  • GraphRAG 借助社区摘要进行 map-reduce 归纳,能够回答覆盖整个语料库的全局问题

2. 多跳推理能力

  • 向量检索依赖表面相似度,中间推理节点若未出现在问题中,常被相似度过滤掉
  • GraphRAG 通过图谱路径遍历,将跨文档的关联信息串联,支撑连续的多跳推导

3. 结构化知识表示

  • 传统 RAG 将文本"摊平"为独立片段,丢失了实体之间的关系结构
  • GraphRAG 将非结构化文本转化为知识图谱,保留了实体、关系与声明的结构化信息
  • 代价是索引构建更复杂、LLM 调用成本更高,更适合高价值、相对稳定的语料库

十五、GraphRAG 与 HippoRAG 有什么差异?

GraphRAG 与 HippoRAG 都属于图增强 RAG 方案,但二者的核心机制与侧重场景有所不同。

1. 核心机制差异

  • GraphRAG 以社区检测与层级社区摘要为核心,通过 map-reduce 支撑全局归纳
  • HippoRAG 受脑科学启发,借鉴海马体记忆机制,利用类似 PageRank 的算法在图谱上进行联想式检索

2. 索引与成本差异

  • GraphRAG 的完整索引包含实体抽取与多层级社区摘要生成,索引成本相对较高
  • HippoRAG 的索引流程相对轻量,在长期记忆与关联检索场景中延迟更低

3. 适用场景差异

  • GraphRAG 更适合需要全局主题理解、跨文档综合归纳的场景
  • HippoRAG 在多跳关联推理与长期记忆类任务上表现突出

十六、GraphRAG 与 LightRAG 有什么差异?

LightRAG 是针对 GraphRAG 高索引成本问题提出的轻量化替代方案,二者在成本与能力上各有取舍。

1. 设计目标差异

  • GraphRAG 追求对语料库的全局深度理解,采用完整的社区层级摘要机制
  • LightRAG 由香港大学数据智能实验室(HKUDS)团队提出,主打轻量化与高鲁棒性,着力降低索引与调用开销

2. 检索机制差异

  • GraphRAG 依赖 Leiden 社区检测与社区摘要的 map-reduce 归纳
  • LightRAG 采用双层检索(低级别实体检索与高级别主题检索)并结合去重融合机制

3. 成本与适用场景差异

  • LightRAG 的索引与查询成本更低,更适合资源受限或数据更新较频繁的场景
  • GraphRAG 在需要宏观主题归纳、对全局理解要求较高的场景中更具优势
  • 二者并非替代关系,实践中可根据对成本与全局理解能力的权衡进行选择
相关文章
  • 解读GraphRAG
    4.4K
  • 从GraphRAG最新论文综述探究如何改进微软 GraphRAG
    2.8K
  • GraphRAG+neo4j实战
    1.3K
  • GraphRAG如何配置处理csv文件
    1.1K
  • 深入 GraphRAG 源码:文件摄入解析
    882
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券