【RAG】同济大学发布RAG综述

RAG for LLM

​ 大型语言模型 (LLM) 展现出令人印象深刻的功能,但也面临幻觉、知识过时以及不透明、无法追踪的推理过程等挑战。检索增强生成 (RAG) 通过整合来自外部数据库的知识,已成为一种有前途的解决方案。这提高了生成的准确性和可信度,特别是对于知识密集型任务,并允许持续更新知识和集成特定领域信息。RAG 协同将 LLM 的内在知识与外部数据库的庞大动态存储库合并。

image-20240818155209492

​ 大模型时代下 RAG 的发展轨迹呈现出几个明显的阶段性特征。 最初,RAG 的诞生恰逢 Transformer 架构的兴起,专注于通过预训练模型 (PTM) 整合额外知识来增强语言模型。这一早期阶段的特点是基础性工作旨在改进预训练技术。随后 ChatGPT 的出现标志着一个关键时刻,LLM 展示了强大的情境学习 (ICL) 能力。RAG 研究转向在推理阶段为 LLM 提供更好的信息以回答更复杂、知识密集型的任务,从而导致 RAG 研究的快速发展。随着研究的进展,RAG 的增强不再局限于推理阶段,而是开始更多地融入 LLM 微调技术。

思维导图

image-20240818211630533

基础概念和范式

​ 图 2 展示了 RAG 的一个典型应用。 在这里,用户向 ChatGPT 提出一个关于最近被广泛讨论的新闻的问题。鉴于 ChatGPT 依赖预训练数据,它最初缺乏提供最新动态更新的能力。RAG 通过从外部数据库获取和整合知识来弥补这一信息差距。在这种情况下,它收集与用户查询相关的新闻文章。这些文章与原始问题相结合,形成了一个全面的提示,使 LLM 能够生成一个充分了解的答案。

image-20240818163019826

​ RAG 研究范式在不断发展,作者将其分为三个阶段:Naive RAG、Advanced RAG 和 Modular RAG,如图 3 所示。尽管 RAG 方法具有成本效益并且超越了原生 LLM 的性能,但它们也表现出一些局限性。 Advanced RAG 和 Modular RAG 的开发是对 Naive RAG 中这些特定缺点的回应

image-20240818171902491

RAG三种范式对比。(左)Naive RAG主要由索引、检索和生成三部分组成。(中)Advanced RAG围绕预检索和后检索提出了多种优化策略,流程与Naive RAG类似,但仍然遵循链式结构。(右)模块化RAG继承并发展了上一范式,整体上表现出更大的灵活性,具体表现在引入多个具体的功能模块和对已有模块的替换,整体流程不局限于顺序检索和生成,还包括迭代检索、自适应检索等方法。

Naive RAG

​ Naive RAG 遵循传统的流程,包括索引、检索和生成,也称为“检索-阅读”框架 .

  • 索引

​ 从清理和提取 PDF、HTML、Word 和 Markdown 等各种格式的原始数据开始,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小、更易理解的块。然后使用嵌入模型将块编码为向量表示并存储在向量数据库中。此步骤对于在后续检索阶段实现高效的相似性搜索至关重要。

  • 检索

​ 收到用户查询后,RAG 系统采用与索引阶段相同的编码模型将查询转换为向量表示。 然后,它计算查询向量与索引语料库中的块向量之间的相似度得分。 系统优先考虑并检索与查询最相似的前 K 个块。这些块随后用作提示中的扩展上下文。

  • 生成

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

然而,朴素 RAG 遇到了明显的缺点

  • 检索挑战

​ 检索阶段通常在精度和召回率方面存在困难,导致选择错位或不相关的块,并丢失关键信息。

  • 生成困难

​ 在生成响应时,模型可能会面临幻觉问题,即它生成的内容不受检索到的上下文支持。此阶段还可能受到输出中的不相关性、毒性或偏见的影响,从而降低响应的质量和可靠性。

  • 增强障碍

​ 将检索到的信息与不同的任务相结合可能具有挑战性,有时会导致脱节或不连贯的输出。当从多个来源检索到类似信息时,该过程也可能遇到冗余,从而导致重复响应。确定各个段落的重要性和相关性并确保风格和语调的一致性进一步增加了复杂性。 面对复杂的问题,基于原始查询的单一检索可能不足以获取足够的上下文信息。 此外,人们担心生成模型可能过度依赖增强信息,导致输出只是重复检索到的内容,而不会添加有见地或综合的信息。

Advanced RAG

​ Advanced RAG 引入了特定的改进来克服 Naive RAG 的局限性。它专注于提高检索质量,采用了预检索和后检索策略。为了解决索引问题,Advanced RAG 通过使用滑动窗口方法、细粒度分段和元数据合并来改进其索引技术。此外,它还采用了多种优化方法来简化检索过程

  • Pre-retrieval process

​ 在此阶段,主要关注优化索引结构和原始查询。 优化索引的目标是提高被索引内容的质量。这涉及的策略包括:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。而查询优化的目标是使用户的原始问题更清晰,更适合检索任务。常用方法包括查询重写、查询转换、查询扩展和其他技术

  • Post-Retrieval Process

