1. 背景

最近有一个很火的开源项目LightRAG,Github6.4K+星※,北邮和港大联合出品,是一款微软GraphRAG的优秀替代者,因此本qiang~得了空闲,读读论文、跑跑源码,遂有了这篇文章。

2. LightRAG框架

2.1 已有RAG系统的局限性

1) 许多系统仅依赖于平面数据表示(如纯文本),限制了根据文本中实体间复杂的关系来理解和检索信息的能力。

2) 许多系统缺乏各种实体及其关系之间保持一致所需的上下文意识,导致可能无法完全解决用户的问题。

2.2  LightRAG的优势

1) 引入图结构:将图结构引入文本索引及相关信息检索的环节中,图结构可以有效表示实体及其关系,有利于上下文的连贯性与丰富性。

2) 综合信息检索: 从所有文档中提取相互依赖的实体的完整上下文,以确保信息检索的综合性。相对于传统的RAG,可能只关注于Chunk后的局部文本,缺乏全局综合信息。

3) 增强检索效率: 提高基于图结构的知识检索效率,以显著减少响应时间。

4) 新数据的快速适配: 能够快速适应新的数据更新,确保系统在动态环境中保持相关性。

5) 减少检索开销: 相对于GraphRAG以社区遍历的方法,LightRAG专注于实体和关系的检索,进而减少开销。

2.3 LightRAG的框架

LightRAG将基于图结构的文本索引(graph-based text indexing)无缝地集成到一个双层检索框架(dual-level retrieval framework)中,因此能够提取实体间复杂的内部关系,提高响应的丰富性和连贯性。

双层检索策略包括低级检索和高级检索,其中低级检索重点关注特定实体及其关系的准确信息,高级检索则包含了广泛的主题信息。

此外,通过将图结构与向量表征相结合,LightRAG促进了相关实体和关系的有效检索,同时基于结构化的知识图谱中相关的信息,增强了结果的全面性。

LightRAG无需重复构建整个索引,降低了计算成本且加速了适配,而且其增量更新算法保障了新数据的及时整合。

2.3.1 基于图的文本索引

1) 实体及关系抽取:LightRAG先将大文本切分为小文本,然后利用LLM识别并抽取小文本中各种实体及其关系,此举可便于创建综合的知识图谱,prompt示例如下:

2) 使用LLM性能分析功能生成键值对:使用LLM提供的性能分析函数,为每个实体及每条关系生成一个文本键值对(K, V),其中K是一个单词或短语,便于高效检索,V是一个文本段落,用于文本片段的总结

3) 去重以优化图操作:通过去重函数识别并合并来自不同段落的相同实体和关系。有效地减少了与图操作相关的开销,通过最小化图的大小,从而实现更高效的数据处理。

2.3.2 双层检索机制

1) 在细节层和抽象层分别生成查询键:具体查询以细节为导向,许精确检索特点节点或边相关信息;抽象查询更加概念化,涵盖更广泛的主题、摘要,其并非与特定实体关联。

2) 双层检索机制:低级检索聚焦于检索特定实体及其属性或关系信息,旨在检索图谱中指定节点或边的精确信息;高级检索处理更广泛的主题,聚合多个相关实体和关系的信息,为高级的概念及摘要提供洞察力。

3) 集成图以及向量以便高效检索:通过图结构和向量表示,使得检索算法有效地利用局部和全局关键词,简化搜索过程并提高结果的关联性。具体分为如下步骤:

a. 查询关键词提取:针对给定的问题,LightRAG的检索算法首先分别提取局部查询关键词和全部查询关键词

关键词提取的prompt如下:

b. 关键词匹配:检索算法使用向量数据库来匹配局部查询关键词与候选实体,以及全局查询关键词与候选关系(与全局关键词关联)

c. 增强高阶关联性: LightRAG进一步收集已检索到的实体或关系的局部子图,如实体或关系的一跳邻近节点

2.3.3 检索增强回答生成

