paper:LightRAG: Simple and Fast Retrieval-Augmented Generation

code:https://github.com/HKUDS/LightRAG.git

一、背景

最近RAG领域出了比较火的Graph RAG,相继微软也开源了他们的Graph RAG方案,香港大学也输出了比微软Graph RAG更简洁的方案LightRAGLightRAG整体效能都很优秀

1、传统RAG与GraphRAG区别

传统RAG(Retrieval-Augmented Generation)和GraphRAG都是结合检索和生成的技术,但它们在结构和应用上有所不同。

传统RAG:

-结构:传统RAG结合了信息检索和生成模型。通常是先使用检索模块从一个大型文档集合中找到相关信息,然后由生成模块生成自然语言结果。生成过程会参考检索到的文档。
-优点:能够快速地从大量信息中找到相关内容,并通过生成模型给出流畅、自然的回答。
-限制:
-–缺乏复杂关系建模:传统RAG主要关注直接检索到的文档,而不擅长处理信息之间的复杂关系和网络结构
-–上下文局限性:对于需要在不同资源之间进行深层次关联和推理的问题,以及总结概要,传统RAG可能表现不佳。

RAG 的局限性

传统的 RAG 系统虽然表现优异,但其局限性也不容忽视:

  1. 数据结构扁平化
    传统 RAG 系统往往依赖扁平化的数据结构,难以捕捉信息之间的复杂关系。这种缺陷导致生成的答案片段化,缺乏上下文的一致性。
  2. 有限的上下文意识
    系统在处理需要综合多个数据点的复杂问题时表现不佳,生成的答案缺乏对数据间相互关联的全面理解。

传统RAG场景限制:

传统RAG在以下场景可能表现不佳:

1. 复杂推理:需要跨多个文档进行复杂信息推理的场景。
2. 关系网络:在信息之间需要建立图结构关系才能解决的问题。
3. 非线性关系:需要分析和理解多个条目之间的非线性关系时,传统RAG可能会受到限制。
4. 动态信息更新:信息网络频繁更新、必须实时分析变化的场景中,对于保持上下文的准确性可能会有挑战。
通过引入图结构,GraphRAG可以更好地处理这些限制,提供更复杂信息连接的理解和生成能力。

问题:传统的RAG在某些方面存在一定的限制,比如依赖平面数据表示以及对上下文感知不够,这些使得模型无法抓住复杂的内部关系。

GraphRAG:

-结构:GraphRAG在传统RAG架构中引入了图结构,使其能够更好地表示信息之间的关系。通过图模型,GraphRAG可以捕捉和分析多个文档之间的复杂连接和依赖。 -优势: —关系建模:能够处理更复杂的查询,特别是涉及多个层次和节点之间关系的问题。 —更强的推理能力:在信息需要连接或推理时,GraphRAG可以比传统RAG更有效地提供相关性高的答案。

GraphRAG的局限性

GraphRAG 通过使用** 知识图谱** 对文本中的实体和关系进行结构化建模,从而能够捕捉信息间的复杂关联。GraphRAG 首先在整个私有数据集上创建实体和关系的引用,随后采用自底向上的聚类方法,将数据层次化地组织为语义簇。 然而,当数据集中加入新的知识时,GraphRAG 必须重新执行整个图构建流程。这种方式对于动态更新的数据集来说效率低下且成本高昂。

  1. 资源需求高:需要大量 API 调用(通常依赖昂贵的模型如 GPT-4o)。
  2. 数据更新昂贵:每次更新数据时,必须重建整个图谱。

方法:

提出LightRAG,将图结构嵌入到文本索引和检索过程中。整体的框架包括一个双层的检索系统,从低级的和高级的知识发现中来增强综合的信息检索。

使用了一种瞬时更新算法,确保及时更新新数据,允许系统保持有效性的同时对于数据变化能够迅速的响应。

二、概述 - Introduction

作者主要解决以下三个方面的问题

**综合信息检索:**确保抓住所有文档内部实体的完整上下文

**增强检索效率:**在基于图的知识结构上显著降低应答时间

**迅速适用于新数据:**确保系统保持与动态环境的相关性

相比之下,LightRAG 的增量更新机制大大简化了流程。

它通过简单的联合操作(union operation),将新的图节点和边直接添加到现有图谱中。

这种方式避免了重复构建图谱的高昂开销,同时确保知识库实时更新,适应动态数据需求。

双层检索策略(确保用户能够只收到需要的相关和全面的响应)

**low level检索:**关注特定实体以及他们之间关系的精确信息

**high level检索:**包含更广泛的话题

1、建设索引流程 - Graph-based Indexing

把文档信息导入到图库、向量库

分而治之

将整篇文档分割成更小的、易于管理的pieces,这样能够避免分析整篇文档,并且快速识别和评估相关的信息。

以下是 LightRAG 进行基于图索引的步骤:

(1)实体与关系(ER)提取
实体与关系提取由图中的 R(.) 表示。此步骤确保从给定文档中首先提取简单的实体。例如,在上图的示例中,“蜜蜂”(bees)和“养蜂人”(beekeeper)是两个实体,它们通过“观察”(observe)关系相关联,即养蜂人观察蜜蜂。

