GraphRAG

0 阅读4分钟

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 的弱点

    1. 缺乏全局观:如果你问“这篇文章的主旨是什么?”或者“总结全书的某种趋势”,传统 RAG 只能找到几个零散的片段,无法概括整体。
    2. 难以连接远距离信息:如果线索 A 在第 1 页,线索 B 在第 100 页,传统 RAG 很难把这两者关联起来推理。

GraphRAG 就是为了解决这些“这就好比盲人摸象,只能看到局部,看不到整体”的问题。

2. GraphRAG 是什么?

GraphRAG 通过大语言模型(LLM)从源文本中自动提取实体(Entities)关系(Relationships)关键声明(Claims) ,构建一个结构化的知识图谱,然后利用图谱的结构来增强检索和生成的效果。

3. GraphRAG 是如何工作的?(核心流程)

GraphRAG 的工作流程通常分为两个阶段:索引(Indexing)查询(Query)

阶段一:构建索引(Indexing)

这是最关键的一步,比传统 RAG 复杂得多:

  1. 文本切片:先把文档切块。
  2. 提取元素:利用 LLM 阅读每一个切块,识别出人名、地名、组织、概念等(实体),以及它们之间是如何关联的(关系)。
  3. 构建图谱:将这些实体和关系连接成一个巨大的网状图。
  4. 社区检测(Community Detection) :这是微软 GraphRAG 的核心创新。它使用算法(如 Leiden 算法)将图谱中联系紧密的节点聚类成不同的“社区”(Communities)。
  5. 生成摘要:LLM 会为每个“社区”生成一段总结。这就像是给书的每一章、每一节都写了一个高层级的摘要。

阶段二:查询(Query)

当用户提问时,GraphRAG 可以支持两种强大的搜索模式:

  • 全局搜索(Global Search) :针对“全书主要讲了什么?”这类宏观问题。系统会直接利用之前生成的“社区摘要”来回答,而不是去翻具体的零散句子。
  • 局部搜索(Local Search) :针对“爱因斯坦和牛顿有什么关系?”这类具体问题。系统会在图谱中找到相关实体,并沿着它们的关系链进行推理。

4. GraphRAG 的优势

  1. 极其擅长总结性问题:在处理“全数据集摘要”任务时,表现远超传统 RAG。
  2. 推理能力更强:能够通过图谱发现隐藏的、跨段落的逻辑联系(Multi-hop reasoning)。
  3. 可解释性更好:你可以看到 AI 是沿着哪条路径(哪个实体连接到哪个实体)找到答案的。
  4. 数据覆盖更全面:传统 RAG 往往只取 Top-K(前几个)相关片段,容易遗漏信息;GraphRAG 通过社区摘要覆盖了更广泛的信息面。

5. 局限性与成本

虽然 GraphRAG 很强,但也有代价:

  • 成本高:在构建索引阶段,需要大量调用 LLM 来提取实体和写摘要,这比简单的切片存向量要贵得多(Token 消耗大)。
  • 速度慢:构建图谱的过程比较耗时,不适合实时性要求极高且数据频繁更新的场景。

总结

传统 RAG 想象成一个图书馆管理员,他只能根据你给的关键词,帮你找到几页书供你参考。

GraphRAG 像是一个读过所有书的研究员,他不仅读了书,还画了人物关系图,做了每章的笔记。当你提问时,他既能告诉你细节,也能通过笔记告诉你整本书的宏观逻辑。