​ 一旦检索到相关上下文,将其有效地与查询集成至关重要。检索后阶段的主要方法包括重新排序块和上下文压缩。对检索到的信息重新排序以将最相关的内容重新定位到提示的边缘是一项关键策略。这一概念已在 LlamaIndex2、LangChain3 和 HayStack 等框架中实现。 将所有相关文档直接输入 LLM 可能会导致信息过载,用不相关的内容稀释对关键细节的关注。为了缓解这种情况,检索后的工作应集中于选择必要的信息、强调关键部分以及缩短要处理的上下文。

Modular RAG

​ 模块化 RAG 架构超越了前两种 RAG 范式,提供了增强的适应性和多功能性。它采用了多种策略来改进其组件,例如添加用于相似性搜索的搜索模块以及通过微调来优化检索器。为了应对特定挑战,引入了重组 RAG 模块 和重新排列 RAG 管道 等创新。向模块化 RAG 方法的转变正在变得普遍,它支持其组件之间的顺序处理和集成端到端训练。尽管模块化 RAG 与众不同,但它建立在高级和简单 RAG 的基本原则之上,体现了 RAG 家族的进步和完善。

  • new modules

​ 模块化 RAG 框架引入了额外的专用组件来增强检索和处理能力。搜索模块可适应特定场景,使用 LLM 生成的代码和查询语言直接搜索各种数据源(如搜索引擎、数据库和知识图谱)。RAGFusion 通过采用多查询策略将用户查询扩展到不同的视角,利用并行向量搜索和智能重新排序来发现显性知识和变革性知识,从而解决了传统搜索的局限性 。记忆模块利用 LLM 的记忆来指导检索,创建一个无界的记忆池,通过迭代自我增强使文本与数据分布更紧密地对齐 。RAG 系统中的路由浏览各种数据源,为查询选择最佳路径,无论是涉及摘要、特定数据库搜索还是合并不同的信息流 。预测模块旨在通过 LLM 直接生成上下文来减少冗余和噪音,确保相关性和准确性 。最后,任务适配器模块使 RAG 适应各种下游任务,自动对零样本输入进行快速检索,并通过少量查询生成创建特定于任务的检索器 。这种综合方法不仅简化了检索过程,而且显着提高了检索信息的质量和相关性,从而以更高的精度和灵活性满足了广泛的任务和查询。

  • new patterns

​ 模块化 RAG 允许模块替换或重新配置以应对特定挑战,从而提供卓越的适应性。这超越了 Naive 和 Advanced RAG 的固定结构,后者的特点是简单的“检索”和“读取”机制。此外,模块化 RAG 通过集成新模块或调整现有模块之间的交互流程来扩展这种灵活性,从而增强其在不同任务中的适用性。

​ 诸如重写-检索-读取 模型之类的创新利用 LLM 的功能,通过重写模块和 LM 反馈机制来改进检索查询,以更新重写模型,从而提高任务性能。 同样,诸如 Generate-Read 之类的方法用 LLM 生成的内容取代了传统的检索,而 ReciteRead 则强调从模型权重中进行检索,从而增强了模型处理知识密集型任务的能力。 混合检索策略集成了关键字、语义和向量搜索,以满足不同的查询。此外,采用子查询和假设文档嵌入 (HyDE)旨在通过关注生成的答案和真实文档之间的嵌入相似性来提高检索相关性。

​ 模块排列和交互的调整,例如演示-搜索-预测 (DSP) 框架和 ITERRETGEN的迭代检索-读取-检索-读取流程,展示了模块输出的动态使用以支持另一个模块的功能,说明了对增强模块协同作用的深刻理解。 模块化 RAG 流的灵活编排展示了通过 FLARE 和 Self-RAG 等技术进行自适应检索的好处。这种方法通过根据不同场景评估检索的必要性,超越了固定的 RAG 检索过程。灵活架构的另一个好处是 RAG 系统可以更轻松地与其他技术(如微调或强化学习)集成。例如,这可能涉及对检索器进行微调以获得更好的检索结果,对生成器进行微调以获得更加个性化的输出,或者进行协作微调

RAG vs Fine-tuning

image-20240818172424793

​ 由于 LLM 的日益普及,其增强引起了广泛关注。在 LLM 的优化方法中,RAG 经常与微调 (FT) 和 prompt 工程进行比较。每种方法都有不同的特点,如图 4 所示。作者使用象限图从两个维度说明三种方法之间的差异:外部知识需求和模型适应要求。prompt 工程利用模型的固有能力,对外部知识和模型适应的需求最小。RAG 可以比作为模型提供量身定制的信息检索教科书,非常适合精确的信息检索任务。相比之下,FT 就像学生随着时间的推移内化知识,适用于需要复制特定结构、样式或格式的场景。

​ RAG 在动态环境中表现出色,提供实时知识更新和有效利用具有高可解释性的外部知识源。然而,它具有更高的延迟和数据检索方面的道德考虑。另一方面,FT 更为静态,需要重新训练以进行更新,但可以对模型的行为和风格进行深度定制。它需要大量的计算资源来准备和训练数据集,虽然它可以减少幻觉,但它可能会面临不熟悉数据的挑战。 在对不同主题的各种知识密集型任务的表现进行的多次评估中,虽然无监督微调显示出一些改进,但 RAG 的表现始终优于它,无论是在训练期间遇到的现有知识还是全新的知识。此外,研究发现,LLM 很难通过无监督微调来学习新的事实信息。

​ RAG 和 FT 之间的选择取决于应用环境中对数据动态、定制和计算能力的特定需求。RAG 和 FT 并不相互排斥,可以相互补充,在不同层面上增强模型的能力。 在某些情况下,它们的结合使用可以带来最佳性能。涉及 RAG 和 FT 的优化过程可能需要多次迭代才能获得令人满意的结果。

