GraphRAG (Graph Retrieval-Augmented Generation)。这是由微软研究院(Microsoft Research)近期推出的一个非常火热的概念和开源项目。github:github.com/microsoft/g…
简单来说,GraphRAG 是将“知识图谱(Knowledge Graph)”与“检索增强生成(RAG)”相结合的一种技术,旨在解决传统 RAG 在处理大规模文本和复杂逻辑时的局限性。
以下是对 GraphRAG 的详细介绍,包括它是什么、解决什么问题以及它是如何工作的:
1. 为什么要发明 GraphRAG?(背景与痛点)
在 GraphRAG 出现之前,我们主要使用 基准 RAG (Baseline RAG) 。
-
传统 RAG 的做法:把长文档切成很多小块(Chunks),存入向量数据库。当你提问时,系统通过关键词或语义相似度找到最相关的几个小块,然后扔给 AI 回答。
-
传统 RAG 的弱点:
- 缺乏全局观:如果你问“这篇文章的主旨是什么?”或者“总结全书的某种趋势”,传统 RAG 只能找到几个零散的片段,无法概括整体。
- 难以连接远距离信息:如果线索 A 在第 1 页,线索 B 在第 100 页,传统 RAG 很难把这两者关联起来推理。
GraphRAG 就是为了解决这些“这就好比盲人摸象,只能看到局部,看不到整体”的问题。
2. GraphRAG 是什么?
GraphRAG 通过大语言模型(LLM)从源文本中自动提取实体(Entities) 、关系(Relationships) 和关键声明(Claims) ,构建一个结构化的知识图谱,然后利用图谱的结构来增强检索和生成的效果。
3. GraphRAG 是如何工作的?(核心流程)
GraphRAG 的工作流程通常分为两个阶段:索引(Indexing) 和 查询(Query) 。
阶段一:构建索引(Indexing)
这是最关键的一步,比传统 RAG 复杂得多:
- 文本切片:先把文档切块。
- 提取元素:利用 LLM 阅读每一个切块,识别出人名、地名、组织、概念等(实体),以及它们之间是如何关联的(关系)。
- 构建图谱:将这些实体和关系连接成一个巨大的网状图。
- 社区检测(Community Detection) :这是微软 GraphRAG 的核心创新。它使用算法(如 Leiden 算法)将图谱中联系紧密的节点聚类成不同的“社区”(Communities)。
- 生成摘要:LLM 会为每个“社区”生成一段总结。这就像是给书的每一章、每一节都写了一个高层级的摘要。
阶段二:查询(Query)
当用户提问时,GraphRAG 可以支持两种强大的搜索模式:
- 全局搜索(Global Search) :针对“全书主要讲了什么?”这类宏观问题。系统会直接利用之前生成的“社区摘要”来回答,而不是去翻具体的零散句子。
- 局部搜索(Local Search) :针对“爱因斯坦和牛顿有什么关系?”这类具体问题。系统会在图谱中找到相关实体,并沿着它们的关系链进行推理。
4. GraphRAG 的优势
- 极其擅长总结性问题:在处理“全数据集摘要”任务时,表现远超传统 RAG。
- 推理能力更强:能够通过图谱发现隐藏的、跨段落的逻辑联系(Multi-hop reasoning)。
- 可解释性更好:你可以看到 AI 是沿着哪条路径(哪个实体连接到哪个实体)找到答案的。
- 数据覆盖更全面:传统 RAG 往往只取 Top-K(前几个)相关片段,容易遗漏信息;GraphRAG 通过社区摘要覆盖了更广泛的信息面。
5. 局限性与成本
虽然 GraphRAG 很强,但也有代价:
- 成本高:在构建索引阶段,需要大量调用 LLM 来提取实体和写摘要,这比简单的切片存向量要贵得多(Token 消耗大)。
- 速度慢:构建图谱的过程比较耗时,不适合实时性要求极高且数据频繁更新的场景。
总结
传统 RAG 想象成一个图书馆管理员,他只能根据你给的关键词,帮你找到几页书供你参考。
而 GraphRAG 像是一个读过所有书的研究员,他不仅读了书,还画了人物关系图,做了每章的笔记。当你提问时,他既能告诉你细节,也能通过笔记告诉你整本书的宏观逻辑。