燃爆网络!微软开源GraphRAG项目,增强大模型问答、摘要、推理能力

AI快讯 2024-07-03

今年四月微软发布了GraphRAG项目技术报告,PaperAgent专门发过推文进行详细介绍,时隔2个多月,在7月3日,微软正式开源了GrapRAG项目!

GraphRAG 是一个数据管道和转换套件,旨在利用大型语言模型(LLMs)的强大功能,从非结构化文本中提取有意义的结构化数据。GraphRAG 通过构建知识图谱,增强 LLM 对私人数据的推理能力。

image.png

传统的RAG系统在处理外部数据源时,只是简单地将文档转换为文本,将其分割为片段,然后嵌入到向量空间中,使得相似的语义对应相近的位置。

但这种方法在处理需要全局理解的海量数据查询时存在局限,因为它过度依赖局部文本片段的检索,无法捕捉到整个数据集的全貌。

所以,微软在RAG基础之上通过“Graph”图的方式,例如,文本中的实体,人物、地点、概念等,构建了超大的知识图谱,帮助大模型更好地捕捉文本中的复杂联系和交互,来增强其生成、检索等能力。

现如今,RAG已经成为GPT-4、Qwen-2、文心一言、讯飞星火、Gemini等国内外知名大模型标配功能。

GraphRAG项目的知识模型:

image.png

Document- 系统中的输入文档,代表CSV中的单独行或者单独的.txt 文件。

TextUnit- 要分析的文本块。这些块的大小、重叠度都可以配置。

Entity- 从 TextUnit 中提取的实体,代表人物、地点、事件或您提供的其他实体模型。

Relationship- 两个实体之间的关系。

Covariate- 提取的声明信息,其中包含有关可能受时间限制的实体的陈述。

Community Report- 一旦生成实体,就对它们执行分层社区检测,并为该层次结构中的每个社区生成报告。

Node- 包含已嵌入和聚集的实体和文档的呈现图形视图的布局信息。

Graph RAG架构简单介绍

Graph RAG的核心是通过两阶段构建基于图谱的文本索引:首先,从源文档中衍生出实体知识图谱;然后,针对所有紧密相关的实体群组预生成社区摘要。

所以,Graph RAG的第一步就是将源文档分割成较小的文本块,这些文本块随后被输入到大模型中以提取关键信息。

image.png

在这个过程中,大模型不仅要识别文本中的实体,还要识别实体之间的关系,包括它们之间的相互作用和联系,用来构建一个庞大的实体知识图谱,其中包含了数据集中所有重要实体和它们之间的关系。

简单来说,这个过程就像杀鸡一样,当一整只鸡(数据)拿上来后,我们就要把它分解成腿、翅膀、胸肉等更细小的组成部分,同时会关注这些部位之间的关系方便后续的处理。

接着,Graph RAG使用社区检测算法来识别图谱中的模块化社区。这些社区由相关的节点组成,它们之间的联系比与图中其他部分的联系更为紧密。通过这种方式,整个图谱被划分为更小、更易于管理的单元,每个单元都代表了数据集中的一个特定主题或概念。

在基于图的索引之上,Graph RAG进一步生成社区摘要。这些摘要是对社区内所有实体和关系的总结,它们提供了对数据集中特定部分的高层次理解。

然后要求大模型对每个答案进行打分,分数在0—100之间,得分过低的将被过滤掉,高分则留下。将剩余的中间答案按照得分高低排序,逐步添加至新的上下文窗口中,直至词数限制。

例如,当用户提问“如何进行有效减肥时?”,系统会利用与问题相关的社区摘要来生成部分答案。这些部分答案随后被汇总并精炼,以形成最终答案。

为了评估Graph RAG的性能,微软在一个100万tokens、超复杂结构的数据集上,包含娱乐、播客、商业、体育、技术、医疗等内容,进行了综合测试。

结果显示,全局检索方法在全面性和多样性测试上,超越了Naive RAG等方法。特别是,Graph RAG方法在播客转录和新闻文章数据集上都显示出了超高的水准,多样性也非常全面,是目前最佳的RAG方法之一。

@版权声明:部分内容从网络收集整理,如有侵权,请联系删除!

相关文章