今年7月,微软首次开源了超大知识索引GraphRAG,仅4个多月的时间在Github已超过19000颗星,成为目前最火的RAG框架之一。但GraphRAG在处理全局数据查询时成本非常高,尤其是应用在那些大参数的AI模型中格外明显,查询的过程中也存在延迟、不准确等问题。今天凌晨,微软研究院发布了GraphRAG迭代版本——LazyGraphRAG。这个RAG的最大亮点之一就是成本非常低,数据索引成本只有完整版GraphRAG的0.1%,同时采用了全新混合数据搜索方法,生成结果的准确率、效率等却更好,很快发布开源版本并加入到GraphRAG库中。
开源地址:
https://github.com/microsoft/graphrag?tab=readme-ov-file
下面我将根据微软官方博客发布的内容,为大家详细解读LazyGraphRAG的技术区别,同时回顾一下GraphRAG。
LazyGraphRAG技术特点
微软之前开源的GraphRAG在数据索引阶段,主要依赖于大模型来提取和描述实体及其关系,并且会为每个实体和关系生成总结。这个过程涉及到图统计来优化实体图,并提取出层次化的社区结构。不过这种方法的成本非常高,因为它需要借助大量的语言模型处理,使得GraphRAG的数据索引成本非常非常贵。
与GraphRAG不同是,LazyGraphRAG在数据索引阶段不进行任何预先的总结或嵌入生成,而是采用NLP名词短语提取来识别概念及其共现关系,然后再通过图统计来优化概念图,并提取层次社区结构。这使得LazyGraphRAG的索引成本极低,仅为GraphRAG的0.1%。也就是说将成本降低了1000倍。
在查询处理方面,GraphRAG使用广度优先搜索来确保查询回答时考虑了整个数据集的广度,而LazyGraphRAG则结合了最佳优先搜索和广度优先搜索的动态,采用迭代加深的方式。首先按相似度排名文本片段,然后通过动态选择相关社区来逐步细化查询结果。这种方法使得LazyGraphRAG能够支持本地和全局查询,同时在考虑整个数据集的广度的同时,高效地找到最佳匹配的文本块。
在灵活性和扩展性方面,GraphRAG由于其丰富的总结信息,可以用于多种用途,但高成本限制了其在一次性查询和探索性分析中的使用。LazyGraphRAG则提供了统一的查询接口,支持本地和全局查询,非常灵活,适合一次性查询、探索性分析和流式数据使用场景。
在应用场景上,GraphRAG适合需要高质量、全面查询结果的场景,例如,企业级知识管理和复杂数据分析等。而LazyGraphRAG则适合需要高效处理全局查询且对成本敏感的场景,如中小企业和个人开发者的内容推荐系统和项目管理工具,这对于那些资源有限的人来说非常友好。
LazyGraphRAG测试数据
为了评估LazyGraphRAG的性能,微软设定了三种不同的预算,以观察其在不同条件下的表现。在最低预算水平下,100次相关性测试,并且使用低成本的大模型时,LazyGraphRAG展现出了显著的优势,在本地和全局查询上的表现都优于其他所有方法。在本地查询中,LazyGraphRAG明显超过了C1、C2、C3_Dynamic、LS、DRIFT、SS_8K、SS_64K和RAPTOR等方法。尽管GraphRAG全局搜索在全局查询中有时表现较好,但LazyGraphRAG在成本效益上仍然占据了优势。
当预算水平提高到500次,并且使用更高级的大模型时,LazyGraphRAG的优势进一步显现。它的成本仅为C2级别的4%,但性能却显著优于所有其他条件,包括C2级别的GraphRAG全局搜索。这表明LazyGraphRAG不仅在成本上具有优势,而且在查询质量上也表现出色,无论是在本地查询还是全局查询中,都能提供更高质量的答案。
当达到1500次高预算时,LazyGraphRAG的优势进一步加大。LazyGraphRAG在本地和全局查询上的表现继续提升,尤其是在全局查询中,其获胜率显著高于其他方法。即使在高预算条件下,LazyGraphRAG仍然保持了其成本效益和查询质量的双重优势。