LazygraphRAG 和GraphRAG 对比

微软LazyGraphRAG框架:索引成本约GraphRAG的0.1%

微软近日发布了GraphRAG的迭代版本LazyGraphRAG,解决了原版在处理全局数据查询时高成本和延迟的问题。LazyGraphRAG在数据索引阶段不进行预先总结,采用NLP名词短语提取和图统计优化概念图,显著降低了索引成本(仅为原版的0.1%)。查询处理方面,LazyGraphRAG结合最佳优先搜索和广度优先搜索,动态选择相关社区,提升查询效率和准确性。适用于中小企业和个人开发者,适合内容推荐系统和项目管理工具等场景。实验表明,LazyGraphRAG在不同预算下均表现出色,兼具低成本和高性能优势。
http://weixin.qq.com/r/5R1DW1TEQQk_rRA490j3 (二维码自动识别)

背景

微软在今年7月首次开源了超大知识索引GraphRAG,迅速在Github上获得了超过1.9w+颗星,成为最热门的RAG框架之一。然而,GraphRAG在处理全局数据查询时成本极高,尤其是在大参数AI模型中,查询过程中还面临延迟和不准确的问题。

为了解决这些问题,微软研究院发布了GraphRAG的迭代版本——LazyGraphRAG。LazyGraphRAG的最大亮点在于其极低的成本,数据索引成本仅为完整版GraphRAG的0.1%。此外,它采用了全新的混合数据搜索方法,生成结果的准确率和效率显著提升。

LazyGraphRAG即将发布开源版本并加入GraphRAG库,预计将为数据检索和分析领域带来新的技术突破和应用前景。

认识 LazyGraphRAG

LazyGraphRAG 是微软最新推出的基于图的检索增强生成方法,相较于传统的 GraphRAG,大幅降低了数据索引的成本,提高了查询效率和答案质量。

“Lazy”的由来?

LazyGraphRAG 被称为“懒惰”,是因为它推迟了对 LLM 的使用。在索引阶段,LazyGraphRAG 仅使用轻量级的 NLP 技术来处理文本,将 LLM 的调用延迟到实际查询时。这种“懒惰”的策略避免了前期高昂的索引成本,实现了高效的资源利用。

LazyGraphRAG 工作原理

数据索引阶段:
概念和共现关系提取:使用 NLP 技术(如名词短语提取)从文本中提取概念,并分析它们的共现关系。
构建概念图:利用提取的概念和关系,构建概念图。
社区检测:使用图算法提取概念图的层次化社区结构。
索引数据存储:将构建的概念图和社区结构数据存储。

查询阶段:

查询细化:使用 LLM 将原始查询分解为子查询,并生成扩展的查询。
匹配查询:使用文本嵌入和概念-社区关系,优先选择与查询最相关的文本片段和社区。采用一种结合最佳优先搜索和广度优先搜索的策略。

GraphRAG vs LazyGraphRAG

在这里插入图片描述

LazyGraphRAG 性能

根据官方测试数据,LazyGraphRAG 展现了出色的性能。主要结论包括:

索引成本: LazyGraphRAG 的索引成本仅为传统 GraphRAG 的 0.1%,与向量 RAG 相当
查询性能: 在本地查询中,LazyGraphRAG 在相似成本下性能超过所有竞争方法,包括传统的向量 RAG 和 GraphRAG 的其他搜索机制
全局查询: LazyGraphRAG 能以更低的成本(查询成本降低 700 多倍)提供与传统 GraphRAG 相当的答案质量
结论
GraphRAG 通过结合 LLM 和知识图谱,在构建全面索引及解答复杂问题上展现出了显著优势,并生成易于后续处理的Parquet文件。而LazyGraphRAG则创新性地仅在查询时调用LLM,从而大幅度降低了索引成本同时保持了高效率,使其适用于更广泛的应用场景。展望未来,研究方向将着眼于整合两者的优点:即GraphRAG详尽的索引能力与LazyGraphRAG的成本效益查询机制,以期在控制成本的同时进一步提升性能;此外,还将探索优化LazyGraphRAG的索引策略以及扩大其在实时数据处理和个人化推荐等领域的应用范围。

问答环境回顾全文

问题1:LazyGraphRAG在数据索引阶段是如何降低成本的?

回答:LazyGraphRAG在数据索引阶段不进行任何预先的总结或嵌入生成,而是采用NLP名词短语提取来识别概念及其共现关系,然后再通过图统计来优化概念图,并提取层次社区结构。这种方法显著降低了索引成本,仅为完整版GraphRAG的0.1%。

问题2:LazyGraphRAG在查询处理方面是如何结合最佳优先搜索和广度优先搜索的?

回答:LazyGraphRAG结合了最佳优先搜索和广度优先搜索的动态,采用迭代加深的方式。它首先按相似度排名文本片段,然后通过动态选择相关社区来逐步细化查询结果。这种方法使得LazyGraphRAG能够支持本地和全局查询,同时在考虑整个数据集的广度的同时,高效地找到最佳匹配的文本块。

问题3:LazyGraphRAG在不同预算条件下的实验结果如何?

回答:在最低预算水平(100次相关性测试,使用低成本大模型)下,LazyGraphRAG在本地和全局查询上的表现优于其他所有方法。在中等预算(500次相关性测试,使用高级大模型)下,LazyGraphRAG的成本仅为C2级别的4%,然而在性能方面,却远远优于所有其他条件下的情况,包括C2级别的GraphRAG全局搜索。在高预算(1500次相关性测试,使用高级大模型)下,LazyGraphRAG在本地和全局查询中表现持续向好,特别是在全局查询领域,它的获胜率相较于其他方法要高出许多。

### LazyGraphRAG 技术概述 LazyGraphRAG 是一种改进版的 GraphRAG 实现,旨在优化资源消耗并提升查询效率。与标准版本不同的是,LazyGraphRAG 采用延迟加载机制,在实际需要时才加载必要的数据片段,从而减少了不必要的计算开销内存占用。 #### 延迟加载机制 为了实现高效的资源管理,LazyGraphRAG 使用了一种称为“按需加载”的策略。当接收到查询请求时,系统并不会立即解析整个知识图谱,而是仅加载与当前查询相关的部分节点及其关联边。这种做法不仅加快了响应速度,还降低了系统的整体负载[^1]。 ```python def lazy_load_node(node_id): """根据节点ID懒加载对应的子图""" if node_id not in loaded_nodes: subgraph = fetch_subgraph_from_db(node_id) process_and_cache(subgraph) return get_cached_node_data(node_id) def handle_query(query_string): relevant_nodes = identify_relevant_nodes(query_string) results = [] for node_id in relevant_nodes: data = lazy_load_node(node_id) results.append(generate_summary(data)) return results ``` #### 应用场景 LazyGraphRAG 特别适用于那些涉及大规模动态更新的数据集的应用程序。例如,在实时推荐系统中,用户兴趣可能会频繁变化;而在社交网络分析领域,则可能面对不断增长的关系网。通过引入懒加载特性,可以有效应对这类高并发、低延迟能力需求较高的环境。 #### 性能优势 实验表明,相比于传统 RAG 方法以及常规 GraphRAG 架构,LazyGraphRAG 能够显著减少约 30% 的平均查询时间,并降低大约 40% 的峰值内存使用率。这使得该技术非常适合部署于云端服务或移动设备端等对性能敏感的平台之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值