关于检索

涉及到检索源、检索粒度、检索的预处理、选择相应的embedding模型等几个关键问题。

Retrieval Source

RAG依赖外部知识来增强LLM,而检索源的类型和检索单元的粒度都会影响最终的生成结果。

Data Structure

​ 最初,文本是检索的主流来源。随后,检索源扩展到包括半结构化数据(PDF)和结构化数据(知识图谱,KG)以进行增强。除了从原始的外部来源检索外,最近的研究也越来越倾向于利用 LLM 本身生成的内容进行检索和增强。

  • 非结构化数据(如文本)

​ 是最广泛使用的检索源,主要通过语料库获取。对于开放域问答(ODQA)任务,主要的检索源是Wikipedia Dump,目前主要版本包括HotpotQA 4(2017年10月1日)、DPR5(2018年12月20日)。除了百科全书数据,常见的非结构化数据还包括跨语言文本和领域特定数据。

  • 半结构化数据

​ 通常指包含文本和表格信息组合的数据,如PDF。处理半结构化数据对传统RAG系统提出了挑战,主要有两个原因。首先,文本拆分过程可能会无意中分离表格,导致检索过程中数据损坏。其次,将表格合并到数据中会使语义相似性搜索复杂化。处理半结构化数据时,一种方法是利用 LLM 的代码功能对数据库中的表执行 Text-2-SQL 查询,例如 TableGPT , 或者,可以使用基于文本的方法将表转换为文本格式,以便进一步分析。然而,这两种方法都不是最佳解决方案,这表明该领域存在大量的研究机会

  • 结构化数据

​ 例如知识图谱 (KG) ,通常经过验证并且可以提供更精确的信息。KnowledGPT 生成 KB 搜索查询并将知识存储在个性化库中,从而增强了 RAG 模型的知识丰富性。针对 LLM 在理解和回答文本图问题方面的局限性,G-Retriever 集成了图神经网络 (GNN)、LLM 和 RAG,通过对 LLM 的软提示增强了图理解和问答能力,并采用了 Prize-Collecting Steiner Tree (PCST) 优化问题进行有针对性的图检索。相反,它需要额外的努力来构建、验证和维护结构化数据库。

  • LLM 生成的内容

​ 为了解决 RAG 中外部辅助信息的局限性,一些研究集中于利用 LLM 的内部知识。SKR 将问题分为已知或未知,有选择地应用检索增强。 GenRead用 LLM 生成器替换了检索器,发现 LLM 生成的上下文通常包含更准确的答案,因为它们与因果语言建模的预训练目标更加一致。 Selfmem使用检索增强生成器迭代地创建一个无界内存池,使用内存选择器选择作为原始问题的对偶问题的输出,从而自我增强生成模型。 这些方法强调了 RAG 中创新数据源利用的广度,致力于提高模型性能和任务效率。

Retrieval Granularity

​ 除了检索源的数据格式之外,另一个重要因素是检索数据的粒度。粗粒度的检索单元理论上可以提供与问题更相关的信息,但它们也可能包含冗余内容,这可能会分散检索器和下游任务中的语言模型的注意力。另一方面,细粒度的检索单元粒度增加了检索的负担,并且不能保证语义的完整性和满足所需的知识。在推理过程中选择合适的检索粒度可以是一种简单有效的策略,可以提高密集检索器的检索和下游任务的性能。

​ 在文本中,检索粒度从细到粗,包括Token、Phrase、Sentence、Proposition、Chunk、Document。其中,DenseX 提出了使用命题作为检索单位的概念。命题被定义为文本中的原子表达式,每个命题都封装了一个独特的事实片段,并以简洁、自成体系的自然语言格式呈现。这种方法旨在提高检索的精度和相关性。在知识图谱 (KG) 上,检索粒度包括实体、三元组和子图。 检索的粒度也可以适应下游任务,例如在推荐任务中检索项目 ID 和句子对。详细信息如表 1 所示。

image-20240818185057222

Indexing Optimization

​ 在Indexing阶段,文档会被处理、切分,并转化为Embedding存入向量库。索引构建的好坏决定了在检索阶段能否得到正确的上下文。

Chunking Strategy

​ **最常见的方法是将文档按固定数量的标记(例如 100、256、512)分成块。**较大的块可以捕获更多上下文,但也会产生更多噪音,需要更长的处理时间和更高的成本。虽然较小的块可能无法完全传达必要的上下文,但它们的噪音确实较少。然而,块会导致句子内的截断,促使人们优化递归分割和滑动窗口方法,通过合并跨多个检索过程的全局相关信息实现分层检索 。尽管如此,这些方法仍然无法在语义完整性和上下文长度之间取得平衡。因此,已经提出了 Small2Big 等方法,其中句子(小)用作检索单位,并将前后句子作为(大)上下文提供给 LLM 。

Metadata Attachments

​ 可以用页码、文件名、作者、分类时间戳等元数据信息丰富块,随后根据这些元数据过滤检索,限定检索范围。 在检索过程中对文档时间戳赋予不同的权重可以实现时间感知的RAG,保证知识的新鲜度,避免信息过时。

