随着AI浪潮发展至今,大模型呈现出了百花争鸣之势,但真正的AI原生应用还处于蛰伏阶段。 无论是做AI Agent还是做垂类的Chat Bot,RAG都扮演着十分重要的作用。 RAG作为AI原生应用中不可或缺的一员,也逐渐呈现出了迅猛发展的势头。笔者个人认为,今天介绍的这款GraphRAG 极有可能代替以往的RAG形态成为主流的RAG 。
或许LLMs(大型语言模型)的最大挑战——也是最大的机会——在于将其强大的能力扩展到解决超出其训练数据范围的问题,并在从未见过的数据上取得可比的结果。这为数据调查开辟了新的可能性,例如在数据集中识别主题和语义概念。本文介绍了由微软研究院创建的GraphRAG,这是增强LLMs能力的重要进展。
在阅读下文之前,建议阅读一下以下的几篇文章:
如何将任意文本转换为知识图谱
langchain中的Advanced RAG和ReRank技术一览
什么是RAG
检索增强生成(RAG)是一种根据用户查询搜索信息并将结果作为参考生成AI回答的技术。这项技术是大多数基于LLMs的工具的重要组成部分,大多数RAG方法使用向量相似性作为搜索技术。GraphRAG使用LLM生成的知识图在处理复杂信息的文档分析时显著提高了问答性能。这建立在我们最近的研究基础上,这些研究表明在私有数据集 上执行发现时的提示增强的力量。这里,我们定义私有数据集 为LLM未训练过并且从未见过的数据,例如企业的专有研究、业务文档或通信。
Baseline RAG [1][1] 是为解决这一问题而创建的,但我们观察到基线RAG在某些情况下表现非常差。例如:
•基线RAG难以连接信息点。这发生在回答一个问题需要通过共享属性遍历不同的信息片段以提供新的综合见解时。 •基线RAG在被要求全面理解大数据集合或单个大型文档中的概括性语义概念时表现不佳。
为了解决这个问题,技术社区正在开发扩展和增强RAG的方法(例如,LlamaIndex[2])。微软研究院的新方法GraphRAG使用LLM根据私有数据集创建知识图。该图然后在查询时与图机器学习一起用于执行提示增强。GraphRAG在回答上述两类问题时表现出显著的改进,展示了超越以前应用于私有数据集的其他方法的智能或掌握能力。
概述
GraphRAG项目是一个数据管道和转换套件,旨在利用LLMs的力量从非结构化文本中提取有意义的结构化数据。GraphRAG 是一种结构化、分层的方法,用于检索增强生成(RAG),相对于使用纯文本片段的简单语义搜索方法。GraphRAG 过程涉及从原始文本中提取知识图、构建社区层次结构、生成这些社区的摘要,然后在执行基于 RAG 的任务时利用这些结构。
要了解更多关于GraphRAG的信息以及如何利用它来增强LLMs对私有数据的推理能力,请访问微软研究博客文章[3]。
GraphRAG 与基线 RAG(Baseline RAG )的对比 🔍
检索增强生成(RAG)是一种利用真实世界信息改进 LLM 输出的技术。这项技术是大多数基于 LLM 的工具的重要组成部分,大多数 RAG 方法使用向量相似性作为搜索技术,我们称之为基线 RAG 。GraphRAG 使用知识图在推理复杂信息时显著提高了问答性能。RAG 技术在帮助 LLM 推理私有数据集 (LLM 未训练过且从未见过的数据,如企业的专有研究、业务文档或通信)方面显示出希望。基线 RAG 是为了解决这个问题而创建的,但我们观察到基线 RAG 在某些情况下表现非常差。例如:
•基线 RAG 难以连接信息点。这发生在回答一个问题需要通过共享属性遍历不同的信息片段以提供新的综合见解时。 •基线 RAG 在被要求全面理解大数据集合或单个大型文档中的概括性语义概念时表现不佳。
为了解决这个问题,技术社区正在开发扩展和增强 RAG 的方法。微软研究院的新方法 GraphRAG 使用 LLMs 根据输入语料库创建知识图。此图以及社区摘要和图机器学习输出在查询时用于增强提示。GraphRAG 在回答上述两类问题时表现出显著的改进,展示了超越以前应用于私有数据集的其他方法的智能或掌握能力。
GraphRAG 过程 🤖
GraphRAG 建立在我们以前使用图机器学习的研究[4]和工具[5]的基础上。GraphRAG 过程的基本步骤如下:
索引
•将输入语料库切分成一系列 TextUnits,这些单元作为过程其余部分的可分析单元,并为我们的输出提供细粒度的引用。 •使用 LLM 提取 TextUnits 中的所有实体、关系和关键主张。 •使用Leiden 技术[6]对图进行层次聚类。视觉上参考上面的图1。每个圆圈代表一个实体(例如人、地点或组织),大小代表实体的度,颜色代表其社区。 •从底向上生成每个社区及其成员的摘要。这有助于全面理解数据集。
查询
在查询时,这些结构用于提供回答问题时 LLM 上下文窗口的材料。主要的查询模式有:
•全局搜索 [7]用于通过利用社区摘要来推理关于语料库的整体问题。 •局部搜索 [8]用于通过扩展到邻居和关联概念来推理特定实体。
提示调整
使用GraphRAG 与您的数据开箱即用可能不会产生最佳结果。我们强烈建议根据我们的文档中的提示调整指南[9]进行调整。
快速入门
要开始使用GraphRAG系统,我们建议尝试解决方案加速器[10]包。这提供了一个用户友好的端到端Azure资源体验。
创建LLM生成的知识图
我们注意到支持GraphRAG的基本流程,建立在我们以前的研究[11]和代码库[12]使用图机器学习的基础上:
•LLM处理整个私有数据集,创建对源数据中所有实体和关系的引用,然后用于创建LLM生成的知识图。 •该图然后用于创建自下而上的聚类,按语义簇层次组织数据(如下图3所示的颜色表示)。这种划分允许对语义概念和主题进行预总结,有助于对数据集的整体理解。 •在查询时,这两个结构用于提供回答问题时LLM上下文窗口的材料。
下图3显示了知识图的一个示例可视化。每个圆圈代表一个实体(例如人、地点或组织),实体大小表示该实体的关系数量,颜色表示相似实体的分组。颜色划分是基于图结构的自下而上的聚类方法,使我们能够在不同的抽象层次上回答问题。
使用GPT-4 Turbo从私有数据集构建的LLM生成的知识图示例图。知识图可视化通过投影到2D图像上的3D空间中的不同大小和颜色的圆圈集合来表示。这些圆圈按颜色在空间中分组,每种颜色区域内的大圆周围有许多小圆。每个圆表示知识图中的一个实体
图3:使用GPT-4 Turbo从私有数据集构建的LLM生成的知识图。
结果指标
上述示例说明了GraphRAG在不同主题领域的多个数据集中的一致改进。我们通过使用LLM评分器进行评估,以确定GraphRAG和基线RAG之间的成对胜者。我们使用一组定性指标,包括全面性(在问题隐含上下文框架内的完整性)、人类授权(提供支持源材料或其他上下文信息)和多样性(提供不同观点或角度)。初步结果显示,GraphRAG在这些指标上始终优于 基线RAG。
除了相对比较外,我们还使用SelfCheckGPT[13]进行绝对信实性测量,以确保结果基于来源材料的事实、一致和连贯。结果显示,GraphRAG在信实性方面与基线RAG相似。我们目前正在开发一个评估框架,以测量上述问题类别的性能。这将包括生成问答测试集的更强大机制以及额外指标,如准确性和上下文相关性。
下一步
通过结合LLM生成的知识图和图机器学习,GraphRAG使我们能够回答基线RAG单独无法尝试的重要问题类别。在将此技术应用于各种场景(包括社交媒体、新闻文章、工作效率和化学)后,我们看到了令人鼓舞的结果。展望未来,我们计划与客户密切合作,在各种新领域应用此技术,同时继续研究指标和健全的评估。我们期待在研究继续的过程中分享更多内容。
仓库指南
该仓库提供了一种使用知识图记忆结构来增强LLM输出的方法。请注意,提供的代码仅作为演示,不是微软官方提供的产品。
深入了解
•要了解我们的贡献指南,请参阅CONTRIBUTING.md[14] •要开始开发GraphRAG ,请参阅DEVELOPING.md
•加入讨论并在GitHub Discussions[15]标签中提供反馈!
提示调整
使用GraphRAG 与您的数据开箱即用可能不会产生最佳结果。我们强烈建议根据我们的文档中的提示调整指南[16]进行调整。
常见问题
请参阅RAI_TRANSPARENCY.md[17]
• 什么是GraphRAG?[18]
• GraphRAG能做什么?[19]
• GraphRAG的预期用途是什么?[20]
• GraphRAG如何评估?使用哪些指标来衡量性能?[21]
• GraphRAG的局限性是什么?用户如何在使用该系统时最小化其局限性的影响?[22]
• 什么操作因素和设置允许GraphRAG的有效和负责任的使用?[23]
本文由山行翻译整理自:https://github.com/microsoft/graphrag,如果对您有帮助,请帮忙点赞、关注、收藏,谢谢~
References
[1]
[1]: https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/#baseline-RAG
[2]
LlamaIndex: https://www.llamaindex.ai/
[3]
微软研究博客文章: https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
[4]
研究: https://www.microsoft.com/en-us/worklab/patterns-hidden-inside-the-org-chart
[5]
工具: https://github.com/graspologic-org/graspologic
[6]
Leiden 技术: https://arxiv.org/pdf/1810.08473.pdf
[7]
全局搜索 : https://microsoft.github.io/graphrag/posts/query/0-global\_search
[8]
局部搜索 : https://microsoft.github.io/graphrag/posts/query/1-local\_search
[9]
提示调整指南: https://microsoft.github.io/graphrag/posts/prompt\_tuning/overview/
[10]
解决方案加速器: https://github.com/Azure-Samples/graphrag-accelerator
[11]
研究: https://www.microsoft.com/en-us/worklab/patterns-hidden-inside-the-org-chart
[12]
代码库: https://github.com/microsoft/graspologic
[13]
SelfCheckGPT: https://arxiv.org/pdf/2303.08896.pdf
[14]
CONTRIBUTING.md: https://github.com/microsoft/graphrag/blob/main/CONTRIBUTING.md
[15]
GitHub Discussions: https://github.com/microsoft/graphrag/discussions
[16]
提示调整指南: https://microsoft.github.io/graphrag/posts/prompt\_tuning/overview/
[17]
RAI_TRANSPARENCY.md: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md
[18]
什么是GraphRAG?: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md#what-is-graphrag
[19]
GraphRAG能做什么?: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md#what-can-graphrag-do
[20]
GraphRAG的预期用途是什么?: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md#what-are-graphrags-intended-uses
[21]
GraphRAG如何评估?使用哪些指标来衡量性能?: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md#how-was-graphrag-evaluated-what-metrics-are-used-to-measure-performance
[22]
GraphRAG的局限性是什么?用户如何在使用该系统时最小化其局限性的影响?: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md#what-are-the-limitations-of-graphrag-how-can-users-minimize-the-impact-of-graphrags-limitations-when-using-the-system
[23]
什么操作因素和设置允许GraphRAG的有效和负责任的使用?: https://github.com/microsoft/graphrag/blob/main/RAI\_TRANSPARENCY.md#what-operational-factors-and-settings-allow-for-effective-and-responsible-use-of-graphrag