LLM - RAG 大型语言模型的检索增强生成研究综述

「Retrieval-Augmented Generation for Large Language Models: A Survey」本期带来 LLM 语言检索增强生成的论文解析,其主要分析当下 RAG 相关技术进展。

目录

Abstruct 简介

1.Introduction 介绍

2.Definition 定义

3.RAG Framework 框架

3.1 Naive RAG

3.2 Advanced RAG

3.3 Modular RAG

- New Modules

- New Patterns

- Optimizing the RAG Pipeline

4.Retrieval 检索

4.1 Enhancing Semantic Representations

- Chunk optimization

- Fine-tuning Embedding Models

4.2 Aligning Queries and Documents

4.3 Aligning Retriever and LLM

- Fine-tuning Retrievers

- Adapters

5.Generation 生成

5.1 Post-retrieval with Frozen LLM

5.2 Fine-tuning LLM for RAG

6.Augmentation in RAG

6.1 RAG in Augmentation Stages

6.2 Augmentation Source

6.3 Augmentation Process

7.RAG Evaluation

7.1 Evaluation Targets

7.2 Evaluation Aspects

7.3 Evaluation Benchmarks and Tools 

8.Future Prospects

8.1 Future Challenges of RAG

8.2 Ecosystem of RAG

9.Conclusion


Abstruct 简介

大型语言模型 (LLM) 表现出显着的能力,但面临幻觉、过时知识和不透明、不可追踪的推理过程等挑战。检索增强生成 (RAG) 通过结合来自外部数据库的知识已成为一种很有前途的解决方案。这增强了模型的准确性和可信度,特别是对于知识密集型任务,并允许对特定领域的信息进行持续的知识更新和集成。RAG 将 LLM 的内在知识与外部数据库的大量动态存储库协同合并。这篇全面的综述论文详细考察了 RAG 范式的进展,包括 Naive RAG、Advanced RAG 和模块化 RAG。它仔细研究了 RAG 框架的三方基础,包括检索、生成和增强技术。本文重点介绍了嵌入在这些关键组件中的每一个中的最先进技术,提供了对 RAG 系统进步的深刻理解。此外,本文介绍了评估 RAG 模型的指标和基准,以及最新的评估框架。总之,本文描述了研究的潜在途径,包括挑战的识别、多模态的扩展以及 RAG 基础设施及其生态系统的进展。

Tips:

RAG 范式进展: Naive RAG / Advanced RAG / Modular RAG。

1.Introduction 介绍

GPT 系列 [OpenAI] 和 LLama 系列 [Touvron] 等大型语言模型 (LLM) 在自然语言处理方面取得了显著成功,其在 SuperGLUE、MMLU 和 BIG-bench 等评估基准上获得了进步,但 LLM 仍然表现出一定的局限性,尤其是在处理特定领域或高度专业化的查询方面。一个常见的问题是生成不正确的信息,或者是经常提到的 "LLM 幻觉" ,尤其是当查询超出模型的训练数据或需要最新信息时。这些缺点强调了在现实生产环境中部署 llm 作为黑盒解决方案且不配套额外保护措施是不切实际的。减轻这些限制的一种有前途的方法是 RetrievalAugmented Generation (RAG),它将外部数据检索集成到生成过程中,从而增强模型提供准确和相关响应的能力。

RAG 由 Lewis 等人介绍。在 2020 年中期,作为 LLM 领域内的范式,增强生成任务。具体来说,RAG 涉及初始检索步骤,其中 LLM 在继续回答问题或生成文本之前查询外部数据源以获得相关信息。这个过程不仅通知后续的生成阶段,而且还确保响应基于检索到的证据,从而显着提高输出的准确性和相关性。在推理阶段从知识库中动态检索信息允许 RAG 解决生成事实不正确的内容等问题,通常称为 "幻觉"。RAG 集成到 LLM 中已经迅速采用,已成为改进聊天机器人能力和使 llm 在实际应用中更可行的关键技术。

RAG 的进化轨迹在四个不同的阶段展开,如下图。其在 2017 年成立,与 Transformer 架构的出现相一致,主要推力是通过预训练模型 (PTM) 吸收额外的知识来增强语言模型。这个 epoch 见证了 RAG 的基本努力,主要致力于优化预训练方法。

按照这个初始阶段,聊天 GPT 出现之前出现了一段时间的相对休眠,在此期间 RAG 的相关研究进展最小。ChatGPT 随后的到来标志着轨道上的一个关键时刻,将 llm 推进到最前沿。社区的焦点转向利用 llm 的能力来提高可控性并解决不断变化的需求。因此,Lion's 的 RAG 努力份额集中在推理上,少数人致力于微调过程。随着 LLM 功能继续前进,特别是随着 GPT-4 的引入,RAG 技术的前景发生了重大转变。重点演变为混合方法,结合了 RAG 和微调的优势,以及专门的少数人继续专注于优化预训练方法。

尽管 RAG 研究发展迅速,但该领域缺乏系统的整合和抽象,这给理解 RAG 进步的综合格局带来了挑战。本调查旨在通过对 llm 中的检索增强进行全面检查,概述整个 RAG 过程,并包括 RAG 研究的当前和未来方向。

因此,本文旨在全面总结和组织技术原则、发展历史、内容,特别是 llm 出现后的相关方法和应用,以及 RAG 的评估方法和应用场景。它寻求对现有的 RAG 技术进行全面概述和分析,并为未来的开发方法提供结论和前景。本调查旨在为读者和实践者提供对大型模型和 RAG 的全面和系统的理解,阐明检索增强的进展和关键技术,阐明各种技术的优点和局限性及其合适的上下文,并预测潜在的未来发展。

我们的贡献如下:

• 我们对最先进的 RAG 进行了彻底的和系统的回顾,通过包括朴素 RAG、高级 RAG 和模块化 RAG 在内的范例描述了其演变。这篇综述将 RAG 研究的更广泛范围置于 LLM 的前景中。

• 我们确定并讨论了 RAG 过程不可或缺的核心技术,特别关注 "检索"、"生成器" 和 "增强" 的各个方面,并深入研究它们的协同作用,阐明这些组件如何错综复杂的协作以形成连贯和有效的 RAG 框架。

• 我们为 RAG 构建了一个彻底的评估框架,概述了评估目标和指标。与从不同角度进行微调相比,我们的比较分析阐明了 RAG 的优缺点。此外,我们预计 RAG 的未来方向,强调应对当前挑战的潜在增强、扩展到多模式设置以及其生态系统的开发。

本文展开如下:第 2 节和第 3 节定义了 RAG 并详细说明了其发展过程。第 4 节和第 6 节探讨了核心组件 - "检索"、"生成" 和 "增强" 突出了不同的嵌入技术。第 7 节侧重于 RAG 的评估系统。第 8 节将 RAG 与其他 LLM 优化方法进行比较,并提出了其演化的潜在方向。论文在第 9 节中结束。

Tips:

本文旨在全面总结和组织技术原则、发展历史、内容,特别是 llm 出现后的相关方法和应用,以及 RAG 的评估方法和应用场景。

2.Definition 定义

RAG 的定义可以从其工作流程中总结出来。下图描绘了一个典型的 RAG 应用程序工作流程。在这种情况下,用户询问 Query 有关最近产生大量公共话语的个人资料事件(即 OpenAI CEO 的突然解雇和重述)的 ChatGPT。ChatGPT 是最著名且广泛使用的 LLM,受其预训练数据的限制,缺乏对最近事件的知识。RAG 通过检索外部知识库的最新文档摘录来解决这一差距。在这种情况下,它采购了与查询相关的新闻文章的选择。这些文章与最初的问题一起被合并成一个丰富的提示 Prompt,使 ChatGPT 能够合成知情响应。这个例子说明了 RAG 过程,证明了它能够通过实时信息检索来增强模型对响应的响应。

从技术上讲,RAG 已通过各种创新方法来丰富,以解决关键问题,例如 "检索什么"、"何时检索" 和 "如何使用检索到的信息"。对于 "检索什么" 研究已经从简单的标记和实体检索发展到更复杂的结构,例如块 [Ram et al., 2023] 和知识图 [Kang et al., 2023],研究侧重于检索的粒度和数据结构级别。粗粒度带来了更多信息,但精度较低。检索结构化文本提供了更多信息,同时牺牲效率。"何时检索" 的问题导致了从单个 [Wang et al., 2023e, Shi et al., 2023] 到自适应 [Jiang et al., 2023b, Huang et al., 2023] 和多重检索 [Izacard et al., 2022] 方法的策略。高频检索带来了更多的信息和更低的效率。至于 "如何使用" 检索到的数据,集成技术已经在模型架构的各个级别开发,包括输入 [Khattab et al., 2022]、中间 [Borgeaud et al., 2022] 和输出层 [Liang et al., 2023]。尽管 "中间" 和 "输出层" 更有效,但存在需要训练效率低的问题。

RAG 是一种通过整合外部知识库来增强 LLM 的范例。它采用协同方法,结合信息检索机制上下文内学习 (ICL) 来提高 LLM 的性能。在这个框架中,用户发起的查询通过搜索算法提示相关信息的检索。然后将此信息编织到 LLM 的提示中,为生成过程提供额外的上下文。RAG 的关键优势在于它避免了为特定任务应用程序重新训练 LLM 的需要。相反,开发人员可以附加外部知识库,丰富输入,从而细化模型的输出精度。RAG 已成为 LLM 系统中最流行的架构之一,因为它具有很高的实用性和低进入障碍,许多会话产品几乎完全建立在 RAG 上。

