欢迎来到 GraphRAG
图 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 中提取所有实体、关系和关键主张。
- 使用 Leiden 技术 对图进行分层聚类。要以可视化的方式查看,请查看上面的图 1。每个圆圈代表一个实体(例如,人、地点或组织),其大小代表实体的度,颜色代表其社区。
- 从下到上生成每个社区及其组成部分的摘要。这有助于对数据集进行整体理解。
查询
在查询时,这些结构用于在回答问题时为 LLM 上下文窗口提供材料。主要查询模式是
- 全局搜索 用于通过利用社区摘要来推理关于语料库的整体问题。
- 局部搜索 用于通过扇出到其邻居和相关概念来推理关于特定实体。
- DRIFT 搜索 用于通过扇出到其邻居和相关概念来推理关于特定实体,但同时包含社区信息。
- 基本搜索 用于您的查询最适合通过基线 RAG(标准 top k 向量搜索)回答的情况。
提示词调优
直接使用 GraphRAG 与您的数据可能无法产生最佳结果。我们强烈建议您按照我们文档中的 提示调整指南 调整您的提示。
版本控制
请参阅 破坏性变更 文档,了解我们对项目版本控制的方法说明。
在次要版本更新之间,始终运行 graphrag init --root [path] --force 以确保您拥有最新的配置格式。如果您想避免重新索引以前的数据集,请在主要版本更新之间运行提供的迁移笔记本。请注意,这将覆盖您的配置和提示,因此如有必要请备份。