1) 使用已检索信息: 利用已检索的信息,包括实体名、实体描述、关系描述以及原文片段,LightRAG使用通用的LLM来生成回答。

2) 上下文集成及回答生成: 将查询串与上下文进行整合,调用LLM生成答案。

2.3.4 整体过程示例

3. 实验

3.1 数据源

从UltraDomain基准中选取了4个数据集,分别包括农业、计算机科学、法律、混合集,每个数据集包含60W-500W个token。

3.2 问题生成

为了评估LightRAG的性能,首先通过LLM生成5个RAG用户,且为每个用户生成5个任务。每个用户均具有描述信息,详细说明了他们的专业知识和特征,以引发他们提出相关问题。每个用户任务也具有描述信息,强调其中一个用户在于RAG交互时的潜在意图。针对每个用户任务的组合,LLM生成5个需要理解整个数据集的问题。因此,每个数据集共产生125个问题。

问题生成的prompt如下:

3.3 基线模型

选取的4个基线模型包括Naive RAG, RQ-RAG, HyDE, GraphRAG。

3.4评价维度及细节

实验中,向量检索采用nano 向量库,LLM选择GPT-4o-mini,每个数据集的分块大小为1200,此外收集参数(gleaning parameter,目的在于仅通过1轮LLM无法完全提取对应的实体或关系,因此该参数旨在增加多次调用LLM)设置为1。

评价标准采用基于LLM的多维度比较方法,使用GPT-4o-mini针对LightRAG与每个基线的响应进行排名。主要包含如下4个维度:全面性(回答多大程度解决了问题的所有方面和细节)、多样性(与问题相关的不同观点,答案的多样性和丰富性如何)、接受度(答案是否有效使读者理解主题并做出明确判断)、整体评价(评估前三个标准的累积评价)。

评价prompt如下:

3.5 实验结果

3.5.1 与基线RAG方法比较

3.5.2 双层检索及基于图结构的索引增强消融结果

3.5.3 具体示例研究

3.5.4 与GraphRAG的成本比较

4. 整体工作流

图片建议放大,看的更清楚~

LightGraph的源码可读性非常强,建议看官们可以基于上面这张流程图,逐步调试LightGraph,以了解其检索和生成两个模块的具体细节。

如果源码层面有问题的话,可以私信或评论进一步交流~

5.总结

一句话足矣~

本文针对开源的LightRAG论文研读以及原理分析,包括核心模块、框架的整体工作流程等内容。

如果想免费获取使用GPT-4o-mini的api接口,以及对原理或源码不清楚的看官,可私信或评论沟通。

6.参考

1) LightGraph论文地址: https://arxiv.org/pdf/2410.05779v1

2) LightGraph源码地址:https://github.com/HKUDS/LightRAG

LLM论文研读: GraphRAG的替代者LightRAG的更多相关文章

  1. GoogLeNetv3 论文研读笔记

    Rethinking the Inception Architecture for Computer Vision 原文链接 摘要 卷积网络是目前最新的计算机视觉解决方案的核心,对于大多数任务而言,虽 ...

  2. GoogLeNetv2 论文研读笔记

    Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 原文链接 摘要 ...

  3. < AlexNet - 论文研读个人笔记 >

    Alexnet - 论文研读个人笔记 一.论文架构 摘要: 简要说明了获得成绩.网络架构.技巧特点 1.introduction 领域方向概述 前人模型成绩 本文具体贡献 2.The Dataset ...

  4. AD预测论文研读系列2

    EARLY PREDICTION OF ALZHEIMER'S DISEASE DEMENTIA BASED ON BASELINE HIPPOCAMPAL MRI AND 1-YEAR FOLLOW ...

  5. AD预测论文研读系列1

    A Deep Learning Model to Predict a Diagnosis of Alzheimer Disease by Using 18F-FDG PET of the Brain ...

  6. GoogLeNetv4 论文研读笔记

    Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 原文链接 摘要 向传统体系结构中引入 ...

  7. GoogLeNetv1 论文研读笔记

    Going deeper with convolutions 原文链接 摘要 研究提出了一个名为"Inception"的深度卷积神经网结构,其目标是将分类.识别ILSVRC14数据 ...

  8. 《MapReduce: Simplified Data Processing on Large Clusters》论文研读

    MapReduce 论文研读 说明:本文为论文 <MapReduce: Simplified Data Processing on Large Clusters> 的个人理解,难免有理解不 ...

  9. 《The Design of a Practical System for Fault-Tolerant Virtual Machines》论文研读

    VM-FT 论文研读 说明:本文为论文 <The Design of a Practical System for Fault-Tolerant Virtual Machines> 的个人 ...

  10. Automatic Generation of Animated GIFs from Video论文研读及实现

    论文地址:Video2GIF: Automatic Generation of Animated GIFs from Video 视频的结构化分析是视频理解相关工作的关键.虽然本文是生成gif图,但是 ...