RAG 工作流包括三个关键步骤。首先,语料库被划分为离散的块,在此基础上使用编码器模型构建向量索引。其次,RAG 根据它们与查询和索引块的向量表示来识别和检索块。最后,该模型根据从检索到的块中收集的上下文信息合成响应。这些步骤构成了 RAG 过程的基本框架,支持其信息检索和上下文感知生成能力。接下来,我们将介绍 RAG 研究框架。

3.RAG Framework 框架

RAG 研究范式不断发展,本节主要描述其进展。我们将其分为三种类型:朴素 RAG、高级 RAG 和模块化 RAG。虽然 RAG 具有成本效益,超过了原生 LLM 的性能,但它们也有一些局限性。高级 RAG 和模块化 RAG 的开发是对 Naive RAG 中这些特定缺点的响应。

3.1 Naive RAG

Naive RAG 研究范式代表了最早的方法,在 ChatGPT 的广泛采用后不久就获得了突出地位。Naive RAG 遵循传统的过程,包括索引、检索和生成。它还被描述为 "检索-阅读" 框架 [Ma et al., 2023a]。

- Indexing 索引

索引过程是离线发生的数据准备的关键步骤,涉及几个阶段。它从数据索引开始,其中原始数据被清理和提取,各种文件格式,如 PDF、HTML、Word 和 Markdown 被转换为标准化的纯文本。为了适应语言模型的上下文限制,然后在称为分块的过程中,该文本被分割成更小、更易于管理的块。这些块随后通过嵌入模型转换为向量表示,该模型选择其推理效率和模型大小之间的平衡。这有助于检索阶段的相似性比较。最后,创建一个索引来存储这些文本块及其向量嵌入作为键值对,这允许高效且可扩展的搜索能力。

- Retrieval 检索

在接收到用户查询后,系统使用索引阶段中使用的相同编码模型来转码。然后,它继续计算查询向量和索引语料库中的矢量化块之间的相似度得分。该系统优先考虑并检索与查询相似度最大的前 K 个块。这些块随后用作解决用户请求的扩展上下文基础。

- Generation 生成

将提出的查询 Query 和所选文档合成为一个连贯的提示 Prompt,其中大型语言模型的任务是制定响应。该模型的回答方法可能因特定于任务的标准而异,允许它要么利用其固有的参数知识,要么将其响应限制在提供的文档中包含的信息上。在正在进行的对话的情况下,任何现有的对话历史都可以集成到提示中,使模型能够有效地参与多轮对话交互。

- Drawbacks 缺陷

朴素 RAG 在三个关键领域面临重大挑战:"检索"、"生成" 和 "增强"。检索质量带来了不同的挑战,包括低精度,导致检索到的块错位和幻觉或空中下降等潜在问题。也会出现低召回率,导致无法检索所有相关块,从而阻碍了 LLM 制作综合响应的能力。过时的信息进一步加剧了这个问题,可能会产生不准确的检索结果。

响应生成质量提出了幻觉挑战,其中模型生成未基于提供的上下文的答案,以及模型输出中不相关上下文和潜在毒性或偏差的问题。

增强过程在有效地将检索到的段落的上下文与当前生成任务相结合方面提出了其自身的挑战,这可能会导致输出不相交或不连贯。冗余和重复也令人担忧,尤其是当多个检索到的段落包含相似的信息时,导致生成的响应中重复的内容。

识别多个检索到的段落对生成任务的重要性和相关性是另一个挑战,需要正确平衡每个段落的值。此外,协调写作风格和音调的差异以确保输出的一致性至关重要。

最后,生成模型的风险过度取决于增强信息,可能会导致输出仅重申检索到的内容,而无需提供新值或合成信息。

Tips:

传统 RAG 的范式 - Indexing 索引 + Retrieval 检索 + Generation 生成。

3.2 Advanced RAG

先进的 RAG 是通过有针对性的增强来开发的,以解决 Naive RAG 的缺点。在检索质量方面,Advanced RAG 实现了预检索和后检索策略。为了解决 Naive RAG 所经历的索引挑战,Advanced RAG 使用滑动窗口、细粒度分割和元数据等技术改进了其索引方法。它还引入了各种方法来优化检索过程 [ILIN, 2023]。

- Pre-Retrieval Process 预检索

优化数据索引。优化数据索引的目标是提高被索引的内容的质量。这涉及五种主要策略:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。

增强数据粒度旨在提高文本标准化、一致性、事实准确性和丰富的上下文,以提高 RAG 系统的性能。这包括删除不相关的信息、在实体和术语中拼写歧义、确认事实准确性、维护上下文和更新过时的文档。

优化索引结构涉及调整块的大小以捕获相关上下文、跨多个索引路径查询以及结合图结构中的信息通过利用图数据索引中的节点之间的关系来捕获相关上下文。

添加元数据信息涉及将引用元数据(例如日期和目的)集成到块中以过滤目的,并结合参考章节和小节等元数据来提高检索效率。

对齐优化通过在文档中引入"假设问题" 来解决文档之间的对齐问题和差异 [Li et al., 2023d],以纠正对齐问题和差异。

- Retrieval 检索

在检索阶段,主要重点是通过计算查询和块之间的相似度来识别适当的上下文。嵌入模型是此过程的核心。在高级 RAG 中,有可能优化嵌入模型。

Fine-tuning Embedding

微调嵌入模型显著影响 RAG 系统中检索到的内容的相关性。这个过程涉及定制嵌入模型以增强特定领域上下文中的检索相关性,特别是对于处理不断发展或稀有术语的专业领域。BGE 嵌入模型[BAAI, 2023],如 BAAI2 开发的 BGE-large-EN,是一个高性能的嵌入模型的例子,可以进行微调以优化检索相关性。使用 GPT-3.5-turbo 等语言模型可以生成用于微调的训练数据,以制定基于文档块的问题,然后将其用作微调对。

Dynamic Embedding 

动态嵌入适应使用单词的上下文,与静态嵌入不同,静态嵌入对每个单词使用单个向量 [Karpukhin et al., 2020]。例如,在 BERT 等 transformer 模型中,同一个词可以根据周围的词具有不同的嵌入。OpenAI 的嵌入-ada-02 模型 3,建立在像 GPT 这样的 LLM 的动态嵌入模型,用于捕获上下文理解。然而,它可能对上下文表现出与 GPT-4 等最新全尺寸语言模型相同的敏感性。

- Post-Retrieval Process 后检索

在从数据库中检索有价值的上下文后,必须将其与查询合并为 LLM 的输入,同时解决上下文窗口限制带来的挑战。简单地将所有相关文档一次呈现给 LLM 可能会超过上下文窗口限制、引入噪声,并阻碍对关键信息的关注。需要对检索到的内容进行额外的处理来解决这些问题。

Re-Ranking 

重新排序检索到的信息以将最相关的内容重新定位到提示的边缘是关键策略。这个概念已在 LlamaIndex4、LangChain5 和 HayStack [Blagojevi、2023] 等框架中实现。例如,Diversity Ranker6 基于文档多样性优先考虑重新排序,而 LostInThemiddleRanker 在上下文窗口的开头和结尾交替放置最佳文档。此外,像 cohereAI 这样的方法重新排序 [Cohere, 2023]、bge-rerank7 和 LongLLMLingua [Jiang et al., 2023a] 重新计算相关文本与查询之间的语义相似性,解决了解释基于向量的模拟搜索语义相似性的挑战。

Prompt Compression 

研究表明,检索到的文档中的噪声会对 RAG 性能产生不利影响。在后处理中,重点是压缩不相关的上下文,突出关键段落并减少整体上下文长度。选择性上下文和 LLMLingua 等方法 [Litman等人,2020,Anderson等人,2022] 利用小型语言模型计算提示互信息或困惑,估计元素的重要性。Recomp [Xu et al., 2023a] 通过在不同粒度上训练压缩器来解决这个问题,而 Long Context [Xu et al., 2023b] 和 "在 Memory Maze 中行走" [Chen et al., 2023a] 设计了摘要技术来增强 LLM 的关键信息感知,特别是在处理广泛的上下文方面。

Tips:

增强式 RAG 主要通过预检索提高索引质量内容、通过优化向量模型提升检索的准确性,最后通过后检索提高索引信息的可靠性,减少噪声的引入来提高 RAG 信息检索内容的有效性并提高后续 LLM 生成的效果。

3.3 Modular RAG

模块化 RAG 结构与传统的 Naive RAG 框架不同,提供了更大的多功能性和灵活性。它集成了各种方法来增强功能模块,例如合并用于相似性检索的搜索模块并在检索器中应用微调方法 [Lin et al., 2023]。已经开发了重组的 RAG 模块 [Yu等人,2022] 和 [Shao等人2023] 等迭代方法来解决特定的问题。模块化 RAG 范式正越来越多地成为 RAG 域中的规范,允许跨多个模块序列化管道或端到端训练方法。三种 RAG 范式的比较如下图所示。然而,模块化 RAG 不是独立的。高级 RAG是模块化 RAG 的一种特殊形式,此外,Naive RAG 本身是高级 RAG 的一个特例。三种范式之间的关系是继承和发展之一。

- New Modules

Search Module