​ 除了从原始文档中提取元数据外,还可以人为构建元数据。例如,添加段落摘要,以及引入假设性问题。这种方法也称为Reverse HyDE。具体来说,使用LLM生成文档可以回答的问题,然后在检索过程中计算原始问题和假设问题的相似度,以减少问题和答案之间的语义差距。

Structural Index

​ 提高信息检索效率的有效方法是建立文档的层次结构,通过构建层次结构,RAG系统可以加快相关数据的检索和处理速度。

  • Hierarchical index structure

​ 文件按父子关系排列,块链接到它们。数据摘要存储在每个节点上,有助于快速遍历数据并协助 RAG 系统确定要提取哪些块。这种方法还可以减轻由块提取问题引起的错觉。

  • 知识图谱索引

​ 利用知识图谱构建文档的层次结构有利于保持一致性。它勾勒出不同概念和实体之间的联系,大大降低了产生错觉的可能性。另一个优点是将信息检索过程转化为LLM可以理解的指令,从而提高知识检索的准确性,并使LLM能够生成上下文连贯的响应,从而提高RAG系统的整体效率。为了捕捉文档内容和结构之间的逻辑关系,知识图谱提出了一种使用知识图谱在多个文档之间建立索引的方法。该知识图谱由节点(表示文档中的段落或结构,如页面和表格)和边(表示段落之间的语义/词汇相似性或文档结构内的关系)组成,有效地解决了多文档环境中的知识检索和推理问题。

Query Optimization

​ Naive RAG 面临的主要挑战之一是它直接依赖用户的原始查询作为检索的基础。提出一个精确而清晰的问题很困难,而轻率的查询会导致检索效果不佳。 有时,问题本身很复杂,语言组织得也不太好。另一个困难在于语言复杂性歧义。语言模型在处理专业词汇或具有多重含义的模糊缩写时往往会遇到困难。例如,它们可能无法辨别“LLM”是指大型语言模型还是法律背景下的法学硕士。

Query Expansion

​ 将单个查询扩展为多个查询可以丰富查询的内容,提供进一步的背景来解决任何缺乏具体细微差别的问题,从而确保生成的答案的最佳相关性。

  • Multi-Query

​ 通过采用Prompt 工程通过 LLM 扩展查询,这些查询可以并行执行。查询的扩展不是随机的,而是经过精心设计的

  • Sub-Query

​ 子问题规划的过程代表生成必要的子问题,以便在组合时将原始问题置于上下文中并完全回答原始问题。添加相关上下文的过程原则上类似于查询扩展。具体来说,可以使用从最少到最多的提示方法将复杂问题分解为一系列更简单的子问题

  • Chain-of-Verification(CoVe)

​ 扩展查询经过 LLM 验证,以达到减少幻觉的效果。经过验证的扩展查询通常具有更高的可靠性

Query Transformation

​ 核心概念是根据转换后的查询而不是用户的原始查询来检索块。

​ 查询重写。原始查询并不总是最适合LLM检索的,尤其是在实际场景中。因此,作者可以提示LLM重写查询。除了使用LLM进行查询重写外,还有专门的小型语言模型,例如RRR(重写-检索-阅读)。淘宝中查询重写方法的实现,称为BEQUE ,显著提高了长尾查询的召回率,从而提高了GMV。

​ 另一种查询转换方法是使用prompt 工程,让LLM根据原始查询生成查询以供后续检索。HyDE 构建假设文档(对原始查询的假设答案)。它专注于从答案到答案的嵌入相似性,而不是寻求问题或查询的嵌入相似性。 采用Step-back Prompting方法,将原始Query抽象为高阶概念问句(step-back question),在RAG系统中,step-back question和原始Query一起用于检索,并将两者的结果作为语言模型答案生成的依据。

Query Routing

​ 根据不同的查询,路由到不同的 RAG 流水线,适用于旨在适应不同场景的多功能 RAG 系统。

​ 元数据路由器/过滤器。第一步是从查询中提取关键字(实体),然后根据块内的关键字和元数据进行过滤以缩小搜索范围。

​ 语义路由器是另一种路由方法,涉及利用查询的语义信息。当然,也可以采用混合路由方法,结合语义和基于元数据的方法来增强查询路由

Embedding

​ 在 RAG 中,检索是通过计算问题和文档块的嵌入之间的相似度(例如余弦相似度)来实现的,其中嵌入模型的语义表示能力起着关键作用。这主要包括稀疏编码器(BM25)和密集检索器(BERT 架构预训练语言模型)。最近的研究引入了著名的嵌入模型,如 AngIE、Voyage、BGE 等 ,这些模型受益于多任务指令调优。Hugging Face 的 MTEB 排行榜 评估了 8 个任务中的嵌入模型,涵盖了 58 个数据集。此外,C-MTEB 专注于中文能力,涵盖 6 个任务和 35 个数据集。对于“使用哪种嵌入模型”,没有一刀切的答案。但是,某些特定模型更适合特定用例。

  1. 混合检索:稀疏和密集嵌入方法捕获不同的相关性特征,并且可以通过利用互补的相关性信息相互受益。例如,稀疏检索模型可用于训练密集检索模型提供初始搜索结果。此外,预训练语言模型 (PLM) 可用于学习术语权重以增强稀疏检索。具体而言,它还表明稀疏检索模型可以增强密集检索模型的零样本检索能力,并帮助密集检索器处理包含稀有实体的查询,从而提高鲁棒性。
  2. 微调嵌入模型:在上下文与预训练语料库有显著偏差的情况下,特别是在医疗保健、法律实践和其他充斥着专有术语的领域等高度专业化的学科中,在您自己的领域数据集上微调嵌入模型对于缓解这种差异至关重要。 除了补充领域知识外,微调的另一个目的是使检索器和生成器保持一致,例如,使用 LLM 的结果作为微调的监督信号,称为 LSR(LM 监督检索器)。 PROMPTAGATOR 利用 LLM 作为少样本查询生成器来创建特定于任务的检索器,解决了监督微调中的挑战,特别是在数据稀缺的领域。另一种方法,LLM-Embedder,利用 LLM 在多个下游任务中生成奖励信号。检索器通过两种类型的监督信号进行微调:数据集的硬标签和来自 LLM 的软奖励。这种双信号方法促进了更有效的微调过程,使嵌入模型能够适应不同的下游应用。REPLUG 利用检索器和 LLM 来计算检索到的文档的概率分布,然后通过计算 KL 散度进行监督训练。这种直接有效的训练方法通过使用 LM 作为监督信号来增强检索模型的性能,从而无需特定的交叉注意机制。 此外,受 RLHF(从人类反馈中强化学习)的启发,利用基于 LM 的反馈通过强化学习来强化检索器。

