跳到内容

欢迎来到 GraphRAG

👉 微软研究院博客文章
👉 GraphRAG Arxiv

Figure 1: LLM-generated knowledge graph built from a private dataset using GPT-4 Turbo.

图 1:使用 GPT-4 Turbo 构建的 LLM 生成的知识图。

GraphRAG 是一种结构化、分层的检索增强生成 (RAG) 方法,与使用纯文本片段的朴素语义搜索方法形成对比。GraphRAG 过程包括从原始文本中提取知识图谱,构建社区层次结构,为这些社区生成摘要,然后在执行基于 RAG 的任务时利用这些结构。

要了解有关 GraphRAG 及其如何增强语言模型对私有数据进行推理的能力的更多信息,请访问微软研究院博客文章

GraphRAG 入门 🚀

要开始使用 GraphRAG,请查看入门指南。要深入了解主要子系统,请访问索引器查询包的文档页面。

GraphRAG 与基线 RAG 🔍

检索增强生成 (RAG) 是一种使用真实世界信息改进 LLM 输出的技术。该技术是大多数基于 LLM 的工具的重要组成部分,并且大多数 RAG 方法使用向量相似度作为搜索技术,我们称之为基线 RAG。GraphRAG 使用知识图谱在对复杂信息进行推理时显着提高问答性能。RAG 技术在帮助 LLM 对私有数据集进行推理方面显示出希望——LLM 未经训练且从未见过的数据,例如企业的专有研究、业务文档或通信。创建基线 RAG是为了帮助解决这个问题,但我们观察到基线 RAG 表现非常差的情况。例如

  • 基线 RAG 难以将点连接起来。当回答一个问题需要通过它们的共享属性遍历不同的信息片段以提供新的合成见解时,就会发生这种情况。
  • 当被要求从整体上理解大量数据集合甚至单个大型文档中的概括性语义概念时,基线 RAG 表现不佳。

为了解决这个问题,技术社区正在努力开发扩展和增强 RAG 的方法。微软研究院的新方法 GraphRAG 根据输入语料库创建一个知识图谱。该图谱以及社区摘要和图谱机器学习输出用于在查询时增强提示。GraphRAG 在回答上述两类问题方面显示出显著改进,展示了优于先前应用于私有数据集的其他方法的智能或掌握程度。

GraphRAG 流程 🤖

GraphRAG 基于我们之前使用图机器学习的研究工具。GraphRAG 过程的基本步骤如下

索引

  • 将输入语料库切分成一系列 TextUnit,这些 TextUnit 作为过程其余部分的分析单元,并在我们的输出中提供细粒度引用。
  • 从 TextUnit 中提取所有实体、关系和关键主张。
  • 使用 Leiden 技术执行图的层次聚类。要直观地查看此内容,请查看上面的图 1。每个圆圈都是一个实体(例如,一个人、地点或组织),大小代表实体的度数,颜色代表其社区。
  • 自下而上地生成每个社区及其组成部分的摘要。这有助于整体理解数据集。

查询

在查询时,这些结构用于为 LLM 上下文窗口提供回答问题所需的材料。主要查询模式是

  • 全局搜索,通过利用社区摘要对语料库的整体问题进行推理。
  • 局部搜索,通过扩展到其邻居和相关概念来对特定实体进行推理。
  • DRIFT 搜索,通过扩展到其邻居和相关概念来对特定实体进行推理,但增加了社区信息的上下文。
  • 基本搜索,适用于您的查询最适合由基线 RAG 回答的情况(标准顶部 k 向量搜索)。

提示词调优

开箱即用地将 GraphRAG 与您的数据一起使用可能无法获得最佳结果。我们强烈建议您按照我们文档中的提示微调指南来微调您的提示。

版本控制

请参阅破坏性更改文档,了解我们项目版本控制方法的说明。

在次要版本升级之间,请务必运行 graphrag init --root [path] --force,以确保您拥有最新的配置格式。如果您想避免重新索引以前的数据集,请在主要版本升级之间运行提供的迁移笔记本。请注意,这将覆盖您的配置和提示,因此如有必要请备份。