与 Naive / Advanced RAG 中的相似性检索相比,搜索模块针对特定场景量身定制,并在额外的语料库上直接搜索。这种集成是使用 LLM 生成的代码、查询语言(例如 SQL 或 Cypher)和其他自定义工具实现的。这些搜索的数据源可能包括搜索引擎、文本数据、表格数据和知识图 [Wang et al., 2023d]。

Memory Module

该模块利用 LLM 的内存能力来指导检索。该方法涉及识别与当前输入最相似的内存。Selfmem [Cheng et al., 2023b] 利用检索增强生成器迭代地创建一个无界内存池,结合 "原始问题" 和 "对偶问题"。通过使用自己的输出来改进自身的检索增强生成模型,文本在推理过程中与数据分布更加一致。因此,利用模型自己的输出而不是训练数据 [Wang et al., 2022a]。

Fusion

RAG-Fusion [Raudaschl, 2023] 通过使用 LLM 将用户查询扩展到多个不同视角的多查询方法来解决它们的局限性,从而增强了传统的搜索系统。这种方法不仅捕获了用户寻求的显式信息,而且还揭示了更深、变革性的知识。融合过程涉及对原始查询和扩展查询的并行向量搜索、智能重新排序以优化结果,并将最佳结果与新查询配对。这种复杂的方法确保了与用户的显式意图和隐式意图密切相关的搜索结果,从而产生更有洞察力和相关的信息发现。

Routing

RAG 系统的检索过程利用了不同的来源,在域、语言和格式上有所不同,可以根据情况交替或合并 [Li et al., 2023b]。Query 查询路由决定对用户查询的后续操作,选项范围从摘要、搜索特定数据库或将不同的路径合并为单个响应。查询路由器还为查询选择合适的数据存储,可能包括向量存储、图数据库或关系数据库等各种来源,或索引的层次结构——例如,用于多文档存储的摘要索引和文档块向量索引。查询路由器的决策是通过 llm 调用预定义和执行的,它将查询引导到所选索引。

Predict

它解决了检索到的内容中冗余和噪声的常见问题。该模块不是直接从数据源检索,而是利用 LLM 生成必要的上下文[Yu等人,2022]。与通过直接检索获得的内容相比,LLM 生成的内容更有可能包含相关信息。

Task Adapter

该模块侧重于将 RAG 适应各种下游任务。UPRISE 自动从预先构建的数据池中检索零样本任务输入的提示,从而提高任务和模型的通用性 [Cheng et al., 2023a]。同时,PROMPTAGATOR [Dai et al., 2022] 利用 LLM 作为少样本查询生成器,并根据生成的数据创建特定于任务的检索器。通过利用 llm 的泛化能力,它能够以最小的示例开发特定于任务的端到端检索器。

- New Patterns

模块化 RAG 的组织结构具有高度的适应性,允许在 RAG 过程中替换或重新排列模块以适应特定的问题上下文。

Naive RAG 和 Advanced RAG 都可以被视为由一些固定模块组成。Naive RAG 主要由 "Retrieve" 和 "Read" 模块组成。高级 RAG 的典型模式建立在 Naive RAG 的基础上,通过添加 "重写" 和 "重新排序" 模块。然而,总的来说,模块化 RAG 具有更大的多样性和灵活性。

目前的研究主要探索了两种组织范式。第一个涉及添加或删除模块,而第二个侧重于调整模块之间的组织流程。这种灵活性使定制 RAG 过程以有效地解决广泛的任务。

Adding or Replacing Modules

引入或替换模块的策略包括保持 Retrieval-Read 过程的核心结构,同时集成额外的模块以增强特定功能。RRR 模型 [Ma et al., 2023a] 引入了 Rewrite-RetrieveRead 过程,利用 LLM 性能作为重写模块的强化学习激励。这使得重写器能够微调检索查询,从而提高阅读器的下游任务性能。

类似地,模块可以在 Generate-Read [Yu et al., 2022] 等方法中选择性地交换,其中 LLM 的生成模块取代了检索模块。Recite-Read 方法 [Sun et al., 2022] 将外部检索转换为模型权重的检索,要求 LLM 最初记住特定于任务的信息,然后产生能够处理知识密集型自然语言处理任务的输出。

Adjusting the Flow between Modules

在模块流调整领域,重点是增强语言模型和检索模型之间的交互。DSP [Khattab et al., 2022] 引入了 ExplaineeSearch-Predict 框架,将上下文学习系统视为显式程序而不是最终任务提示,从而更有效地处理知识密集型任务。ITER-RETGEN [Shao et al., 2023] 方法利用生成的内容来指导检索,在 Retrieve-Read 流中迭代实现 "检索增强生成" 和 "生成增强检索"。这种方法展示了一种创新的方法,即使用一个模块的输出来改进另一个模块的功能。

- Optimizing the RAG Pipeline

检索过程的优化旨在提高 RAG 系统中信息的效率和质量。目前的研究侧重于整合不同的搜索技术、细化检索步骤、结合认知回溯、实现通用查询策略和利用嵌入相似性。这些努力共同努力在 RAG 系统中实现检索效率和上下文信息深度之间的平衡。

Hybrid Search Exploration

RAG 系统通过智能集成各种技术来优化其性能,包括基于关键字的搜索、语义搜索和向量搜索。这种方法利用每种方法的独特优势来适应不同的查询类型和信息需求,确保高度相关和上下文丰富的信息的一致检索。混合搜索的使用是检索策略的稳健补充,从而提高了 RAG 管道的整体效果。

Recursive Retrieval and Query Engine

递归检索涉及在初始检索阶段获取更小的块以捕获关键的语义含义。随后,在流程的后期阶段,向LLM 提供了包含更多上下文信息的较大块。这种两步检索方法有助于在效率和交付上下文丰富的响应之间取得平衡。

StepBack-prompt

回撤-提示 方法鼓励 LLM 远离特定的实例,并围绕更广泛的概念和原则进行推理 [Zheng et al., 2023]。实验结果表明,当使用反向提示时,各种具有挑战性的、基于推理的任务的性能显着提高,突出了它们对 RAG 过程的自然适应性。这些检索增强步骤既可以应用于生成对后向提示的响应,也可以应用于最终的问答过程。

Sub-Queries

根据场景,可以采用各种查询策略,例如使用 LlamaIndex 等框架提供的查询引擎、利用树查询、利用向量查询或执行块的简单顺序查询。

Hypothetical Document Embeddings

HyDE 对生成的答案在嵌入空间中可能比直接查询更接近的信念进行操作。使用 LLM,HyDE 创建一个假设文档(答案)来响应查询、嵌入此文档,并使用生成的嵌入来检索与假设文档相似的真实文档。这种方法不是基于查询寻求嵌入相似性,而是专注于从一个答案到另一个答案的嵌入相似性 [Gao et al., 2022]。然而,它可能不会始终如一地产生理想的结果,尤其是当语言模型不熟悉主题时,可能会导致更多的错误实例。

Tips:

Modular RAG 介绍了多种模块与模式,并尝试通过混合的方式优化整个 Pipeline 的流程以达到检索效率与质量的平衡。其中 Naive RAG、Advanced RAG 都可以看做是 Modular RAG 的一种特定表现形式。

4.Retrieval 检索

在 RAG 的上下文中,从数据源有效地检索相关文档至关重要。然而,创建精通检索器会带来重大挑战。本节分为三个基本问题:1)我们如何实现准确的语义表示。2) 哪些方法可以对齐查询和文档的语义空间。3)检索器的输出如何与大型语言模型的偏好对齐?

4.1 Enhancing Semantic Representations

在 RAG 中,语义空间是必不可少的,因为它涉及查询和文档的多维映射。该语义空间中的检索精度显着影响 RAG 结果。本节将介绍构建准确语义空间的两种方法。

- Chunk optimization

在管理外部文档时,初始步骤涉及将它们分解成更小的块以提取细粒度的特征,然后嵌入这些特征来表示它们的语义。然而,嵌入过大或过小的文本块可能会导致次优结果。因此,识别语料库中文档的最佳块大小对于确保检索结果的准确性和相关性至关重要。

选择合适的分块策略需要仔细考虑几个关键因素,例如索引内容的性质、嵌入模型及其最佳块大小、用户查询的预期长度和复杂性以及特定应用程序对检索结果的利用。例如,分块模型的选择应该基于内容的长度——它是否更长或更短。此外,不同的嵌入模型在不同的块大小下表现出不同的性能特征。例如,句子转换器在单个句子上表现更好,而文本嵌入-ada-002 擅长包含 256 或 512 个标记的块。

此外,用户输入问题的长度和复杂性等因素以及应用程序的特定需求(例如,语义搜索或问答)对分块策略的选择有影响。这种选择可以直接受到所选 llm 的令牌 token 限制的影响,需要对块大小进行调整。实际上,获得精确的查询结果涉及灵活应用不同的分块策略。没有一刀切的 "最佳" 策略,只有最适合特定上下文的策略。

目前的 RAG 研究探索了各种块优化技术,旨在提高检索效率和准确性。这种方法包括使用滑动窗口技术,通过合并跨多个检索过程的全局相关信息来实现分层检索。另一种策略,称为 "small2big" 方法,在初始搜索阶段利用小文本块,然后将更大的相关文本块提供给语言模型进行处理。