Adapter

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

​ 为了优化 LLM 的多任务能力,UPRISE训练了一个轻量级的提示检索器,它可以自动从预先构建的提示池中检索适合给定零样本任务输入的提示。AAR(增强自适应检索器)引入了一个通用适配器,旨在适应多个下游任务。 而 PRCA 添加了可插入的奖励驱动上下文适配器来增强特定任务的性能。BGM 保持检索器和 LLM 固定,并在两者之间训练桥接 Seq2Seq 模型。桥接模型旨在将检索到的信息转换为 LLM 可以有效处理的格式,使其不仅可以重新排序,还可以动态选择每个查询的段落,并可能采用更高级的策略,如重复。此外,PKG10 引入了一种创新方法,通过指令微调将知识集成到白盒模型中 。在这种方法中,直接替换检索器模块以根据查询生成相关文档。此方法有助于解决微调过程中遇到的困难并提高模型性能。

关于生成

​ 检索后,直接将检索到的所有信息输入LLM回答问题不是一个好的做法。 下面将从检索内容的调整和LLM的调整两个角度介绍调整

Context Curation

​ 冗余信息会干扰 LLM 的最终生成,过长的上下文也会导致 LLM 出现“迷失在中间”的问题。**与人类一样,LLM 往往只关注长文本的开头和结尾,而忘记中间部分。**因此,在 RAG 系统中,作者通常需要对检索到的内容进行进一步处理。

Reranking

​ 重新排序从根本上重新排序文档块以首先突出显示最相关的结果,从而有效地减少整个文档池,在信息检索中发挥双重作用,既充当增强器又充当过滤器,为更精确的语言模型处理提供精炼的输入 。重新排序可以使用依赖于预定义指标(如多样性、相关性和 MRR)的基于规则的方法,或基于模型的方法(如 BERT 系列的编码器-解码器模型(例如 SpanBERT))、专门的重新排序模型(如 Cohere rerank 或 bge-raranker-large)和通用大型语言模型(如 GPT)来执行。

Context Selection/Compression

​ RAG 过程中的一个常见误解是认为检索尽可能多的相关文档并将它们连接起来形成一个较长的检索提示是有益的。然而,过多的上下文可能会引入更多噪音,削弱 LLM 对关键信息的感知。 (长) LLMLingua 利用小型语言模型 (SLM)(例如 GPT-2 Small 或 LLaMA-7B)来检测和删除不重要的标记,将其转换为人类难以理解但 LLM 可以很好理解的形式。这种方法提出了一种直接实用的快速压缩方法,无需对 LLM 进行额外的训练,同时平衡语言完整性和压缩率。PRCA 通过训练信息提取器解决了这个问题。同样,RECOMP 采用了类似的方法,通过使用对比学习训练信息压缩器。每个训练数据点由一个正样本和五个负样本组成,编码器在此过程中使用对比损失进行训练。

​ 除了压缩上下文之外,减少文档数量也有助于提高模型答案的准确性。Ma等人提出了“Filter-Reranker”范式,它结合了LLM和SLM的优势。 在这个范式中,SLM充当过滤器,而LLM充当重新排序代理。研究表明,指示LLM重新排列SLM识别的具有挑战性的样本可以显著提高各种信息提取(IE)任务的效果。另一种直接有效的方法是让LLM在生成最终答案之前评估检索到的内容。这允许LLM通过LLM批评过滤掉相关性较差的文档。例如,在Chatlaw 中,LLM被提示对所引用的法律条款进行自我建议以评估其相关性。

LLM Fine-tuning

​ 根据场景和数据特征对 LLM 进行有针对性的微调可以产生更好的结果。这也是使用本地 LLM 的最大优势之一。当 LLM 缺少特定领域的数据时,可以通过微调为 LLM 提供额外的知识。Huggingface 的微调数据也可以作为初始步骤。

​ 微调的另一个好处是能够调整模型的输入和输出。例如,它可以使 LLM 适应特定的数据格式并按照指示生成特定样式的响应 。对于涉及结构化数据的检索任务,SANTA 框架 实施了三部分训练方案,以有效地封装结构和语义细微差别。初始阶段侧重于检索器,利用对比学习来细化查询和文档嵌入。

