首页 > 教程攻略 > ai资讯 >微软开源的GraphRAG解读

微软开源的GraphRAG解读

来源:互联网 时间:2026-08-15 21:03:14

微软在7月2日开源了GraphRAG,消息一出,技术圈立刻热闹起来。简单来说,这是一种基于图的检索增强生成方法,专门用来对私有或未曾见过的数据集进行问答。它的核心思路是:用大语言模型从数据中提取知识图谱,再把这个图谱聚类成不同粒度的实体社区,最后遍历所有社区生成“社区答案”,汇总成最终输出。整个过程,就像给大模型装上了一张结构化的“知识地图”——不仅知道零散的信息点,还清楚点与点之间的连线关系。

微软开源的GraphRAG解读

仔细拆解的话,GraphRAG的核心其实就两个图:一个是

文档图谱

,另一个是文档内部的

实体关系图谱

。每个部件都有明确的定义:

  • 文档

    :系统输入的原始文件,比如CSV中的一行或一个txt文件。
  • 文本单元

    :待分析的文本块,块的大小、重叠方式以及是否遵守数据边界都可以配置。
  • 实体

    :从文本单元中提取出来的人、地点、事件等具体对象。
  • 关系

    :两个实体之间的联系。
  • 协变量

    :带有时间限制的声明信息,比如某实体在特定时间段内的属性陈述。
  • 社区报告

    :层次化社区检测后,为每个社区生成的总结报告。
  • 节点

    :渲染图视图的布局信息,包含已嵌入和聚类的实体与文档。

1 索引构建过程

文本文档要转换成GraphRAG的知识模型,需要经过几个关键阶段:

1. 文本单元切分

:输入文档先被切成文本单元,这些单元是后续图提取和源引用的基础。

2. 图谱抽取

:对每个文本单元进行实体、关系和声明的提取。这一步包含多个子步骤——实体与关系抽取、实体与关系总结、实体消歧、声明抽取。其中,实体与关系总结很有意思:它让LLM把提取出的列表浓缩成一段简洁的描述,确保每个实体和关系都有唯一、清晰的说明。

3. 图谱增强

:有了实体关系图之后,还需要理解它的社区结构,并用额外信息进行增强。这里分两步走:

社区检测

图嵌入

。社区检测采用层次化的Leiden算法,递归聚类直到达到设定的社区大小阈值,这样就能在不同粒度级别上导航和总结图谱。图嵌入则用Node2Vec算法生成向量表示,为后续查询提供额外的搜索空间。

  • 注意:社区检测这一步,提供的是显式的拓扑结构理解;而图嵌入则是隐式的表示,两者互为补充。

4. 社区摘要

:在社区数据基础上,为每个社区生成报告,提供对图的高层次理解。比如顶层社区对应整个图的概述,底层社区则描述本地集群。具体流程是:先让LLM为每个社区生成摘要(包含执行概览,并引用关键实体、关系和声明);然后再对这些报告进行简写总结;最后生成社区报告、摘要和标题的文本嵌入,作为向量表示。

5. 文档处理

:这一步构建文档图。首先将每个文档与对应的文本单元关联起来;然后做文档嵌入——重新分块文档(不重叠),为每个块生成嵌入,再用token计数加权平均得到整个文档的向量表示。基于这种表示,可以推断文档之间的隐含关系,进而生成文档的网络结构。

2 两个应用场景

1. 全局搜索

:当你想问“数据中有哪些主要主题”这类需要跨整个数据集聚合信息的问题时,全局搜索登场。传统RAG依赖向量搜索找语义相似的文本片段,但如果没有明确的查询指引,很难从分散的片段中拼出全局图景。而GraphRAG的知识图谱天然揭示了数据集的整体结构和主题分布——因为LLM生成的图谱已经把私有数据集组织成了有意义的语义集群,并且这些集群是预先总结过的。

具体实现采用map-reduce方式:把社区报告分割成预定义大小的文本块,每个块生成带评分的中间响应(点列表);然后在reduce步骤中筛选出最重要的点,聚合后作为生成最终响应的上下文。

2. 局部搜索

:针对特定实体的推理,比如问“张三在项目中的具体贡献是什么”。局部搜索会先识别与用户输入语义相关的实体集合,把这些实体作为入口,提取邻居实体、关系、协变量和社区报告;同时从原始文档中提取关联的文本块。然后对这些候选数据源进行优先级排序和过滤,适配到单一上下文窗口的大小,最终生成回答。

说白了,局部搜索就是结合知识图谱的结构化数据和原始文档的非结构化数据,让LLM在查询时拥有更充分的上下文。

3 结语

GraphRAG的核心逻辑很清晰:围绕全局搜索和局部搜索两个场景做针对性优化。不过需要警惕的是,它串联了实体识别、实体关系抽取、社区聚类等一系列算法,误差会逐层传播。想真正落地,可能要花费相当大的精力去调优,而且不一定每次都能奏效。但话说回来,它提出的“文档内部+文档外部”双图谱思路,以及基于图谱的嵌入补充方法,确实值得借鉴——至少给RAG的演进提供了一个很有价值的方向。

论文题目:From Local to Global: A Graph RAG Approach to Query-Focused Summarization
论文链接:https://arxiv.org/pdf/2404.16130
项目链接:https://github.com/microsoft/graphrag