摘要嵌入技术优先考虑基于文档摘要(或摘要)的前 K 个检索,提供对整个文档上下文的全面理解。此外,元数据过滤技术利用文档元数据来增强过滤过程。一种创新的方法,图索引技术,将实体和关系转换为节点和连接,显着提高了相关性,尤其是在多跳问题的背景下。

这些不同的方法的结合带来了显著的进步,导致检索结果增强,RAG 的性能提高。

- Fine-tuning Embedding Models

一旦确定了适当的块大小,下一个关键步骤涉及使用嵌入模型将这些块 Chunk 和查询 Query 嵌入到语义空间中。嵌入的有效性至关重要,因为它会影响模型表示语料库的能力。最近的研究引入了著名的嵌入模型,如 AngIE、Voyage、BGE 等[Li和Li, 2023, VoyageAI, 2023, BAAI, 2023]。这些模型在广泛的语料库上进行了预训练。然而,当应用于专业领域时,它们准确捕获特定领域信息的能力可能会受到限制。

此外,嵌入模型的特定于任务的微调对于确保模型在内容相关性方面理解用户查询至关重要。没有微调的模型可能无法充分解决特定任务的要求。因此,微调嵌入模型对于下游应用程序变得至关重要。嵌入微调方法有两个主要范式。

Domain Knowledge Fine-tuning

为了确保嵌入模型准确地捕获特定领域的信息,必须利用特定领域的数据集进行微调。这个过程与标准语言模型微调不同,主要在于所涉及的数据集的性质。通常,用于嵌入模型微调的数据集包含三个主要元素:查询 Query、语料库和相关文档。该模型使用这些查询来识别语料库中的相关文档。然后根据其检索这些相关文档以响应查询的能力来衡量模型的有效性。数据集构建、模型微调和评估阶段都提出了不同的挑战。LlamaIndex [Liu, 2023] 引入了一套关键类和函数,旨在增强嵌入模型微调工作流程,从而简化这些复杂的过程。通过管理注入领域知识和利用所提供的方法的语料库,可以熟练微调嵌入模型以与目标域的特定要求密切对齐。

Fine-tuning for Downstream Tasks

下游任务的微调嵌入模型是提高模型性能的关键步骤。在将 RAG 用于这些任务的领域,已经出现了创新的方法,通过利用 llm 的能力来微调嵌入模型。例如,PROMPTAGATOR [Dai et al., 2022] 利用 LLM 作为 few-shot 查询生成器来创建特定于任务的检索器,解决了监督微调的挑战,尤其是在数据稀缺领域。另一种方法 LLM-Embedder [Zhang et al., 2023a],利用 LLM 为跨多个下游任务的数据生成奖励信号。检索器使用两种类型的监督信号进行微调:数据集的硬标签和来自 LLM 的软奖励。这种双信号方法促进了更有效的微调过程,将嵌入模型定制到不同的下游应用程序。

虽然这些方法通过结合领域知识和特定于任务的微调来改进语义表示,但检索器可能并不总是表现出与某些 LLM 的最佳兼容性。为了解决这个问题,一些研究人员探索了使用来自 LLM 的反馈对微调过程的直接监督。这种直接监督试图将检索器与 LLM 更紧密地对齐,从而提高了下游任务的性能。第 4.3 节介绍了对该主题的更全面的讨论。

4.2 Aligning Queries and Documents

在 RAG 应用程序的上下文中,检索器可以利用单个嵌入模型对查询和文档进行编码,或者为每个文档使用单独的模型。此外,用户的原始查询可能会受到措辞不精确和语义信息缺乏的影响。因此,将用户查询的语义空间与文档的语义空间对齐至关重要。本节介绍了两个旨在实现这种对齐的基本技术。

Query Rewriting

查询重写是对齐查询和文档语义的基本方法。Query2Doc 和 ITER-RETGEN 等方法通过将原始查询与额外的指导相结合来创建伪文档 [Wang et al., 2023c, Shao et al., 2023]。HyDE 使用文本提示构建查询向量以生成捕获基本模式的 "假设" 文档 [Gao et al., 2022]。RRR 引入了一个反转传统检索和阅读顺序的框架,重点关注查询重写 [Ma et al., 2023a]。STEP-BACKPROMPTING 使 LLM 能够基于高级概念执行抽象推理和检索 [Zheng et al., 2023]。此外,多查询检索方法利用 llm 同时生成和执行多个搜索查询,有利于解决多个子问题的复杂问题。

Embedding Transformation

除了查询重写等广泛策略之外,还存在专门为嵌入转换设计的更细粒度的技术。LlamaIndex [Liu, 2023] 通过引入可以在查询编码器之后集成的适配器模块来举例说明这一点。该适配器有助于微调,从而优化查询嵌入的表示,将它们映射到与预期任务更紧密对齐的潜在空间中。

SANTA [Li et al., 2023d] 解决了将查询与结构化外部文档对齐的挑战,特别是在解决结构化和非结构化数据之间的不一致时。它通过两个预训练策略增强了检索器对结构化信息的敏感性:首先,通过利用结构化和非结构化数据之间的内在对齐来为结构化感知预训练方案中的对比学习提供信息;其次,通过实施掩蔽实体预测。后者利用以实体为中心的掩蔽策略,鼓励语言模型预测和填充掩蔽实体,从而促进对结构化数据的更深入理解。

4.3 Aligning Retriever and LLM

在 RAG 管道中,通过各种技术增强检索命中率并不一定会提高最终结果,因为检索到的文档可能与 llm 的具体要求不一致。因此,本节介绍两种方法,旨在将检索器输出与 LLM 的偏好对齐。

- Fine-tuning Retrievers

一些研究利用来自 llm 的反馈信号来改进检索模型。例如,AR [Yu et al., 2023b] 使用编码器-解码器架构为预训练的检索器引入监督信号。这是通过通过 FiD 交叉注意力分数识别 LM 的首选文档来实现的。随后,检索器通过硬负采样和标准交叉熵损失进行微调。最终,细化检索器可以直接应用于增强看不见的目标 LM,从而提高目标任务的性能。此外,建议 LLM 可能更喜欢专注于可读而不是信息丰富的文档。

REPLUG [Shi et al., 2023] 利用检索器和 LLM 来计算检索到的文档的概率分布,然后通过计算 KL 散度来执行监督训练。这种简单有效的训练方法通过使用 LM 作为监督信号来提高检索模型的性能,消除了对特定交叉注意力机制的需求。

UPRISE [Cheng et al., 2023a] 还使用冻结的 LLM 来微调提示检索器。LLM 和检索器都将提示输入对作为输入,并利用 LLM 提供的分数来监督检索器的训练,有效地将 LLM 视为数据集标记器。此外,Atlas [Izacard et al., 2022] 提出了四种监督微调嵌入模型方法:

• 注意力蒸馏 这种方法在输出期间使用 LLM 生成的交叉注意力分数来提取模型的知识。

• EMDR2 通过使用期望最大化算法,该方法使用检索到的文档作为潜在变量来训练模型。

• Perplexity Distillation 使用生成的令牌的困惑度作为指标直接训练模型。

• LOOP 该方法基于文档删除对 LLM 预测的影响提出了一种新的损失函数,为更好地使模型适应特定任务提供了一种有效的训练策略。

这些方法旨在提高检索器和 LLM 之间的协同作用,从而提高检索性能和更准确的用户查询响应。

- Adapters

微调模型可能会带来挑战,例如通过 API 集成功能或解决由有限的本地计算资源引起的约束。因此,一些方法选择合并外部适配器以帮助对齐。

PRCA 通过上下文提取阶段和奖励驱动阶段训练适配器。然后使用基于令牌的自回归策略优化检索器的输出 [Yang et al., 2023b]。令牌过滤方法使用交叉注意力分数来有效地过滤令牌,只选择得分最高的输入标记 [Berchansky et al., 2023]。RECOMP 引入了用于摘要生成的提取和生成压缩器。这些压缩器要么选择相关句子,要么合成文档信息,创建针对多文档查询量身定制的摘要 [Xu et al., 2023a]。

此外,PKG 引入了一种创新的方法,通过指令微调将知识集成到白盒模型中 [Luo et al., 2023]。在这种方法中,检索器模块直接替换为根据查询生成相关文档。这种方法有助于解决微调过程中遇到的困难并提高模型性能。

5.Generation 生成

RAG 的一个关键组成部分是它的生成器,它负责将检索到的信息转换为连贯流畅的文本。与传统的语言模型不同,RAG 的生成器通过结合检索到的数据来提高准确性和相关性,从而自行设置。在 RAG 中,生成器的输入不仅包含典型的上下文信息,还包括通过检索器获得的相关文本段。这种全面的输入使生成器能够深入了解问题的上下文,从而产生更多信息和上下文相关的响应。

此外,生成器由检索到的文本引导,以确保生成的内容和获得的信息之间的一致性。不同的输入数据导致生成阶段的目标努力,所有这些都旨在将大型模型适应从查询和文档派生的输入数据。在以下小节中,我们将通过深入研究检索后处理和微调的各个方面来探索生成器的引入。

5.1 Post-retrieval with Frozen LLM

在不可调整的 llm 领域,许多研究依赖于完善的模型,如 GPT-4 [OpenAI, 2023],利用它们的综合内部知识系统地从各种文档中合成检索到的信息。然而,挑战仍然存在这些大型模型,包括上下文长度和冗余信息易感性的限制。为了解决这些问题,一些研究工作将他们的重点转向检索后处理。