​ 通过强化学习将 LLM 输出与人类或检索器的偏好相结合是一种潜在的方法。例如,手动注释最终生成的答案,然后通过强化学习提供反馈。 除了与人类偏好保持一致之外,还可以与微调模型和检索器的偏好保持一致。当情况阻碍访问强大的专有模型或更大参数的开源模型时,一种简单有效的方法是提取更强大的模型(例如GPT-4)。LLM的微调也可以与检索器的微调相协调,以对齐偏好。一种典型的方法,例如RA-DIT,使用KL散度对齐检索器和生成器之间的评分函数。

关于增强

​ 在 RAG 领域,标准做法通常涉及单一(一次)检索步骤,然后进行生成,这可能导致效率低下,有时通常不足以解决需要多步推理的复杂问题,因为它提供的信息范围有限 [。针对此问题,许多研究已优化了检索过程,作者在图 5 中对其进行了总结。

image-20240818194338132

​ 除了最常见的一次检索外,RAG 还包括三种类型的检索增强过程。(左)迭代检索涉及在检索和生成之间交替进行,从而允许在每个步骤中从知识库中获得更丰富、更有针对性的上下文。(中)递归检索涉及逐步细化用户查询并将问题分解为子问题,然后通过检索和生成不断解决复杂问题。(右)自适应检索侧重于使 RAG 系统能够自主确定是否需要外部知识检索以及何时停止检索和生成,通常利用 LLM 生成的特殊标记进行控制。

Iterative Retrieval

​ 迭代检索是基于初始查询和迄今为止生成的文本反复搜索知识库的过程,从而提供更全面的知识。该方法已被证明可以通过多次检索迭代提供额外的上下文参考,从而增强后续答案生成的稳健性。但是,它可能受到语义不连续性和不相关信息积累的影响。ITERRETGEN 采用一种协同方法,利用“检索增强生成”和“生成增强检索”来完成需要重现特定信息的任务。该模型利用解决输入任务所需的内容作为检索相关知识的上下文基础,从而有助于在后续迭代中生成改进的响应。

Recursive Retrieval

​ 递归检索通常用于信息检索和 NLP,以提高搜索结果的深度和相关性。 该过程涉及**根据从先前搜索中获得的结果迭代地细化搜索查询。递归检索旨在通过反馈循环逐渐收敛到最相关的信息,从而增强搜索体验。**IRCoT 使用思路链来指导检索过程,并使用获得的检索结果细化 CoT。ToC 创建了一个澄清树,可以系统地优化查询中的模糊部分。它在复杂的搜索场景中特别有用,在这些场景中,用户的需求从一开始就不完全明确,或者所寻求的信息高度专业化或细致入微。该过程的递归性质允许不断学习和适应用户的需求,通常可以提高对搜索结果的满意度。

​ 为了解决特定的数据场景,递归检索和多跳检索技术被一起使用。递归检索涉及结构化索引,以分层方式处理和检索数据,这可能包括汇总文档或长篇 PDF 的各部分,然后根据此摘要执行检索。随后,文档中的二次检索会细化搜索,体现该过程的递归性质。相比之下,多跳检索旨在更深入地探究图形结构数据源,提取相互关联的信息 。

Adaptive Retrieval

​ 自适应检索方法通过使 LLM 能够主动确定检索的最佳时刻和内容来改进 RAG 框架,从而提高所获取信息的效率和相关性。 这些方法是更广泛趋势的一部分,其中 LLM 在其操作中采用主动判断,如 AutoGPT、Toolformer 和 GraphToolformer 等模型代理所示。例如,Graph-Toolformer 将其检索过程划分为不同的步骤,其中 LLM 主动使用检索器、应用 Self-Ask 技术并使用少量提示来启动搜索查询。这种主动立场使 LLM 能够决定何时搜索必要信息,类似于代理如何使用工具。 WebGPT 集成了强化学习框架,以训练 GPT-3 模型在文本生成过程中自主使用搜索引擎。它使用特殊的标记来导航此过程,这些标记促进搜索引擎查询、浏览结果和引用参考文献等操作,从而通过使用外部搜索引擎扩展 GPT-3 的功能。Flare 通过监视生成过程的置信度(由生成术语的概率 12 表示)来自动化定时检索。当概率低于某个阈值时,就会激活检索系统来收集相关信息,从而优化检索周期。Self-RAG 引入了“反射标记”,允许模型自省其输出。这些标记有两种:“retrieve”和“critic”。模型自主决定何时激活检索,或者预定义的阈值可以触发该过程。在检索过程中,生成器会在多个段落中进行片段级束搜索,以得出最连贯的序列。评论家评分用于更新细分评分,并可在推理过程中灵活调整这些权重,从而定制模型的行为。Self-RAG 的设计消除了对额外分类器或对自然语言推理 (NLI) 模型的依赖,从而简化了何时启用检索机制的决策过程,并提高了模型在生成准确响应方面的自主判断能力。

任务与评估

​ RAG 在 NLP 领域的快速发展和日益普及,推动了 RAG 模型评估成为 LLM 社区研究的前沿。 本次评估的主要目标是理解和优化 RAG 模型在不同应用场景中的性能。本章将主要介绍 RAG 的主要下游任务、数据集以及如何评估 RAG 系统。

Downstream Task

​ RAG 的核心任务仍然是问答 (QA),包括传统的单跳/多跳问答、多项选择、特定领域的问答以及适合 RAG 的长篇场景。除了问答之外,RAG 还在不断扩展到多个下游任务,例如信息提取 (IE)、对话生成、代码搜索等。 RAG 的主要下游任务及其对应的数据集总结在表 II 中

image-20240818201740729

Evaluation Target

​ 从历史上看,RAG 模型评估以它们在特定下游任务中的执行情况为中心。这些评估采用适合当前任务的既定指标。例如,问答评估可能依赖于 EM 和 F1 分数 ,而事实核查任务通常以准确度为主要指标。BLEU 和 ROUGE 指标也常用于评估答案质量。RALLE 等专为自动评估 RAG 应用程序而设计的工具同样基于这些特定于任务的指标进行评估 。

​ 尽管如此,专门用于评估 RAG 模型独特特征的研究仍然非常匮乏。主要评估目标包括:检索质量。评估检索质量对于确定检索器组件获取的上下文的有效性至关重要。使用来自搜索引擎、推荐系统和信息检索系统领域的标准指标来衡量 RAG 检索模块的性能。命中率、MRR 和 NDCG 等指标通常用于此目的 。 生成质量。生成质量的评估以生成器从检索到的上下文中合成连贯且相关的答案的能力为中心。此评估可根据内容的目标分为:未标记内容和标记内容。对于未标记内容,评估包括生成答案的真实性、相关性和无害性。相反,对于标记内容,重点是模型生成的信息的准确性。此外,检索和生成质量评估都可以通过手动或自动评估方法进行

Evaluation Aspects

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

  1. 质量分数:

​ 质量分数包括上下文相关性、答案忠实性和答案相关性。这些质量分数从不同角度评估 RAG 模型在信息检索和生成过程中的效率。 上下文相关性评估检索到的上下文的精确度和特异性,确保相关性并最大限度地减少与无关内容相关的处理成本。 答案忠实性确保生成的答案与检索到的上下文保持一致,保持一致性并避免矛盾。 答案相关性要求生成的答案与提出的问题直接相关,有效地解决核心问题。

  1. 必备能力:

​ RAG 评估还包含四种表明其适应性和效率的能力:噪声稳健性、负面拒绝、信息整合和反事实稳健性。这些能力对于模型在各种挑战和复杂场景下的表现至关重要,影响质量得分。 噪声稳健性评估模型管理与问题相关但缺乏实质性信息的噪声文档的能力。 负面拒绝评估模型在检索到的文档不包含回答问题所需知识时避免做出回应的辨别能力。 信息整合评估模型从多个文档中综合信息以解决复杂问题的能力。 反事实稳健性测试模型识别和忽略文档中已知不准确信息的能力,即使在被告知可能存在错误信息时也是如此。 上下文相关性和噪声鲁棒性对于评价检索的质量很重要,而答案忠实性、答案相关性、负面拒绝、信息整合和反事实鲁棒性对于评价生成质量很重要。

image-20240818201803205

​ 表 III 总结了每个评估方面的具体指标。必须认识到,这些指标源自相关工作,是传统衡量标准,尚未代表量化 RAG 评估方面的成熟或标准化方法。虽然本文未包括这些指标,但一些评估研究也开发了针对 RAG 模型细微差别的自定义指标。

讨论和未来前景

​ 尽管RAG技术取得了长足的进步,但仍存在一些挑战需要深入研究。本章将主要介绍RAG当前面临的挑战和未来的研究方向。

RAG vs Long Context

​ 随着相关研究的深入,LLM 的上下文规模在不断扩大 ,目前 LLM 可以轻松管理超过 20 万个 token 的上下文,这意味着此前依赖于 RAG 的长文档问答现在可以将整篇文档直接纳入提示中。这也引发了在 LLM 不受上下文约束的情况下,RAG 是否还有存在的必要性的讨论。事实上,RAG 依然发挥着不可替代的作用。一方面,一次性为 LLM 提供大量上下文会显著影响其推理速度,而分块检索和按需输入可以显著提高运行效率,另一方面,基于 RAG 的生成可以快速定位 LLM 的原始参考资料,帮助用户验证生成的答案。整个检索和推理过程都是可观察的,而单纯依赖长上下文的生成仍然是一个黑箱。相反,上下文的扩展为 RAG 的发展提供了新的机会,使其能够解决更复杂的问题以及需要阅读大量材料才能回答的综合性或概括性问题 。在超长上下文背景下开发新的 RAG 方法是未来的研究趋势之一。

RAG Robustness

​ 检索过程中存在的噪声或矛盾信息会对 RAG 的输出质量产生不利影响。这种情况被形象地称为“错误信息比没有信息更糟糕”。提高 RAG 对此类对抗性或反事实输入的抵抗力正在获得研究势头,并已成为一项关键性能指标 。Cuconasu 等人分析应检索哪种类型的文档,评估文档与提示的相关性、它们的位置以及包含在上下文中的数量。研究结果表明,包括不相关的文档可以意外地将准确率提高 30% 以上,这与最初质量降低的假设相矛盾。这些结果强调了开发将检索与语言生成模型相结合的专门策略的重要性,突出了进一步研究和探索 RAG 稳健性的必要性。

Hybrid Approaches

​ 将 RAG 与微调相结合正成为一种领先的策略。确定 RAG 和微调的最佳集成方式(无论是顺序、交替还是通过端到端联合训练)以及如何利用参数化和非参数化是值得探索的领域 。另一个趋势是将具有特定功能的 SLM 引入 RAG,并根据 RAG 系统的结果进行微调。例如,CRAG训练轻量级检索评估器来评估查询检索到的文档的整体质量,并根据置信度触发不同的知识检索操作。

Scaling laws of RAG

​ 端到端 RAG 模型和基于 RAG 的预训练模型仍然是当前研究人员关注的重点之一 。这些模型的参数是关键因素之一。虽然为 LLM 建立了缩放定律,但它们是否适用于 RAG 仍不确定。RETRO++ 等初步研究已经开始解决这个问题,但 RAG 模型中的参数数量仍然落后于 LLM。 逆缩放定律 的可能性尤其令人感兴趣,其中较小的模型优于较大的模型,值得进一步研究。

Production-Ready RAG

​ RAG 的实用性和与工程需求的契合促进了它的采用。然而,提高检索效率、提高大型知识库中的文档召回率以及确保数据安全(例如防止 LLM 无意中泄露文档来源或元数据)是仍有待解决的关键工程挑战 。

​ RAG 生态系统的发展很大程度上受到其技术堆栈进展的影响。随着 ChatGPT 的出现,LangChain 和 LLamaIndex 等关键工具迅速流行起来,提供广泛的 RAG 相关 API,成为 LLM 领域的必备工具。新兴技术堆栈虽然功能不如 LangChain 和 LLamaIndex 丰富,但通过其专业产品脱颖而出。例如,Flowise AI 优先采用低代码方法,允许用户通过用户友好的拖放界面部署包括 RAG 在内的 AI 应用程序。其他技术,如 HayStack、Meltano 和 Cohere Coral,也因其对该领域的独特贡献而受到关注。

​ 除了专注于 AI 的供应商外,传统软件和云服务提供商也在扩展其产品范围,以包括以 RAG 为中心的服务。Weaviate 的 Verba 11 专为个人助理应用程序而设计,而亚马逊的 Kendra 12 提供智能企业搜索服务,使用户能够使用内置连接器浏览各种内容存储库。 在RAG技术的发展中,明显呈现出不同的专业化方向,如:1)定制化——根据具体要求定制RAG。 2)简化——使RAG更易于使用,以减少初始学习曲线。3) 专业化 - 优化 RAG 以更好地服务于生产环境。 RAG 模型及其技术堆栈的共同成长显而易见;技术进步不断为现有基础设施建立新标准。反过来,技术堆栈的增强推动了 RAG 功能的发展。RAG 工具包正在融合成一个基础技术堆栈,为高级企业应用程序奠定基础。然而,一个完全集成的、全面的平台概念仍然在未来,需要进一步创新和发展