随机推荐

  1. vue3:setup语法糖使用教程

    setup语法糖简介 直接在script标签中添加setup属性就可以直接使用setup语法糖了. 使用setup语法糖后,不用写setup函数:组件只需要引入不需要注册:属性和方法也不需要再返回,可 ...

  2. Codeforces Round 964 (Div. 4)

    Codeforces Round 964 (Div. 4) A送分 B 大意:两个人两张牌 随机翻 求a翻出来的牌比b大的可能 #include <cstdio> #include < ...

  3. 38k Star!颠覆传统BI,Metabase新一代智能数据分析工具

    Metabase 是一个开源的商业智能(BI)工具,帮助用户轻松地从数据库中提取数据,并将其转化为易于理解的图表和仪表板.与传统的 BI 工具相比,Metabase 不需要用户具备编写 SQL 的能力 ...

  4. 汇编跳转指令B、BL、BX、BLX 和 BXJ的区别

    跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程序流程的跳转: (1) 使用专门的跳转指令. (2) 直接向程序计数器 PC 写入跳转地址值. 通过向程序计数器 PC 写入跳转地 ...

  5. Terraform中的for_each和count

    通过Terraform创建云主机时,在某些业务场景下,一个机器需要挂载多个云盘,一般云厂商都是单独创建云主机和云硬盘然后通过attachment的资源去挂载,因此我们的模板大致如下: resource ...

  6. GPT 中的函数调用(function call)是什么?

    在 OpenAI ChatGPT API 和 Google Gemini API 中我们可以看到函数调用的功能.这个功能是做什么用的?下面大概讲解. 以 Google Gemini API 函数调用 ...

  7. 导出 LaTeX 为 SVG

    LaTeX 本身并不直接支持导出 SVG 格式的文档或图片,但可以通过一些工具和插件实现将 LaTeX 文档或图形转换为 SVG 格式. 使用 dvisvgm 我们可以先将 LaTeX 文档编译为 D ...

  8. c# RSA加密解密,与java代码互通问题

    RSA加密解密原本是公开算法,但是和一个java的小伙伴对接却出现了点问题,现在记录一下 首先,RSA的公钥私钥,有2种: 1.pem格式. 2.xml格式. 文章底部有pem格式和对应的xml样本数 ...

  9. Qml 实现水波进度动画条

    [写在前面] 最近看到一个非常有趣的动画效果:水波进度动画. 学习了一下实现思路,觉得很有意思. 不过原版是 HTML + CSS,我这里用的是 Qml,有一些小技巧,分享给大家~ [正文开始] 老样 ...

  10. Java如何解决同时出库入库订单号自动获取问题

    在Java中处理同时出库和入库的订单号自动获取问题,通常涉及到多线程环境下的并发控制.为了确保订单号的唯一性和连续性,我们可以使用多种策略,如数据库的自增ID.分布式锁.或者利用Java的并发工具类如 ...