检索后处理包括从大型文档数据库中处理、过滤或优化检索器检索到的相关信息。它的主要目标是提高检索结果的质量,将它们与用户需求或后续任务更紧密地对齐。它可以被视为检索阶段获得的文档的重新处理。检索后处理的常见操作通常包括信息压缩和结果重新排序。

Information Compression

检索器擅长从大量知识库中检索相关信息,但管理检索文档中大量信息是一个挑战。正在进行的研究旨在扩展大型语言模型的上下文长度来解决这个问题。然而,当前的大型模型仍然难以解决上下文限制。因此,有一些场景需要浓缩信息。信息压缩对于减少噪声、解决上下文长度限制和增强生成效果具有重要意义。

PRCA 通过训练信息提取器来解决这个问题 [Yang et al., 2023b]。在上下文提取阶段,当提供输入文本 Sinput 时,它能够生成输出序列 Cextracted,该输出序列表示从输入文档中表示压缩上下文。训练过程旨在最小化 Cextracted 和实际上下文 Ctruth 之间的差异。

同样,RECOMP 采用类似的方法,通过使用对比学习训练信息冷凝器 [Xu et al., 2023a]。每个训练数据点由一个正样本和五个负样本组成,编码器在整个过程中使用对比损失进行训练 [Karpukhin et al., 2020]。

另一项研究采取了不同的方法,旨在减少文档的数量,以提高模型答案的准确性。在 [Ma et al., 2023b] 的研究中,他们提出了 "Filter-Reranker" 范式,它结合了 LLM 和小型语言模型 (SLM) 的优势。在这种范式中,SLM 用作过滤器,而 LLM 用作重新排序代理。研究表明,指示 llm 重新排列SLMs 识别的挑战性样本会导致各种信息提取(IE)任务的显著改进。

Reranking

重新排序模型在优化从检索器检索到的文档集方面至关重要。当引入额外的上下文时,语言模型通常会面临性能下降,并且重新排序有效地解决了这个问题。核心概念涉及重新排列文档记录以优先考虑顶部最相关的项目,从而限制了文档的总数。这不仅解决了检索过程中上下文窗口扩展的挑战,而且提高了检索效率和响应能力。

重新排序模型在整个信息检索过程中承担双重作用,充当优化器和精炼器。它为后续的语言模型处理提供了更有效和准确的输入 [Zhuang et al., 2023]。

上下文压缩被纳入重新排序过程中,以提供更精确的检索信息。这种方法需要减少单个文档的内容并过滤整个文档,最终目标是在搜索结果中呈现最相关的信息,以便更集中和准确的相关内容显示。

5.2 Fine-tuning LLM for RAG

在 RAG 模型中优化生成器是其体系结构的一个关键方面。生成器的作用是获取检索到的信息并生成相关文本,形成模型的最终输出。生成器的优化旨在确保生成的文本既自然又有效地利用检索到的文档来更好地满足用户的查询需求。

在标准 llm 生成任务中,输入通常由查询组成。RAG 不仅通过将检索器的查询以及各种检索到的文档(结构化/非结构化)合并到输入中脱颖而出。这种附加信息可以显着影响模型的理解,特别是对于较小的模型。在这种情况下,微调模型以适应查询和检索到的文档的输入变得至关重要。在向微调模型呈现输入之前,检索器检索到的文档通常会出现检索后处理。需要注意的是,RAG 中生成器的微调方法与 LLM 的一般微调方法一致。在下文中,我们将简要描述一些涉及数据(格式/未格式化)和优化函数的代表性作品。

General Optimization Process

作为一般优化过程的一部分,训练数据通常由输入输出对组成,旨在训练模型在给定输入 x 的情况下产生输出 y。在 Self-Mem [Cheng et al., 2023b] 的工作中,采用了传统的训练过程,给定输入 x,检索相关文档 z(选择论文中的 Top-1),并在集成 (x, z) 之后,模型生成输出 y。该论文利用两种常见的范式进行微调,即 Joint-Encoder 和 Dual-Encoder [Arora et al., 2023, Wang et al., 2022b, Lewis et al., 2020, Xia et al., 2019, Cai et al., 2021, Cheng et al., 2022]。

在 Joint-Encoder 范式中,使用了基于编码器-解码器的标准模型。在这里,编码器最初通过注意力机制对输入进行编码,解码器结合编码的结果以自回归方式生成标记。另一方面,在 DualEncoder 范式中,系统设置两个独立的编码器,每个编码器分别编码输入(查询、上下文)和文档。结果输出依次由解码器进行双向交叉注意处理。这两种架构都使用 Transformer [Vaswani et al., 2017] 作为基本块,并使用负对数似然损失进行优化。

Utilizing Contrastive Learning

在为语言模型准备训练数据阶段,通常会创建输入和输出的交互对。这种传统方法可能导致 "曝光偏差",其中模型仅在单个正确的输出示例上进行训练,从而限制了其暴露于一系列可能的输出引用序列。这种限制可以通过导致模型过度拟合训练集中的特定示例来阻碍模型的真实性能,从而降低其在各种上下文中的泛化能力。

为了减轻暴露偏差,SURGE [Kang et al., 2023] 提出使用图-文本对比学习。该方法包括一个对比学习目标,该目标提示模型生成一系列合理且连贯的响应,超出了训练数据中遇到的实例。这种方法对于减少过度拟合和加强模型泛化能力至关重要。

对于涉及结构化数据的检索任务,SANTA 框架 [Li et al., 2023d] 实现了一个三方训练方案来有效地封装结构和语义细微差别。初始阶段侧重于检索器,其中利用对比学习来细化查询和文档嵌入。

随后,生成器的初步训练阶段采用对比学习将结构化数据与其非结构化文档描述对齐。在生成器训练的进一步阶段,该模型承认实体语义在文本数据表示学习中用于检索的关键作用,如 [Sciavlino et al., 2021, Zhang et al., 2019] 所强调的那样。这个过程从结构化数据中识别实体开始,然后在生成器的输入数据中对这些实体应用掩码,从而设置模型预测和预测这些掩码元素的阶段。

训练方案通过模型学习通过利用上下文信息来重建掩码实体。该练习培养模型对文本数据的结构语义的理解,并促进结构化数据中相关实体的对齐。总体优化目标是训练语言模型来准确恢复被遮挡的跨度,从而丰富其对实体语义的理解[Ye等人,2020]。

6.Augmentation in RAG

本节围绕三个关键方面构建:增强阶段、增强数据的来源和增强过程。这些方面阐明了 RAG 开发的关键技术。RAG的核心组件的分类如下图所示。

 

6.1 RAG in Augmentation Stages

RAG 是一种知识密集型的工作,在语言模型训练的预训练、微调和推理阶段结合了各种技术方法。

Pre-training Stage

在预训练阶段,研究人员研究了通过基于检索的策略。REALM 模型采用结构化、可解释的知识嵌入方法、框架预训练和微调作为掩码语言模型 (MLM) 框架内的检索-然后预测工作流程 [Arora et al., 2023]。

RETRO [Borgeaud et al., 2022] 从头开始利用检索增强进行大规模预训练,实现了模型参数的减少,同时在困惑度方面超过了标准 GPT 模型。RETRO 将自己与一个额外的编码器区分开来,该编码器旨在根据 GPT 模型的基本结构处理从外部知识库检索到的实体的特征。

Atlas[Izacard等人,2022]在预训练和微调阶段也将检索机制合并到T5架构[Raffel等人,2020]中。它使用预训练的 T5 来初始化编码器-解码器语言模型和预训练的 Contriever 用于密集检索器,提高了其对复杂语言建模任务的效率。

此外,COG [Lan et al., 2022] 引入了一种新的文本生成方法,该方法模拟从预先存在的集合中复制文本片段。利用有效的向量搜索工具,COG 计算并索引文本片段的上下文有意义的表示,与 RETRO 相比,在问答和域适应等领域表现出卓越的性能。

标度律的出现促进了模型参数的增长,将自回归模型推向主流。研究人员正在将 RAG 方法扩展到预训练的更大模型,RETRO++ 通过在保留或提高性能的同时扩大模型参数来举例说明这一趋势 [Wang et al., 2023b]。

经验证据强调了文本生成质量、事实准确性、降低毒性和下游任务熟练程度的显着改进,尤其是在开放域 QA 等知识密集型应用中。这些结果表明,将检索机制集成到自回归语言模型的预训练中是一个很有前途的途径,将复杂的检索技术与扩展语言模型相结合,以产生更精确和有效的语言生成。

增强预训练的好处包括一个稳健的基础模型,该模型在困惑度、文本生成质量和特定任务性能方面优于标准 GPT 模型,所有这些都同时利用更少的参数。这种方法特别擅长处理知识密集型任务,并通过对专业语料库进行训练来促进特定领域模型的开发。

尽管如此,这种方法面临着挑战,例如广泛的预训练数据集和资源的必要性,以及随着模型大小的增加的更新频率减少。尽管有这些障碍,该方法在模型弹性方面提供了显著的优势。一旦经过训练,检索增强模型就可以独立于外部库进行操作,从而提高生成速度和操作效率。确定的潜在收益使这种方法成为人工智能和机器学习正在进行的调查和创新的一个引人注目的主题。

Fine-tuning Stage

