LazyGrapgRAG:与GraphRAG完全不同的方法
LazyGraphRAG 是微软最新推出的一种与 Graph RAG 截然不同的方法,该方法不需要事先汇总源数据,从而避免了前期索引成本,而前期索引成本对于某些用户和用例来说可能是难以承受的。
LazyGraphRAG 的一个关键优势是其在成本和质量方面的固有可扩展性。
与标准向量 RAG、RAPTOR、GraphRAG 和 DRIFT 相比,LazyGraphRAG 在成本质量范围内表现出色,如下所示:
- LazyGraphRAG 数据索引成本与向量 RAG 相同,仅为完整 GraphRAG 成本的 0.1%。
- 对于与向量 RAG 相当的查询成本,LazyGraphRAG 在本地查询方面的表现优于所有竞争方法,包括长上下文向量 RAG 和 GraphRAG DRIFT 搜索以及 GraphRAG 本地搜索。
- 相同的 LazyGraphRAG 配置也显示出与 GraphRAG Global Search 相当的全局查询答案质量,但查询成本降低了 700 多倍。
- 对于 GraphRAG 全局搜索的查询成本的 4%,LazyGraphRAG 在本地和全局查询类型上的表现都明显优于所有竞争方法,包括 C2 级别(大多数应用程序推荐的社区层次结构的第三级)的 GraphRAG 全局搜索。
LazyGraphRAG 即将在 GraphRAG 库开源,它通过与标准向量 RAG 成本相当的轻量级数据索引为本地和全局查询提供统一的查询界面。
LazyGraphRAG 旨在融合向量 RAG 和 GraphRAG 的优势,同时克服它们各自的局限性:
- 向量 RAG 是一种最佳优先搜索形式,它使用与查询的相似性来选择最佳匹配的源文本块。但是,它没有意识到全局查询要考虑的数据集的广度。
- GraphRAG 全局搜索是一种广度优先搜索形式,它使用源文本实体的社区结构来确保查询的答案考虑到数据集的全部广度。但是,它没有意识到本地查询要考虑的最佳社区。
LazyGraphRAG 以迭代深化的方式结合了最佳优先和广度优先搜索动态(表 1)。与完整 GraphRAG 的全局搜索机制相比,这种方法在某种程度上是“懒惰的”,可以推迟 LLM 的使用并显著提高答案生成的效率。整体性能可以通过一个主要参数(相关性测试预算)进行扩展,该参数以一致的方式控制成本质量权衡。
LazyGraphRAG 表明,单一、灵活的查询机制有可能在本地全局查询范围内大大优于各种专门的查询机制,而且无需 LLM 数据汇总的前期成本。其非常快速且几乎免费的索引功能使 LazyGraphRAG 成为一次性查询、探索性分析和流数据用例的理想选择,同时它能够随着相关性测试预算的增加而平稳地提高答案质量,使其成为对一般 RAG 方法进行基准测试的宝贵工具。
这是否意味着所有支持图形的 RAG 都应该是惰性的?我们认为答案是否定的,原因有三:
- 实体、关系和社区摘要的 GraphRAG 数据索引具有超越问答的实用价值(例如,阅读和共享报告)。
- GraphRAG 数据索引包含实体、关系和社区摘要,结合类似 LazyGraphRAG 的搜索机制,可能会取得比单独使用 LazyGraphRAG 更好的效果。
- 一种旨在支持类似 LazyGraphRAG 的搜索机制(例如,通过先发制人的声明和主题提取)的新型 GraphRAG 数据索引可能会取得最佳效果。
未来将会在 GraphRAG 仓库开源:https://github.com/microsoft/graphrag
本文转载自 PyTorch研习社,作者: 南七无名式