Multi-modal RAG

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

图像。RA-CM3 是检索和生成文本和图像的开创性多模态模型。 BLIP-2 利用冻结图像编码器和 LLM 进行高效的视觉语言预训练,实现零样本图像到文本的转换。“先可视化再书写”方法 使用图像生成来引导 LM 的文本生成,在开放式文本生成任务中显示出良好的前景。

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

代码。RBPS 通过编码和频率分析检索与开发人员目标一致的代码示例,在小规模学习任务中表现出色。这种方法已证明在测试断言生成和程序修复等任务中有效。对于结构化知识,CoK 方法 首先从知识图谱中提取与输入查询相关的事实,然后将这些事实作为提示集成到输入中,从而提高知识图谱问答任务的性能。

结论

image-20240818202825425

本转换策略,标志着端到端自动语音识别的重大进步 。此外,基于 KNN 的注意力融合利用音频嵌入和语义相关的文本嵌入来改进 ASR,从而加速领域自适应。 Vid2Seq 使用专门的时间标记增强语言模型,有助于在统一的输出序列中预测事件边界和文本描述。

代码。RBPS 通过编码和频率分析检索与开发人员目标一致的代码示例,在小规模学习任务中表现出色。这种方法已证明在测试断言生成和程序修复等任务中有效。对于结构化知识,CoK 方法 首先从知识图谱中提取与输入查询相关的事实,然后将这些事实作为提示集成到输入中,从而提高知识图谱问答任务的性能。