RAG 和 Fine-tuning 是增强 LLM 的强大工具,将它们结合起来可以满足更具体的场景的需求。一方面,微调允许检索具有独特风格的文档,实现更好的语义表达并对齐查询和文档之间的差异。这确保了检索器的输出更适合手头的场景。另一方面,微调可以满足做出程式化和有针对性的调整的生成需求。此外,微调也可用于对齐检索器和生成器以提高模型协同作用。

微调检索器的主要目标是提高语义表示的质量,这是通过使用语料库直接微调嵌入模型来实现的 [Liu, 2023]。通过反馈信号将检索器的能力与 LLM 的偏好对齐,两者都可以更好地协调 [Yu et al., 2023b, Izacard et al., 2022, Yang et al., 2023b, Shi et al., 2023]。针对特定下游任务微调检索器可以提高适应性[cite]。任务不可知微调的引入旨在增强检索器在多任务场景中的通用性[Cheng et al., 2023a]。

微调生成器可能会导致输出更加程式化和定制。一方面,它允许专门适应不同的输入数据格式。例如,微调 LLM 以适应知识图谱的结构 [Kang et al., 2023]、文本对的结构 [Kang et al., 2023, Cheng et al., 2023b] 和其他特定结构 [Li et al., 2023d]。另一方面,通过构建指令数据集,可以要求 LLM 生成特定的格式内容。例如,在自适应或迭代检索场景中,LLM 被微调以生成内容,这将有助于确定下一步行动的时间 [Jiang et al., 2023b, Aasai et al., 2023]。

通过协同微调检索器和生成器,我们可以增强模型的泛化能力并避免单独训练它们时出现的过度拟合。然而,联合微调也会导致资源消耗增加。RA-DIT [Lin et al., 2023] 提出了一个轻量级的双指令调优框架,可以有效地向任何 LLM 添加检索能力。检索增强指令微调更新LLM,引导它更有效地利用检索到的信息而忽略分散注意力的内容

尽管它具有优势,但微调存在局限性,包括需要专门的数据集进行 RAG 微调和对显着计算资源的要求。但是,此阶段允许定制模型以适应特定的需求和数据格式,与预训练阶段相比可能会降低资源使用,同时仍然能够微调模型的输出样式。

总之,微调阶段对于将 RAG 模型适应特定任务至关重要,从而能够细化检索器和生成器。尽管资源和数据集需求带来了挑战,但这一阶段增强了模型对各种任务的通用性和适应性。因此,RAG 模型的战略微调是开发高效和有效的检索增强系统的关键组成部分。

Inference Stage

RAG 模型中的推理阶段是至关重要的,因为它涉及到与 llm 的广泛集成。传统的 RAG 方法,也称为 Naive RAG,涉及在这个阶段结合检索内容来指导生成过程。

为了克服 Naive RAG 的局限性,高级技术在推理过程中引入了更多上下文丰富的信息。DSP 框架 [Khattab et al., 2022] 利用 fronzen LM 和检索模型 (RM) 之间复杂的自然语言文本交换,丰富上下文,从而提高生成结果。PKG [Luo et al., 2023] 方法为 LLM 配备了知识引导模块,该模块允许在不修改 LM 的参数的情况下检索相关信息,从而实现更复杂的任务执行。CRAICL [Li et al., 2023b] 采用跨语言知识的同步检索来增强上下文,而 RECITE [Sun et al., 2022] 通过直接从 LLM 中采样段落来生成上下文。

在推理过程中进一步细化 RAG 过程的方法见,这些方法满足需要多步推理的任务。ITRG [Feng et al., 2023] 迭代地检索信息以识别正确的推理路径,从而提高任务的适应性。ITERRETGEN [Shao et al., 2023] 遵循迭代策略,在“检索增强生成”和“生成增强检索”之间交替的循环过程中合并检索和生成。对于非知识密集型 (NKI) 任务,PGRA [Guo et al., 2023] 提出了一个两阶段框架,从与任务无关的检索器开始,然后是提示引导的重新排序器来选择和优先考虑证据。相比之下,IRCOT [Trivedi et al., 2022] 将 RAG 与 Thought (CoT) 方法链相结合,将 CoT 引导的检索与检索知情的 CoT 过程交替,显着提高了 GPT-3 在各种问答任务中的表现。

本质上,这些推理阶段增强提供了轻量级、具有成本效益的替代方案,这些替代方案利用了预训练模型的能力,而无需进一步训练。主要优点是在保持静态 LLM 参数的同时,提供上下文相关的信息来满足特定的任务需求。然而,这种方法并非没有局限性,因为它需要细致的数据处理和优化,并且受到基础模型的内在能力的限制。为了有效地解决不同的任务需求,这种方法通常与步骤推理、迭代检索和自适应检索策略等程序优化技术配对。

6.2 Augmentation Source

RAG 模型的有效性受到数据源选择以进行增强的严重影响。不同层次的知识和维度需要不同的处理技术。它们分为 LLM 生成的非结构化数据、结构化数据和内容。具有不同增强方面的代表性RAG 研究的技术树如下图所示。以三种不同阴影着色的叶子表示使用各种类型的数据的增强: 非结构化数据、结构化数据和内容由 llm 生成。该图清楚地表明,最初,增强主要是通过非结构化数据实现的,例如纯文本。这种方法后来扩展到包括使用结构化数据(例如知识图)进行进一步改进。最近,研究的趋势越来越大,它利用 LLM 本身生成的内容进行检索和增强。

Augmented with Unstructured Data 

非结构化文本是从语料库中收集的,例如用于微调大型模型的提示数据 [Cheng et al., 2023a] 和跨语言数据 [Li et al., 2023b]。检索单元因标记(例如,kNN-LM [Khandelwal et al., 2019])到短语(例如 NPM、COG [Lee et al., 2020, Lan et al., 2022])和文档段落而异,粒度更细的,以更高的检索复杂度为代价提供精度。

FLARE [Jiang et al., 2023b] 引入了主动检索方法,由 LM 生成低概率词触发。它创建了一个用于文档检索的临时句子,然后使用检索到的上下文重新生成句子以预测后续句子。RETRO 使用前一个块在块级别检索最近邻,结合前一个块的上下文,它指导下一个块的生成。为了保留因果关系,下一个块 Ci 的生成仅利用前一个块 N (Ci−1) 的最近邻,而不是 N (Ci)。

Augmented with Structured Data

结构化数据,例如知识图 (KG),提供高质量的上下文并减轻模型幻觉。RET-LLM [Modarressi et al., 2023] 从过去的对话中构建知识图记忆以供将来参考。SUGRE [Kang et al., 2023] 使用图神经网络 (GNN) 对相关的 KG 子图进行编码,通过多模态对比学习确保检索到的事实和生成文本之间的一致性。KnowledGPT [Wang et al., 2023d] 生成 KB 搜索查询并将知识存储在个性化基础中,增强了 RAG 模型的知识丰富度和上下文性。

LLMs-Generated Content in RAG

针对 RAG 中外部辅助信息的局限性,一些研究侧重于利用 llm 的内部知识。SKR [Wang et al., 2023e] 将问题分类为已知或未知,选择性地应用检索增强。GenRead [Yu et al., 2022] 用 LLM 生成器替换检索器,发现 LLM 生成的上下文通常包含更准确的答案,因为与因果语言建模的预训练目标更好地对齐。Selfmem [Cheng et al., 2023b] 使用检索增强生成器迭代地创建一个无界内存池,使用内存选择器来选择作为原始问题对偶问题的输出,从而自我增强生成模型。

这些方法强调了RAG中创新数据源利用的广度,努力提高模型性能和任务有效性。

6.3 Augmentation Process

在 RAG 领域,标准做法通常涉及单数检索步骤和生成,这可能会导致效率低下。当单个检索产生可能稀释或矛盾基本信息的冗余内容时,就会出现一个值得注意的问题,称为 "中间丢失" 现象,从而降低生成质量 [Liu et al., 2023a]。此外,这种奇异检索通常不足以满足需要多步推理的复杂问题,因为它提供了有限的信息范围 [Yoran et al., 2023]。

如上图所示,为了规避这些挑战,当代研究提出了改进检索过程的方法:迭代检索、递归检索和自适应检索。迭代检索允许模型参与多个检索周期,增强获得的信息的深度和相关性。递归检索过程,其中一个检索操作的结果被用作后续检索的输入。它有助于深入研究相关信息,特别是在处理复杂或多步查询时。递归检索通常用于需要逐步方法才能收敛到最终答案的场景,例如学术研究、法律案例分析或某些类型的数据挖掘任务。另一方面,自适应检索提供了一种动态调整机制,根据不同任务和上下文的特定需求定制检索过程。

Iterative Retrieval

RAG 模型中的迭代检索是一个基于初始查询和到目前为止生成的文本重复收集文档的过程,为 llm提供了更全面的知识库[Borgeaud等人,2022,Arora等人2023]。这种方法已被证明可以通过多次检索迭代提供额外的上下文引用来增强后续答案生成的鲁棒性。然而,它可能会受到语义不连续和不相关信息的积累的影响,因为它通常依赖于 n 个标记的序列来划分生成的文本和检索到的文档之间的边界。

为了解决特定的数据场景,使用了递归检索和多跳检索技术。递归检索涉及结构化索引以分层方式处理和检索数据,这可能包括在此摘要执行检索之前汇总文档或冗长 PDF 的部分。随后,文档中的二次检索细化搜索,体现过程的递归性质。相比之下,多跳检索旨在更深入地研究图结构数据源,提取互连信息 [Li et al., 2023c]。