(2)使用 LLM 生成键值(KV)对
使用简单的 LLM 生成键值对。LLM 的分析步骤为实体或关系提供了简要的说明或解释。例如,在所选示例中,LLM 解释了“养蜂人”是谁。此步骤在图中由 P(.) 表示。需要注意的是,此 LLM 不同于主 RAG 流程中使用的通用 LLM。

(3)去重
鉴于文档内容与蜜蜂相关,实体“养蜂人”可能从多个文档或文本块中被多次提取。因此,需要一个去重步骤,仅保留一个具有相同含义的实体,丢弃其他重复项。此步骤在图中由 D(.) 表示。

上面作者提到的步骤,相对于微软的GraphRAG,相当于实现了其前三步,而对于后面冗余的步骤,包括强弱关系打分、遗漏提示、生成社区、社区总结都省略了,可能作者认为这些步骤都没有必要,而且这些步骤还会使得构件图的过程花费大量的时间。

GraphRAG这种社区遍历技术效率太低,而作者这种从Graph中获得的(K, V)数据结构能够快速精准的检索。

快速适用于增量知识库

更新整个数据库而不需要对外部文档进行再一次的完全处理。

对于一个新的文档D ′,和之前一样提取实体V 和关系E ′ 与先前的实体和关系取并集。

2、查询检索流程 - Dual-level Retrieval

对 RAG 系统的查询可以分为两种类型——具体的或抽象的。

在同样的蜜蜂示例中,具体查询可能是:“一个蜂巢中可以有多少只蜂王?” 抽象查询可能是:“气候变化对蜜蜂有哪些影响?”

为了应对这种多样性,LightRAG 采用了两种检索方式:

低层检索:简单地提取精确的实体及其关系,如蜜蜂(bees)、观察(observe)和养蜂人(beekeepers)。

高层检索:通过使用 LLM,LightRAG 聚合信息并总结多个信息来源。

双层检索范式

  • 生成查询关键词:

针对用户查询,系统自动提取局部关键词(low-level)和全局关键词(high-level)用于匹配检索。

  • 关键词匹配:

使用向量数据库,局部关键词会匹配相关的实体,全局关键词会匹配到相应的实体关系。

  • 整合高阶相关性:

为增强检索的准确性,LightRAG 会收集检索到的图元素的邻接节点,涉及检索到的实体及其关系的上下文。

检索增强的答案生成

  • 使用检索到的信息

检索完成后,系统将提取到的实体和关系输入LLM,并基于这些信息生成答案。

  • 上下文整合与答案生成

系统将用户查询与多源检索结果进行合并,生成符合查询语境的答案。

根据用户的查询,结合图库和向量库,提供了4种查询方式

增量知识库的快速适应

  • 增量更新知识库

新文档加入时,系统会按照之前的图基索引步骤处理新文档,将新生成的知识图谱与现有图谱数据合并,实现无缝更新。

  • 减少计算开销

为了提升效率,LightRAG 避免重建整个知识图谱,仅更新新数据部分,从而减少计算开销,提升系统响应速度。

架构意义

进行这些操作并切换到 LightRAG 的确能改进执行时间。在索引过程中,每个文本块只需调用一次 LLM 来提取实体及其关系。

同样,在用户查询时,仅使用与索引相同的 LLM 从文本块中检索实体和关系。这大大减少了检索的开销,从而降低了计算成本。因此,最终拥有了一个“轻量”的 RAG!

将新知识整合到现有图谱中看起来是一个无缝的操作。与其在有新信息时重新索引整个数据,可以简单地将新知识附加到现有图谱中。

评估

评估中,LightRAG 与 Naive RAG、RQ-RAG、HyDE 和 GraphRAG 进行了比较。为了保持比较的公平性,统一使用了 GPT-4o-mini 作为 LLM,并在所有数据集上采用固定的分块大小(1200)。

答案的评估标准包括全面性、多样性以及回答用户问题的有效性。

正如下划线结果所示,LightRAG 超越了当前所有最先进的方法。

总体而言,得出了以下结论:
• 使用基于图的方法(如 GraphRAG 或 LightRAG)相比基础的 Naive RAG 有显著改进。
• LightRAG 通过双层检索范式生成了相当多样化的答案。
• LightRAG 能够更好地处理复杂查询。

快速总结(vs GraphRAG)

(1)LightRAG 的知识图谱可以增量更新。为了将新数据合并到现有的图形索引中,GraphRAG 还需要为以前的数据重建整个 KG

(2)结合了 graph indexing 和 standard embedding 方法构建知识图谱。相对于 GraphRAG 以社区遍历的方法,LightRAG 专注于实体和关系的检索,进而减少检索开销

(3)Hybrid Query双层检索策略,结合了 local 和 global 方法检索

(4)推理速度更快。在检索阶段,LightRAG 需要少于 100 个token和一个 API 调用,而 GraphRAG 需要 社区数量 x 每个社区的平均令牌数量token

参考链接:

  1. 老顾聊技术:深度解析比微软的GraphRAG简洁很多的LightRAG,一看就懂
  2. simple and fast retrieval-augmented gene-CSDN博客
  3. LightRAG - 更快更便宜的GraphRAG
  4. LightRAG开源了!轻巧、强大,GraphRAG的进化版( LightRAG 的工作流程解析)
  5. 论文解读《LightRAG: Simple and Fast Retrieval-Augmented Generation》