结论

[外链图片转存中…(img-JbLj1Iz4-1723987024303)]

​ 本文摘要如图 所示,强调了 RAG 通过将语言模型中的参数化知识与外部知识库中的大量非参数化数据相结合,在增强 LLM 功能方面取得了重大进步。该调查展示了 RAG 技术的发展及其在许多不同任务中的应用。分析概述了 RAG 框架内的三个发展范式:朴素 RAG、高级 RAG 和模块化 RAG,每个范式都代表了对其前身的渐进式增强。RAG 与其他 AI 方法(如微调和强化学习)的技术集成进一步扩展了其功能。尽管 RAG 技术取得了进步,但仍有研究机会来提高其稳健性和处理扩展上下文的能力。 RAG 的应用范围正在扩展到多模态领域,调整其原理以解释和处理图像、视频和代码等多种数据形式。此次扩展凸显了 RAG 对人工智能部署的重大实际意义,吸引了学术界和工业界的关注。以 RAG 为中心的人工智能应用的兴起和支持工具的不断发展证明了 RAG 生态系统的不断发展。随着 RAG 应用范围的扩大,需要改进评估方法以跟上其发展的步伐。确保准确且具有代表性的绩效评估对于充分了解 RAG 对人工智能研究和开发社区的贡献至关重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡不叫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值