此外,一些方法集成了检索和生成的步骤。ITER-RETGEN [Shao et al., 2023] 采用协同方法,利用 "检索增强生成" 和 "生成增强检索" 来完成需要复制特定信息的任务。该模型利用解决输入任务所需的内容作为检索相关知识的上下文基础,这反过来又有助于在后续迭代中生成改进的响应。

Recursive Retrieval

递归检索通常用于信息检索和 NLP,以提高搜索结果的深度和相关性。该过程涉及根据先前搜索获得的结果迭代地细化搜索查询。递归检索旨在通过反馈回路逐渐收敛到最相关的信息来增强搜索体验。IRCoT [Trivedi et al., 2022] 使用思维链来指导检索过程并使用获得的检索结果细化 CoT。ToC [Kim et al., 2023] 创建了一个澄清树,系统地优化了 Query 中的歧义部分。在复杂搜索场景中,用户的需求从一开始就不完全清楚,或者所寻求的信息是高度专业化或微妙的。该过程的递归性质允许对用户的需求进行持续学习和适应,通常会导致对搜索结果的满意度提高。

Adaptive Retrieval

自适应检索方法,如 Flare 和 SelfRAG [Jiang et al., 2023b, Asai et al., 2023],通过使 LLM 能够主动确定检索的最佳矩和内容来细化 RAG 框架,从而提高信息来源的效率和相关性。

这些方法是更广泛的趋势的一部分,其中 LLM 在操作中使用主动判断,如 AutoGPT、Toolformer 和 Graph-Toolformer 等模型代理所示 [Yang et al., 2023c, Schick et al., 2023, Zhang, 2023]。例如,Graph-Toolformer 将其检索过程划分为 LLM 主动使用检索器的不同步骤,应用 Self-Ask 技术,并使用少样本提示来发起搜索查询。这种主动立场允许 LLM 决定何时搜索必要的信息,类似于代理如何利用工具。

WebGPT [Nakano et al., 2021] 集成了强化学习框架,用于在文本生成期间使用搜索引擎自主训练 GPT-3 模型。它使用特殊标记来导航此过程,这些标记有助于搜索引擎查询、浏览结果和引用引用引用引用等操作,从而通过使用外部搜索引擎扩展 GPT-3 的能力。

Flare 通过监控生成过程的置信度来自动化时间检索,如生成术语的概率所示 [Jiang et al., 2023b]。当概率低于某个阈值时,会激活检索系统来收集相关信息,从而优化检索周期。

Self-RAG [Asai et al., 2023] 引入了 "反射标记",允许模型引入其输出。这些标记有两种变体:"检索" 和 "批评"。该模型自主决定何时激活检索,或者预定义的阈值可能会触发该过程。在检索过程中,生成器跨多个段落进行片段级波束搜索,以得出最连贯的序列。评论家分数用于更新细分分数,可以灵活地在推理过程中调整这些权重,定制模型的行为。Self-RAG 的设计避免了需要额外的分类器或依赖自然语言推理 (NLI) 模型,从而简化了何时进行检索机制和改进模型的自主判断能力在生成准确响应时的决策过程。

LLM优化因其日益流行而受到广泛关注。提示工程、微调 (FT) 和 RAG 等技术具有不同的特征,如上图所示。虽然提示工程利用了模型的固有能力,但优化 LLM 通常需要应用 RAG 和 FT 方法。RAG 和 FT 之间的选择应该基于场景的具体要求和每种方法的固有属性。RAG 和 FT 的详细比较如 Table 1 所示。

6.4 RAG vs Fine-Tuning 

RAG 就像给模型一个教科书,用于量身定制的信息检索,非常适合特定的查询。另一方面,FT 就像学生随着时间的推移内化知识,更适合复制特定的结构、风格或格式。FT 可以通过加强基础模型知识、调整输出和教学复杂指令来提高模型的性能和效率。然而,整合新知识或快速迭代新的用例并不好。

这两种方法 RAG 和 FT 并不是相互排斥的,可以是相辅相成的,在不同的层次上增强了模型的能力。在某些情况下,它们的组合使用可能会产生最佳性能。涉及 RAG 和 FT 的优化过程可能需要多次迭代才能获得满意的结果。

7.RAG Evaluation

RAG 在自然语言处理 (NLP) 领域的快速发展和日益增长的采用推动了 RAG 模型对 llm 社区研究的前沿的评估。该评估的主要目标是理解和优化 RAG 模型在不同应用场景下的性能。

从历史上看,RAG 模型评估以它们在特定下游任务中的执行为中心。这些评估采用了适合手头任务的既定指标。例如,问答评估可能取决于 EM 和 F1 分数 [Wang et al., 2023a, Shi et al., 2023, Feng et al., 2023, Ma et al., 2023a],而事实检查任务通常取决于准确性作为主要指标 [Lewis et al., 2020, Izacard et al., 2022, Shao et al., 2023]。RALLE 等工具专为 RAG 应用程序的自动评估而设计,同样将它们的评估基于这些任务特定的指标 [Hoshi et al., 2023]。尽管如此,很少有研究致力于评估 RAG 模型的不同特征,只有少数相关研究。

以下部分将重点从特定于任务的评估方法和指标转移到基于其独特属性对现有文献进行综合。这种探索涵盖了 RAG 评估的目标、评估这些模型的各个方面以及可用于此类评估的基准测试和工具。目的是全面概述 RAG 模型评估,概述专门解决这些高级生成系统独特方面的方法。

7.1 Evaluation Targets

RAG 模型的评估主要围绕两个关键部分展开:检索和生成模块。这种划分确保了对所提供的上下文质量和产生的内容质量的全面评估。

Retrieval Quality

评估检索质量对于确定检索器组件来源的上下文的有效性至关重要。采用搜索引擎、推荐系统和信息检索系统领域的标准指标来衡量 RAG 检索模块的性能。为此,通常使用命中率、MRR 和 NDCG 等指标 [Liu, 2023, Nguyen, 2023]。

Generation Quality

生成质量中心的评估在于生成器从检索到的上下文中合成连贯和相关的答案的能力。该评估可以根据内容的目标进行分类:未标记和标记的内容。对于未标记的内容,评估包括生成答案的忠实度、相关性和非危害。相比之下,对于标记内容,重点是生成的信息的准确性模型 [Liu, 2023]。此外,检索和生成质量评估都可以通过手动或自动评估方法进行 [Liu, 2023, Lan et al., 2022, Leng et al., 2023]。

7.2 Evaluation Aspects

RAG 模型的当代评估实践强调三个主要质量分数和四个基本能力,共同告知 RAG 模型的两个主要目标的评估:检索和生成。

Quality Scores

质量分数包括上下文相关性、答案忠实度和答案相关性。这些质量分数从信息检索和生成过程中的不同角度评估 RAG 模型的有效性[Es et al., 2023, Saad-Falcon et al., 2023, Jarvis和Allard, 2023]。质量分数——上下文相关性、答案忠实度和答案相关性——从信息检索和生成过程的各种角度评估RAG模型的效率[Es et al., 2023, Saad-Falcon et al., 2023, Jarvis和Allard, 2023]。

上下文相关性评估检索到的上下文的精度和特异性,确保相关性和最小化与无关内容相关的处理成本。

答案忠实性确保生成的答案对检索到的上下文保持真实,保持一致性以及避免矛盾。

答案相关性要求生成的答案与提出的问题直接相关,有效地解决了核心查询。

Required Abilities

RAG 评估还包括四个能力,表明其适应性和效率:噪声鲁棒性、负拒绝、信息整合和反事实鲁棒性 [Chen et al., 2023b, Liu et al., 2023b]。这些能力对于模型在各种挑战和复杂的场景下的性能至关重要,从而影响质量分数。

噪声鲁棒性评估模型管理与问题相关但缺乏实质性信息的噪声文档的能力。

负拒绝评估模型在检索到的文档不包含回答问题的必要知识时避免响应的识别。

信息集成评估模型从多个文档中合成信息的能力以解决复杂问题。

反事实稳健性测试模型识别和忽略文档中已知不准确的能力,即使指示潜在的错误信息。

上下文相关性和噪声鲁棒性对于评估检索质量很重要,而答案忠实度、答案相关性、负拒绝、信息集成和反事实鲁棒性对于评估生成质量很重要。

每个评估方面的具体指标总结在下表中。必须认识到这些指标源自相关工作,是传统措施,尚未代表一种成熟或标准化的量化 RAG 评估方面的方法。在一些评估研究中也开发了针对 RAG 模型的细微差别量身定制的自定义指标,尽管不包括在这里。

7.3 Evaluation Benchmarks and Tools 

本节介绍 RAG 模型的评估框架,包括基准测试和自动评估工具。这些仪器提供了定量指标,不仅可以衡量 RAG 模型性能,还可以增强模型在各种评估方面的能力的理解。RGB 和 RECALL [Chen et al., 2023b, Liu et al., 2023b] 等突出基准侧重于提高 RAG 模型的基本能力。同时,最先进的自动化工具,如 RAGAS [Es et al., 2023]、ARES [Saad-Falcon et al., 2023] 和 TruLens8 使用 LLM 来判断质量分数。这些工具和基准共同形成了一个稳健的框架,用于对RAG模型进行系统评估,如下表所示。

