admin管理员组文章数量:1036096
[荐书]LightRAG 双层检索机制揭秘:优化数据处理与查询响应
LightRAG 是一种基于 GraphRAG 的创新方法,它将知识图谱的属性与基于嵌入的检索系统相结合,使其既快速又高效,并取得了 SOTA 结果。LightRAG 是由香港大学的 Zirui Guo 等人开发,它通过图形基础索引和双层检索框架,提高了检索效率并简化了知识更新过程。相较于微软的 GraphRAG,它减轻了 GraphRAG 中基于社区的索引和遍历所带来的计算开销和运行缓慢的挑战。
尤其是最近更新更是带来了一些非常实用的功能:
- 支持无缝接入用户自己知识图谱
- 支持通过名称删除实体
- 支持多种文件类型:TXT、PDF、DOC、PPT和CSV。
- 新增 LightRAG Gui[1],允许插入、查询、可视化和下载,源码开源[2].
可以说这些功能是非常实用了
1. 对比 GraphRAG
我们之前已经介绍了很多关于微软 GraphRAG 的博客,感兴趣的同学可以翻一翻。那么微软 GraphRAG 的缺点是什么呢?
- GraphRAG 运行速度非常慢,因为它需要多个 LLM API 调用,可能会达到速率限制。
- 它的成本极高,有测试表明使用 GPT4o,索引一本简单的书(如狄更斯的《圣诞颂歌》)可能需要花费大约 6 至 7 美元,该书有 32k 个单词。
- 为了将新数据合并到现有的图形索引中,我们还需要为以前的数据重建整个 KG,这是一种低效的方法。
- 没有对重复元素执行明确的重复数据删除步骤,这会导致图形索引嘈杂。
与 Naive RAG 相比,LightRAG 提供:
- 综合信息检索,答案多样。
- 高效且低成本的检索
- 快速适应数据并以最少的重新索引来更新数据。
LightRAG 解决了 GraphRAG 的两个主要痛点,
- 通过比社区遍历更好的方法减少索引和响应时间。
- 使用仅更新特定元素实例的增量更新算法轻松适应新数据。
2. LightRAG 索引机制
如下图所示,它采用提取、P、去重三步索引。
- 实体和关系提取 E(.)。该步骤构造提示词提示大模型从给定文档中提取简单实体和关系。例如,在上例中,"蜜蜂 "和 "养蜂人 "是两个实体。它们之间存在 "观察 "关系。比如,养蜂人观察蜜蜂。
- 用于键值对生成的 LLM 分析 P(.)。我们使用一个由 LLM 驱动的分析函数 P(⋅)
- 每个索引键 K是一个单词或短语,用于实现高效检索;
- 对应的值 V是一个文本段落,总结了来自外部数据的相关片段,以支持文本生成。
- 例如,在我们选择的例子中,LLM 解释了谁是 "养蜂人"。
- 优化图操作的去重功能 D(.)。用于识别并合并原始文本不同片段中相同的实体和关系。通过这一过程,去重功能有效地减少了图的规模,从而降低了与图操作相关的开销,实现更高效的数据处理。例如上图中,"养蜂人 "这个实体很可能是从多个文档或块中检索出来的。因此,我们需要一个删除重复数据步骤,只保留其中的一个,而舍弃其他具有相同含义的内容。
image-20241127115108159
更具体的代码索引流程如下图所示。
LightRAG Indexing Flowchart
3. LightRAG 的双层检索机制
为支持多样化查询类型,LightRAG 管道采用了双层检索策略,能够同时满足具体查询和抽象查询的需求,为用户提供精准且相关的定制化响应:
- 低级检索:主要针对特定实体及其相关属性或关系的检索。此层面聚焦于细节导向的查询,旨在从图中的特定节点或边提取精确信息。
- 高级检索:面向更广泛的话题和全局主题的查询。此层面聚合多个相关实体和关系的信息,为用户提供关于高级概念和概要的洞见,而非具体细节。
通过将图结构与向量表示相结合,LightRAG 能够深入理解实体间的相互关系。这种协同方式让检索算法能有效利用局部和全局关键词,从而简化搜索流程并提升结果的相关性。
- 使用大模型从用户查询中提取出高层关键词和低层关键词
- 利用高效的向量数据库,将局部查询关键词与候选实体进行匹配,同时将全局查询关键词与连接到全局关键点的关系进行匹配。
- 为增强查询的高阶关联性,LightRAG 进一步收集检索到的图元素对应的局部子图中的邻居节点。
这种方法不仅优化了检索效率,还能兼顾细节信息和宏观视角,为用户提供更全面的答案。
关键词提取,LightRAG 中有 Prompts 示例。
代码语言:javascript代码运行次数:0运行复制示例 1:
查询:"国际贸易如何影响全球经济稳定?"
################
输出:
Output:
{{
"high_level_keywords": ["国际贸易", "全球经济稳定", "经济影响"],
"low_level_keywords": ["贸易协定", "关税", "货币汇率", "进口", "出口"]
}}
更为具体的代码流程如下图所示。
LightRAG Retrieval and Querying Flowchart
4. LightRAG GUI
第三方基于 Streamlit 实现了一版开源的 LightRAG GUI,代码地址:.py。
参考资料
[1]
LightRAG Gui: /
[2]
源码开源: .py
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-11-27,如有侵权请联系 cloudcommunity@tencent 删除索引优化开源数据处理数据[荐书]LightRAG 双层检索机制揭秘:优化数据处理与查询响应
LightRAG 是一种基于 GraphRAG 的创新方法,它将知识图谱的属性与基于嵌入的检索系统相结合,使其既快速又高效,并取得了 SOTA 结果。LightRAG 是由香港大学的 Zirui Guo 等人开发,它通过图形基础索引和双层检索框架,提高了检索效率并简化了知识更新过程。相较于微软的 GraphRAG,它减轻了 GraphRAG 中基于社区的索引和遍历所带来的计算开销和运行缓慢的挑战。
尤其是最近更新更是带来了一些非常实用的功能:
- 支持无缝接入用户自己知识图谱
- 支持通过名称删除实体
- 支持多种文件类型:TXT、PDF、DOC、PPT和CSV。
- 新增 LightRAG Gui[1],允许插入、查询、可视化和下载,源码开源[2].
可以说这些功能是非常实用了
1. 对比 GraphRAG
我们之前已经介绍了很多关于微软 GraphRAG 的博客,感兴趣的同学可以翻一翻。那么微软 GraphRAG 的缺点是什么呢?
- GraphRAG 运行速度非常慢,因为它需要多个 LLM API 调用,可能会达到速率限制。
- 它的成本极高,有测试表明使用 GPT4o,索引一本简单的书(如狄更斯的《圣诞颂歌》)可能需要花费大约 6 至 7 美元,该书有 32k 个单词。
- 为了将新数据合并到现有的图形索引中,我们还需要为以前的数据重建整个 KG,这是一种低效的方法。
- 没有对重复元素执行明确的重复数据删除步骤,这会导致图形索引嘈杂。
与 Naive RAG 相比,LightRAG 提供:
- 综合信息检索,答案多样。
- 高效且低成本的检索
- 快速适应数据并以最少的重新索引来更新数据。
LightRAG 解决了 GraphRAG 的两个主要痛点,
- 通过比社区遍历更好的方法减少索引和响应时间。
- 使用仅更新特定元素实例的增量更新算法轻松适应新数据。
2. LightRAG 索引机制
如下图所示,它采用提取、P、去重三步索引。
- 实体和关系提取 E(.)。该步骤构造提示词提示大模型从给定文档中提取简单实体和关系。例如,在上例中,"蜜蜂 "和 "养蜂人 "是两个实体。它们之间存在 "观察 "关系。比如,养蜂人观察蜜蜂。
- 用于键值对生成的 LLM 分析 P(.)。我们使用一个由 LLM 驱动的分析函数 P(⋅)
- 每个索引键 K是一个单词或短语,用于实现高效检索;
- 对应的值 V是一个文本段落,总结了来自外部数据的相关片段,以支持文本生成。
- 例如,在我们选择的例子中,LLM 解释了谁是 "养蜂人"。
- 优化图操作的去重功能 D(.)。用于识别并合并原始文本不同片段中相同的实体和关系。通过这一过程,去重功能有效地减少了图的规模,从而降低了与图操作相关的开销,实现更高效的数据处理。例如上图中,"养蜂人 "这个实体很可能是从多个文档或块中检索出来的。因此,我们需要一个删除重复数据步骤,只保留其中的一个,而舍弃其他具有相同含义的内容。
image-20241127115108159
更具体的代码索引流程如下图所示。
LightRAG Indexing Flowchart
3. LightRAG 的双层检索机制
为支持多样化查询类型,LightRAG 管道采用了双层检索策略,能够同时满足具体查询和抽象查询的需求,为用户提供精准且相关的定制化响应:
- 低级检索:主要针对特定实体及其相关属性或关系的检索。此层面聚焦于细节导向的查询,旨在从图中的特定节点或边提取精确信息。
- 高级检索:面向更广泛的话题和全局主题的查询。此层面聚合多个相关实体和关系的信息,为用户提供关于高级概念和概要的洞见,而非具体细节。
通过将图结构与向量表示相结合,LightRAG 能够深入理解实体间的相互关系。这种协同方式让检索算法能有效利用局部和全局关键词,从而简化搜索流程并提升结果的相关性。
- 使用大模型从用户查询中提取出高层关键词和低层关键词
- 利用高效的向量数据库,将局部查询关键词与候选实体进行匹配,同时将全局查询关键词与连接到全局关键点的关系进行匹配。
- 为增强查询的高阶关联性,LightRAG 进一步收集检索到的图元素对应的局部子图中的邻居节点。
这种方法不仅优化了检索效率,还能兼顾细节信息和宏观视角,为用户提供更全面的答案。
关键词提取,LightRAG 中有 Prompts 示例。
代码语言:javascript代码运行次数:0运行复制示例 1:
查询:"国际贸易如何影响全球经济稳定?"
################
输出:
Output:
{{
"high_level_keywords": ["国际贸易", "全球经济稳定", "经济影响"],
"low_level_keywords": ["贸易协定", "关税", "货币汇率", "进口", "出口"]
}}
更为具体的代码流程如下图所示。
LightRAG Retrieval and Querying Flowchart
4. LightRAG GUI
第三方基于 Streamlit 实现了一版开源的 LightRAG GUI,代码地址:.py。
参考资料
[1]
LightRAG Gui: /
[2]
源码开源: .py
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-11-27,如有侵权请联系 cloudcommunity@tencent 删除索引优化开源数据处理数据本文标签: 荐书LightRAG 双层检索机制揭秘优化数据处理与查询响应
版权声明:本文标题:[荐书]LightRAG 双层检索机制揭秘:优化数据处理与查询响应 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748222922a2271630.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论