8.Future Prospects

本节探讨了 RAG 的三个未来前景: 未来的挑战、模态扩展和 RAG 生态系统。

8.1 Future Challenges of RAG

尽管RAG技术取得了相当大的进展,但仍有一些挑战有待深入研究:

上下文长度。RAG 的功效受到大型语言模型 (LLM) 的上下文窗口大小的限制。平衡太短、风险不足、信息稀释太长、风险信息稀释的窗口之间的权衡是至关重要的。随着不断努力将 LLM 上下文窗口扩展到几乎无限的大小,RAG 对这些变化的适应提出了一个重要的研究问题[Xu et al., 2023c, Packer et al., 2023,肖等人2023]。

稳健性。检索过程中噪声或矛盾信息的存在会对 RAG 的输出质量产生不利影响。这种情况被比喻地称为 "Misinformation" 可以比根本没有信息更糟糕。提高 RAG 对这种对抗性或反事实输入的抵抗力正在获得研究动量,并已成为关键性能指标[Yu等人、2023a、Glass等人,2021、Baek等人、2023]。

混合方法 (RAG+FT)。将 RAG 与微调相结合正在成为领先策略。确定 RAG 的最佳集成和微调顺序、交替还是通过端到端联合训练——以及如何利用参数化和非参数化的优势是探索领域的成熟[Lin et al., 2023]。

扩展 LLM 角色。除了生成最终答案之外,LLM 也被用于 RAG 框架内的检索和评估。识别在 RAG 系统中进一步解锁 llm 潜力的方法是越来越多的研究方向。

缩放定律。虽然 LLM 建立了缩放定律 [Kaplan et al., 2020],但它们对 RAG 的适用性仍未确定。初步研究 [Wang et al., 2023b] 已经开始解决这个问题,但 RAG 模型中的参数数量仍然落后于 LLM 的参数计数。逆缩放定律 9 的可能性,其中较小的模型优于较大的模型,特别有趣,值得进一步研究。

生产阅读 RAG。RAG 的实用性和与工程要求的对齐促进了它的采用。然而,提高检索效率,提高大型知识库的文档召回率,并确保数据安全——例如防止 llm 对文档源或元数据的无意披露——是仍有待解决的关键工程挑战[Alon等人,2022]。

Modality Extension of RAG

RAG 超越了它最初的基于文本的问答范围,采用了各种模态数据。这种扩展催生了创新的多模态模型,该模型将 RAG 概念集成到各个领域:

图像。RA-CM3 [Yasunaga et al., 2022] 是检索和生成文本和图像的开创性多模态模型。BLIP-2 [Li et al., 2023a] 利用冻结图像编码器和 LLM 进行有效的视觉语言预训练,从而实现零样本图像到文本的转换。“在您编写之前可视化”方法 [Zhu et al., 2022] 使用图像生成来引导 LM 的文本生成,在开放式文本生成任务中显示出前景。

音频和视频。GSS 方法检索和拼接音频片段,将机器翻译的数据转换为语音翻译数据 [Zhao et al., 2022]。UEOP通过结合用于语音到文本转换的外部离线策略,标志着端到端自动语音识别的重大进步[Chan等人,2023]。此外,基于 KNN 的注意力融合利用音频嵌入和语义相关的文本嵌入来改进 ASR,从而加速域适应。Vid2Seq 使用专门的时间标记来增强语言模型,促进在统一的输出序列中预测事件边界和文本描述 [Yang et al., 2023a]。

代码。RPS [Nashid et al., 2023] 通过编码和频率分析检索与开发人员目标对齐的代码示例,在小规模学习任务方面表现出色。这种方法已经证明了在测试断言生成和程序修复等任务中的有效性。对于结构化知识,CoK 方法 [Li et al., 2023c] 首先从知识图谱中提取与输入查询相关的事实,然后将这些事实整合为输入中的提示,提高知识图谱问答任务的性能。

8.2 Ecosystem of RAG

Downstream Tasks and Evaluation

RAG 在用处理复杂查询的能力丰富语言模型并通过利用广泛的知识库产生详细响应方面显示出相当大的前景。经验证据表明 RAG 在各种下游任务中表现出色,包括开放式问答和事实验证。RAG的集成不仅提高了响应的精度和相关性,还提高了它们的多样性和深度。

RAG 在多个领域的可扩展性和多功能性值得进一步研究,特别是在医学、法律和教育等专业领域。这些领域,与传统的专业领域知识问答微调方法相比,RAG 可能会降低训练成本并提高性能。

同时,改进 RAG 的评估框架对于最大化其在不同任务中的有效性和实用性至关重要。这需要开发细微的指标和评估工具,这些工具可以衡量上下文相关性、内容创造力和非男性性等方面。

此外,提高 RAG 驱动模型的可解释性仍然是一个关键目标。这样做将使用户能够理解模型生成的响应背后的推理,从而促进 RAG 应用程序使用的信任和透明度。

Technical Stack

RAG 生态系统的发展受到其技术堆栈进展的极大影响。LangChain 和 LLamaIndex 等关键工具随着 ChatGPT 的出现迅速普及,提供了广泛的 RAG 相关 API,并在 LLM 领域变得至关重要。

新兴的技术堆栈,虽然不像 LangChain 和 LLamaIndex 那样具有特征丰富,但将自己与专门的产品区分开来。例如,Flowise AI10 优先考虑低代码方法,使用户能够通过用户友好的拖放界面部署 AI 应用程序,包括 RAG。HayStack、Meltano11 和 Cohere Cora12 等其他技术也因其对该领域的独特贡献而受到关注。

除了以 AI 为中心的提供商之外,传统的软件和云服务提供商正在扩展他们的产品以包括以 RAG 为中心的服务。Weaviate 中的 Verba13 旨在用于个人助理应用程序,而 Amazon 的 Kondra14 提供了智能企业搜索服务,允许用户使用内置连接器在各种内容存储库中导航。在RAG技术景观的演变过程中,对不同专业化有明显的分歧,如:1)定制。定制RAG以满足特定的要求。2)简化。使RAG更容易使用,从而减少初始学习曲线。3)专业化。改进RAG更有效地服务于生产环境。

RAG 模型及其技术堆栈的相互增长是显而易见的;技术进步始终为现有基础设施建立新的标准。反过来,对技术堆栈的增强推动了 RAG 功能的演变。RAG 工具包正在收敛到一个基础技术堆栈,为高级企业应用程序奠定了基础。然而,完全集成的、全面的平台的概念仍处于地平线上,等待进一步的创新和发展。

9.Conclusion

本文的摘要如下图所示,突出了 RAG 通过将语言模型的参数化知识与来自外部知识库的广泛非参数化数据相结合来增强 LLM 的能力的重大进步。我们的调查说明了 RAG 技术的演变及其对知识密集型任务的影响。我们的分析描绘了 RAG 框架内的三种发展范式:Naive、Advanced 和 Modular RAG,每个范式都标记了对其前辈的渐进式增强。高级 RAG 范式通过结合复杂的架构元素(包括查询重写、块重新排序和提示摘要)超越了 Naive 方法。这些创新导致了一个更微妙和模块化的架构,增强了 llm 的性能和可解释性。RAG 与其他 AI 方法(例如微调和强化学习)的技术集成进一步扩展了其能力。在内容检索中,利用结构化和非结构化数据源的混合方法正在成为一种趋势,提供了更丰富的检索过程。RAG 框架内的前沿研究正在探索新概念,例如从 LLM 的自检索和信息检索的动态时间。

尽管 RAG 技术取得了进步,但研究机会在提高其鲁棒性和管理扩展上下文的能力方面受到限制。RAG 的应用范围也扩展到多模态领域,使其原则能够解释和处理不同的数据形式,如图像、视频和代码。这种扩展强调了 RAG 对 AI 部署的重要实际意义,引起了学术界和工业界的兴趣。RAG不断增长的生态系统得到了以 RAG 为中心的 AI 应用的增加和支持工具的持续发展所强调。然而,随着 RAG 的应用格局的扩展,必须改进评估方法以跟上其演变。确保性能评估仍然准确,代表性对于捕获 RAG 对 AI 研究和开发社区的贡献的全部范围至关重要。

Tips:

参考文献: arxiv abs/2312.10997 

相关推荐

  1. RAG(检索增强生成)在LLM(大型语言模型)中应用

    2024-03-09 23:26:01       23 阅读
  2. 大型语言模型智能助手:检索增强生成RAG

    2024-03-09 23:26:01       20 阅读
  3. 克服大型语言模型幻觉使用检索增强生成RAG

    2024-03-09 23:26:01       18 阅读
  4. 克服大型语言模型幻觉使用检索增强生成RAG

    2024-03-09 23:26:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-09 23:26:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-09 23:26:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-09 23:26:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-09 23:26:01       20 阅读

热门阅读

  1. 微服务-高级篇

    2024-03-09 23:26:01       25 阅读
  2. 我的第一个python web 网站

    2024-03-09 23:26:01       24 阅读
  3. Python爬虫利器

    2024-03-09 23:26:01       20 阅读
  4. 移动端开发之uni-app开发规范说明

    2024-03-09 23:26:01       21 阅读
  5. HTML 02

    HTML 02

    2024-03-09 23:26:01      18 阅读
  6. Spring Authorization Server简介

    2024-03-09 23:26:01       20 阅读