RAG综述汇总
这篇全面的综述论文详细研究了 RAG 范式的发展,包括 Naive RAG、Advanced RAG 和 Modular RAG。介绍了 RAG 框架的三个基础技术,包括检索、生成和增强技术。本文重点介绍了这些关键组件中嵌入的最先进的技术,从而深入了解 RAG 系统的进步。此外,本文还介绍了最新的评估框架和基准。大语言模型(LLM)已经取得了显著的成功,但是在特定领域或知识密集型任务中,特别是在处
第一篇:Retrieval-Augmented Generation for Large Language Models: A Survey(同济/复旦)
1.简介
这篇全面的综述论文详细研究了 RAG 范式的发展,包括 Naive RAG、Advanced RAG 和 Modular RAG。介绍了 RAG 框架的三个基础技术,包括检索、生成和增强技术。本文重点介绍了这些关键组件中嵌入的最先进的技术,从而深入了解 RAG 系统的进步。此外,本文还介绍了最新的评估框架和基准。
大语言模型(LLM)已经取得了显著的成功,但是在特定领域或知识密集型任务中,特别是在处理超出训练数据或需要当前信息的查询时会产生“幻觉”。为了克服挑战,检索增强生成 (RAG) 通过语义相似性计算从外部知识库中检索相关文档块来增强 LLM。通过参考外部知识,RAG有效地减少了生成事实不正确内容的问题。它与 LLM 的集成被广泛采用,使 RAG 成为推进聊天机器人和增强 LLM 实际应用的关键技术。
RAG在大模型时代的发展轨迹呈现出几个截然不同的阶段特征。
- 最初,RAG的成立恰逢Transformer架构的兴起,专注于通过预训练模型(PTM)整合其他知识来增强语言模型。这个早期阶段的特点是基础工作,旨在完善预训练技术。
- 随后 ChatGPT 的到来标志着一个关键时刻,LLM 展示出了强大的上下文学习 (ICL) 能力。RAG研究转向为LLM提供更好的信息,在推理阶段回答更复杂和知识密集型的任务,从而促进了RAG研究的快速发展。
- 随着研究的不断推进,RAG的增强作用不再局限于推理阶段,而是开始更多地与LLM微调技术相结合。
2. RAG发展历程
本文展开如下:第二部分介绍了RAG的主要概念和当前范式。三个部分分别探讨了核心组件——“检索”、“生成”和“增强”。第三部分重点介绍检索中的优化方法,包括索引、查询和嵌入优化。第四部分集中讨论检索后过程和生成中的LLM微调。第五部分分析了三个增强过程。第六部分重点介绍RAG的下游任务和评估系统。第七节主要讨论RAG目前面临的挑战和未来发展方向。最后是本文总结。
RAG 应用于问答的例子。它主要由3个步骤组成。
- 1)索引。文档被拆分为块,编码为向量,并存储在向量数据库中。
- 2)检索。根据语义相似性检索与问题最相关的前 k 个块。
- 3)生成。将原始问题和检索到的块一起输入到 LLM 中以生成最终答案。
本文将RAG分为三个阶段,Naive RAG, Advanced RAG, and Modular RAG,也就是朴素RAG,高级RAG,模块化RAG。
RAG的三种范式之间的比较。
- (左)朴素RAG主要由索引、检索和生成三部分组成。
- (中)高级 RAG 在检索前和检索后提出了多种优化策略,该过程类似于 Naive RAG,仍然遵循类似链的结构。
- (右)模块化 RAG 从以前的范式继承和发展,总体上显示出更大的灵活性。这在引入多个特定的功能模块和替换现有模块时很明显。整个过程不限于顺序检索和生成;它包括迭代和自适应检索等方法。
2.1 Naive RAG
朴素RAG遵循一个传统的处理过程,包括indexing,retrieval,generation,也被称为”Retrieve-Read"“范式【如上图所示】。
索引阶段,从清理和提取各种格式(如 PDF、HTML、Word 和 Markdown)的原始数据开始,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小的、易于理解的块。然后使用Embedding model 将块编码为向量表示,并存储在向量数据库中。此步骤对于在后续检索阶段实现高效的相似性搜索至关重要。
检索阶段,收到用户查询后,RAG 系统采用与索引阶段相同的编码模型将查询转换为向量表示。然后,它计算查询向量与索引语料库中块向量之间的相似性分数。系统优先处理并检索与查询具有最大相似性的前 K 个块。这些块随后被用作提示中的扩展上下文。
生成阶段,提出的查询和选定的文档被合成为一个连贯的提示【prompt】,大型语言模型的任务是制定响应。该模型的回答方法可能因特定于任务的标准而异,允许它利用其固有的参数知识或将其响应限制在所提供文档中包含的信息上。在正在进行的对话的情况下,任何现有的对话历史记录都可以集成到提示中,使模型能够有效地参与多轮对话交互。
Naive RAG 缺点:
- 检索挑战。检索阶段经常在精确度和召回率方面遇到困难,导致选择未对齐或不相关的块,以及丢失关键信息。
- 生成困难。在生成响应时,模型可能会面临幻觉问题,即它产生的内容不受检索到的上下文的支持。这个阶段还可能受到输出的不相关或偏差的影响,从而降低响应的质量和可靠性。
- 增强障碍。将检索到的信息与不同的任务集成可能具有挑战性,有时会导致输出脱节或不连贯。当从多个来源检索类似信息时,该过程还可能遇到冗余,从而导致重复响应。确定各个段落的重要性和相关性,并确保风格和音调的一致性,进一步增加了复杂性。面对复杂的问题,基于原始查询的单个检索可能不足以获取足够的上下文信息。
- 此外,还有人担心生成模型可能过度依赖增强信息,导致输出只是回显检索到的内容,而不添加有洞察力或综合的信息。
2.2 Advance RAG
Advanced RAG 引入了特定的改进来克服 Naive RAG 的局限性。它专注于提高检索质量,采用 pre-retrieval and post-retrieval策略。为了解决索引问题,Advanced RAG 通过使用滑动窗口方法、细粒度分割和合并元数据来改进其索引技术。
预检索过程。在此阶段,主要重点是优化索引结构和原始查询。优化索引的目的是提高被索引内容的质量。这涉及以下策略:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。而查询优化的目标是让用户原来的问题更清晰,更适合检索任务。常用的方法包括查询重写、查询转换、查询扩展等技术。
后检索过程。检索到相关上下文后,将其与Query有效集成至关重要。检索后处理中的主要方法包括对块进行重新排序和上下文压缩。对检索到的信息进行重新排序,将最相关的内容重新定位到提示的边缘是一个关键策略。这个概念已经在LlamaIndex2、LangChain3和HayStack等框架中实现。将所有相关文档直接输入 LLM 可能会导致信息过载,从而用不相关的内容稀释对关键细节的关注。为了缓解这种情况,检索后的工作集中在选择基本信息、强调关键部分和缩短要处理的上下文上。
2.3 Modular RAG
模块化 RAG 架构超越了前两种 RAG 范式,提供了增强的适应性和多功能性。它结合了多种策略来改进其组件,例如添加用于相似性搜索的搜索模块以及通过微调来改进检索器。为了应对特定挑战,引入了重组的RAG模块和重新排列的RAG Pipeline等创新。向模块化 RAG 方法的转变正变得越来越普遍,它支持跨组件的顺序处理和集成的端到端训练。尽管 Modular RAG 独树一帜,但它建立在 Advanced 和 Naive RAG 的基本原则之上,展示了 RAG 家族内部的进步和完善。
2.3.1 新模块-New Modules:
模块化 RAG 框架引入了额外的专用组件,以增强检索和处理能力。
-
Search module 适应特定场景,使用LLM生成的代码和查询语言,支持跨各种数据源(如搜索引擎、数据库和知识图谱)进行直接搜索。
-
RAG Fusion通过采用多查询策略来解决传统的搜索局限性,该策略将用户查询扩展到不同的视角,利用并行向量搜索和智能重新排序来发现显性和变革性知识。
-
Memory module 利用 LLM 的内存来指导检索,创建一个无界内存池,通过迭代自我增强,使文本和和数据分布更紧密的对齐。
-
RAG系统中的 Routing 在不同的数据源中导航,为查询选择最佳路径,无论是涉及摘要、特定数据库搜索还是合并不同的信息流。
-
Predict 模块旨在直接通过 LLM 生成上下文来减少冗余和噪音,从而确保相关性和准确性。
最后,Task Adapter 模块 针对各种下游任务定制 RAG,自动对零样本输入进行提示检索,并通过少量查询生成 、创建特定于任务的检索器。这种综合方法不仅简化了检索过程,而且显著提高了检索信息的质量和相关性,以更高的精度和灵活性满足了各种任务和查询的需求。
2.3.2 新模式-New Patterns:
模块化 RAG 通过允许模块替换或重新配置来应对特定挑战,从而提供卓越的适应性。这超越了 Naive 和 Advanced RAG 的固定结构,其特点是简单的“检索”和“读取”机制。此外,模块化 RAG 通过集成新模块或调整现有模块之间的交互流程来扩展这种灵活性,从而增强其在不同任务中的适用性。
Rewrite-Retrieve-Read 模型创新利用LLM的功能,通过重写模块和LM-反馈机制来优化检索查询,从而更新重写模型,提高任务性能。类似地,Generate-Read 用LLM生成的内容取代了传统的检索,而ReciteRead 则强调从模型权重中检索,增强了模型处理知识密集型任务的能力。
混合检索策略集成了关键字、语义和向量搜索,以满足各种查询的需求。此外,采用子查询和假设文档嵌入(HyDE)试图通过关注生成的答案和真实文档之间的 Embedding similarites 相似性来提高检索相关性。
模块排列和交互的调整,如演示-搜索-预测 (DSP) 框架和 ITERRETGEN 的迭代检索-读取-检索-读取流程,展示了模块输出的动态使用来增强另一个模块的功能,说明了对增强模块协同作用的复杂理解。模块化 RAG Flow 的灵活编排展示了通过 FLARE 和 Self-RAG 等技术进行自适应检索的优势。这种方法超越了固定的 RAG 检索过程,根据不同的场景评估检索的必要性。灵活架构的另一个好处是,RAG系统可以更容易地与其他技术(如微调或强化学习)集成。例如,这可能涉及微调检索器以获得更好的检索结果,微调生成器以获得更个性化的输出,或进行协作微调。
2.4 RAG vs Fine-tuning
在大模型的优化发展过程中,RAG通常用来与Fine-Tuning(FT) 以及Prompt 工程作比较。使用一个二维象限图【外部知识需求和模型修改的需求】来描述三种方法之间的关系和区别。Prompt工程利用模型内在的能力,最小化对外部知识和模型改造的需求。RAG可以视为为模型提供量身定制的信息检索教科书,非常适合精确的信息检索任务。FT相当于一个学生随着时间推移内化知识,适用于需要复制特定结构,风格,或格式的场景。
RAG通过提供实时知识更新和有效利用外部知识源,在动态环境中表现出色,具有高度的可解释性。但是,它具有更高的延迟和有关数据检索的道德考虑。另一方面,FT 更加静态,需要重新训练才能进行更新,但可以对模型的行为和风格进行深度定制。它需要大量的计算资源来准备和训练数据集,虽然它可以减少幻觉,但它可能会面临不熟悉数据的挑战。
在对它们在不同主题的各种知识密集型任务中的表现进行多次评估时发现,虽然无监督微调【UFT】显示出了一些改进,但RAG在现有知识和全新的知识方面的表现始终优于微调。此外,还发现 LLM 很难通过无监督微调来学习新的事实信息。RAG 和 FT 之间的选择取决于应用程序上下文中对数据动态、定制和计算能力的特定需求。RAG 和 FT 不是相互排斥的,可以相互补充,在不同层面上增强模型的能力。在某些情况下,它们的联合使用可能会带来最佳性能。涉及 RAG 和 FT 的优化过程可能需要多次迭代才能获得令人满意的结果。
3. RETRIEVAL
在RAG上下文中,从数据源高效检索相关文档是非常重要的,这里包含几个关键因素:
- 检索源
- 检索粒度
- 检索预处理
- 对应的embedding model的选择
3.1 检索源
检索源通过外部知识来强化LLM,然而检索源和检索粒度都会影响最终生成的结果。
(1)数据结构:一开始文本是主要检索源,随后,还扩展到半结构化数据【PDF】和结构化数据【Knowledge Graph,KG】用于增强。除了利用原始的外部数据源,现在也有一种趋势利用LLM生成的内容用于检索和增强。
-
非结构化数据,例如Text文件,是最广泛使用的检索源,主要从语料库进行收集。对于开放领域的问答任务,主要检索源是是维基百科,当前主要版本包括 HotpotQA (2017 年 10 月 1 日)、DPR(2018 年 12 月 20 日)。除百科全书数据外,常见的非结构化数据还包括跨语言文本和特定领域数据(如医学和法律领域)。
-
半结构化数据,通常指包含文本和表格组合信息的数据,例如PDF。由于两个主要原因,处理半结构化数据给传统的 RAG 系统带来了挑战。首先,文本拆分过程可能会无意中分隔表格,从而导致检索过程中的数据损坏。其次,将表合并到数据中会使语义相似性搜索复杂化。在处理半结构化数据时,一种方法是利用LLM的代码功能对数据库中的表(如TableGPT)执行Text-2-SQL查询【这个应该是结构化数据查询,可能arxiv上版本有问题】。或者,可以将表格转换为文本格式,以便使用基于文本的方法进行进一步分析。然而,这两种方法都不是最佳解决方案,这表明该领域存在大量研究机会。
-
结构化数据,如知识图谱(KGs),通常经过验证,可以提供更精确的信息。
- KnowledGPT 生成知识库搜索查询,并将知识存储在个性化库中,增强了 RAG 模型的知识丰富度。针对LLM在理解和回答文本图问题方面的局限性,
- G-Retriever集成了图神经网络,LLM和RAG,通过LLM的软提示增强图理解和问答能力,并采用有奖收集斯坦纳树(PCST)优化问题进行有针对性的图检索。另一方面,它需要额外的工作来构建、验证和维护结构化数据库。
-
LLM 生成的内容。针对RAG中外部辅助信息的局限性,一些研究集中在利用LLM的内部知识上。 -
- SKR 将问题分类为已知或未知,有选择地应用检索增强。
- GenRead 用 LLM 生成器替换了检索器,发现 LLM 生成的上下文通常包含更准确的答案,因为与因果语言建模的预训练目标更加一致。
- Selfmem是一种迭代创建无界记忆池的方法,它利用增强检索的生成器和记忆选择器来工作。具体来说,Selfmem通过一个记忆选择器挑选出与原始问题形成互补问题的回答,作为双问题(dual problems),以此方式来自我增强生成模型。这种方法在RAG(Retrieval-Augmented Generation,增强检索生成)框架下,强调了创新性地利用数据源的重要性,旨在提高模型的性能和任务的有效性。
(2)检索粒度。除了数据源之外的另一个重要因素,粗粒度检索理论上可以提供对问题更相关的信息,但是也可能包含冗余内容,分散下游任务中检索和语言模型的注意力。另一方面,细粒度检索会增加检索负担,而且不保证语义完整性,并满足需求的知识。在推理过程中选择适当的检索粒度可以成为提高密集检索器检索和下游任务性能的简单有效的策略。
在Text文本中,检索粒度从细到粗,包括标记Token、短语Phrase、句子sentence、命题Proposition、块chunks、文档Document。其中,DenseX 提出了使用命题Proposition作为检索单元的概念。命题被定义为文本中的原子表达式,每个命题都包含一个独特的事实片段,并以简洁、独立的自然语言格式呈现。这种方法旨在提高检索的精确度和相关性。在知识图谱 (KG) 上,检索粒度包括 Entity、Triplet 和 sub-Graph。检索的粒度也可以适应下游任务,例如在推荐任务和句子对 中检索项目 ID 。详细资料见表一。
3.1 indexing 优化
在索引阶段,文档将被处理、分割并转换为嵌入,以存储在矢量数据库中。索引构造的质量决定了在检索阶段能否获得正确的上下文。
1)分块策略:分块策略是将文档按照固定的词数(例如100、256或512个词)切割成多个部分,以便进行处理。使用较大块的分块方式能够捕获更多的上下文信息,但是随之而来的是更多的噪声,这会增加处理时间和成本。相比之下,小块的分块方式虽然可能无法完整地传达所有必要的上下文,但它产生的噪声较少。然而,由于分块会导致句子内部的截断,这就促使了递归分割和滑动窗口方法的优化。这两种方法允许在多次检索过程中通过合并全局相关信息来实现层次化的检索。
尽管如此,这些方法依然难以在语义完整性和上下文长度之间找到一个平衡点。为解决这一问题,提出了“小至大”(Small2Big)的策略。在这种策略下,句子本身被视为检索的基本单位,而前后的句子则作为上下文提供给大型语言模型(LLMs),以此来补充句子级信息的不足,确保更全面的语境理解。
分块策略的选择对于检索增强生成(RAG)系统来说至关重要,因为它直接影响到检索的准确性和效率。选择合适的块大小既能保证信息的完整性,又能减少不必要的噪声,对提升检索质量有显著影响。"小至大"的策略通过结合句子级别的精细检索与周边句子提供的宏观上下文,能够在保持语义完整性的同时控制上下文长度,为RAG系统提供了更灵活和高效的检索方案。
2)元数据附件:元数据附加是指在文档切片中加入如页码、文件名、作者、类别和时间戳等额外信息。这样做的好处在于,检索过程可以根据这些元数据进行过滤,从而缩小检索范围,提高检索效率和准确性。通过在检索时赋予文档时间戳不同的权重,可以实现时间敏感型的检索增强生成(RAG),确保获取的知识是最新的,避免使用过时的信息。
除了从原始文档中提取元数据外,还可以人工构建元数据。例如,可以添加段落摘要,或者引入假设性的问题,这种方法被称为反向HyDE(Reverse HyDE)。具体而言,使用大型语言模型(LLM)来生成可以从文档中找到答案的问题,然后在检索阶段计算原问题与假设问题之间的相似度,以此来缩小问题与答案之间的语义差距。这种方式有助于更精准地匹配问题和答案,提升检索的质量和相关性。通过这种方式,不仅能够利用现有文档的元数据,还能通过LLM生成额外的辅助信息,进一步优化检索过程。
3)结构索引:
结构性索引(Structural Index)是增强信息检索效率和效果的一种方法,主要通过建立文档的层次结构来实现。这种索引方式允许检索增强生成(RAG)系统快速定位和处理相关数据,尤其在处理大量或复杂数据集时更为有效。以下是Structural Index的几个关键点:
- 层级索引结构:
- 文件按照父-子关系排列,并链接到它们的块,每个节点或“块”与特定信息关联。
- 在每个节点存储数据摘要,这有助于快速遍历数据并确定哪些部分需要被提取。
- 这种结构能减轻由于块提取引起的幻觉问题,确保检索到的信息片段更加连贯和准确。
- 知识图谱索引:
- 利用知识图谱(KG)构建文档的层级结构,有助于保持一致性,并清晰描绘不同概念和实体之间的联系。
- 知识图谱减少了语义幻觉的可能性,即误解或错误的推理,因为图谱提供了上下文和关系的明确表示。
- 信息检索过程被转化为大型语言模型(LLM)可理解的指令,提高了知识检索的精确性和上下文相关性的响应生成能力。
- 为了捕捉文档内容与结构之间的逻辑关系,KGP提出了一种利用知识图谱在多个文档间建立索引的方法。这个知识图谱由节点和边构成,其中节点代表文档中的段落或结构,如页面和表格;边则表示段落间的语义或词汇相似性,以及文档结构内部的关系。这种方法有效地解决了多文档环境下的知识检索和推理问题,通过构建文档间的逻辑连接,提高了信息检索的精准度和推理能力。
- 整体效率提升:
- 结构性索引通过逻辑连接文档内容和结构,显著提升了RAG系统的整体效率。
- 它不仅优化了知识检索,还使得LLM能够生成情境上一致的回应,进而改善了整个RAG系统的性能。
结构性索引是RAG框架中的一个关键组成部分,它通过创建和利用文档的层级和逻辑结构,增强了检索的准确性和速度,同时降低了信息处理过程中的误差率。通过结合知识图谱和其他高级策略,结构性索引能够使检索系统更加智能和高效,特别是在处理多文档和复杂数据集时。
3.2 Query 优化
查询优化在检索增强生成(RAG)系统中至关重要,特别是对于基于用户原始查询直接检索的朴素RAG方法。由于用户提问可能不够精确或清晰,且查询本身可能复杂且组织不良,加上语言模型难以处理专业术语或含义模糊的缩写词,如“LLM”可能指的是大型语言模型或法律硕士,这些都导致了检索效果不佳。
为了解决这些问题,RAG系统采用两种主要策略:查询扩展和查询变换。
-
查询扩展通过将单个查询扩展成多个查询来丰富查询内容,确保答案的相关性和准确性。具体有:
- 多重查询:利用提示工程通过大型语言模型(LLM)扩展查询,并行执行,非随机设计。
- 子查询:将复杂问题分解为一系列简单子问题,结合使用最少到最多的提示方法。
- 验证链(CoVe):通过LLM验证扩展后的查询,减少幻觉效应,提高可靠性。
-
查询变换的核心思想是基于变换后的查询进行检索,而不是原始用户查询。包括:
- 查询重写:LLM或专门的小型语言模型(如RRR)用于重写查询,Taobao实施的BEQUE方法显著提升了长尾查询的召回率,增加了商品交易总额(GMV)。
- 使用提示工程让LLM基于原查询生成新查询,如HyDE构建假设文档,关注答案间的嵌入相似性而非问题或查询的相似性。
- Step-back Prompting方法抽象原始查询生成高层次概念问题,与原查询一起用于检索,结果共同作为生成答案的基础。
此外,还提出了查询路由的概念,根据不同查询将其导向适合的RAG流程,适用于应对多种场景的灵活RAG系统。这包括:
- 元数据路由器/过滤器:从查询中提取关键词,根据关键词和块内元数据过滤缩小搜索范围。
- 语义路由器:利用查询的语义信息进行路由。可采用混合路由方法,结合语义和元数据方式,以增强查询路由性能。
通过这些优化策略,RAG系统可以更准确地理解和响应用户的查询,提供更相关、更可靠的信息。
3.4 Embedding
在检索增强生成(RAG)系统中,通过计算问question embedding 和 document chunks embedding 之间的相似度(例如余弦相似度)来实现检索。嵌入模型的语义表示能力在此过程中扮演关键角色,通常涉及稀疏编码器(如BM25)和密集检索器(基于BERT架构的预训练语言模型)。近年来,出现了如AngIE、Voyage、BGE等优秀嵌入模型,它们得益于多任务指导调优。Hugging Face的MTEB排行榜评估了跨8个任务、覆盖58个数据集的嵌入模型。同时,C-MTEB专注于中文能力,覆盖6个任务和35个数据集。选择哪种嵌入模型没有一概而论的答案,但某些特定模型更适合特定的应用场景。
混合检索是一种结合稀疏和密集嵌入的方法,两者捕获不同的相关性特征并能互相补充。稀疏检索模型可为密集模型提供初始搜索结果以供训练,预训练语言模型(PLM)可用于学习词权重以增强稀疏检索。稀疏模型还能提升密集模型的零样本检索能力和处理罕见实体的能力,从而增强其鲁棒性。
当上下文与预训练语料库显著偏离时,尤其是在医疗、法律等专业领域,需要对Embedding model进行微调以适应领域专有术语。除了补充领域知识外,微调的另一个目的是使检索器和生成器对齐。例如,利用大型语言模型(LLM)的结果作为监督信号进行微调,称为LSR(LM-supervised Retriever)。
PROMPTAGATOR使用LLM作为少量示例查询生成器,创建针对特定任务的检索器,解决了数据稀缺领域监督微调的挑战。LLM-Embedder则利用LLM在多个下游任务中生成奖励信号,细分为数据集的硬标签和来自LLM的软奖励,这种双信号方法促进了更有效的微调过程,使嵌入模型适应各种下游应用。REPLUG使用检索器和LLM计算检索文档的概率分布,通过计算KL散度进行监督训练。这种方法通过使用LM作为监督信号增强了检索模型的性能,无需特定的交叉注意力机制。
受到人类反馈强化学习(RLHF)的启发,利用基于LM的反馈通过强化学习加强检索器的性能,这一方法进一步提升了RAG系统的效能。总之,嵌入模型在RAG中起着核心作用,通过混合检索、模型微调和强化学习等技术不断优化和提升其性能。
3.5 Adapter
为了优化大型语言模型(LLM)的多任务处理能力,研究者们提出了几种不同的方法,包括使用适配器来解决模型微调中的挑战。具体来说,微调模型可能会面临通过API集成功能的难题,或是受限于本地计算资源的约束。因此,一些策略选择加入外部适配器来辅助模型的对齐。
模型对齐(Model Alignment 或 AI Alignment)是指在人工智能(AI)系统,特别是大型语言模型(LLMs)的设计和优化过程中,确保这些模型的行为、输出和决策能够符合人类的价值观、伦理标准和社会期望的过程。这一概念在AI安全和伦理领域尤为重要,因为随着模型能力的提升,它们潜在的影响也越来越大,因此需要确保这些影响是积极且有益的。
模型对齐的目标包括但不限于:
- 避免幻觉问题:减少模型生成不存在或不准确信息的可能性。
- 防止有害行为:确保模型不会生成鼓励或执行恶意行为的内容。
- 遵守伦理准则:使模型的决策和行为符合社会伦理和法律规范。
- 提高可解释性:使模型的决策过程对人类用户更加透明和可理解。
- 价值一致性:保证模型的目标和行为与人类用户的意图和价值观一致。
模型对齐涉及的技术和方法可以分为几个主要类别:
- 外部对齐:这通常涉及到模型与外部知识源的交互,例如通过检索增强生成(RAG),允许模型访问和引用最新的事实信息或专业知识。
- 内部对齐:关注模型内部的语义表示和计算过程,确保它们能够反映人类的语义理解和逻辑推理。
- 可解释性增强:开发技术来解析模型的决策过程,使其对人类用户更加透明。
- 目标对齐:通过强化学习或其他机制来调整模型的目标函数,使其输出与人类的期望和偏好对齐。
- 细粒度控制:允许用户或管理员通过接口或规则集来精细控制模型的行为。
实现模型对齐的挑战包括数据偏见、模型复杂性导致的“黑盒”效应、以及模型在现实世界应用中可能遇到的各种未预见情况。因此,模型对齐是一个活跃的研究领域,旨在开发新的算法、评估框架和基准,以推动AI系统的安全、可靠和负责任的发展。
UPRISE[20]设计了一个轻量级的提示检索器,该检索器可以从预建的提示池中自动提取适合零样本任务输入的提示。这种方法使得模型能够在没有先验知识的情况下执行特定任务。AAR(增强型适应检索器)[47]则引入了通用适配器,旨在适应多种下游任务,使模型能够灵活地应对不同场景。
PRCA[69]增加了一个可插拔的、奖励驱动的上下文适配器,专门用于提升特定任务上的性能。通过这种方式,模型能够学习到如何在特定任务中获得更好的结果。
BGM[26]则采取了不同的策略,它固定了检索器和LLM,但在二者之间训练了一个桥梁式的Seq2Seq模型。这个桥梁模型的作用是将检索到的信息转化为LLM可以有效处理的形式,这样不仅可以重新排序检索结果,还可以动态地为每个查询选择合适的段落,甚至可能运用如重复等更高级的策略。
PKG10介绍了一种创新方法,通过指令微调将知识融入到透明模型中。在这一方法中,检索模块被直接替代,根据查询生成相关文档。这种方法有助于克服微调过程中的困难,并提高模型的性能,使得模型在处理复杂任务时更加得心应手。
综上所述,适配器技术为解决大型语言模型在微调和多任务处理方面的挑战提供了有力的支持,通过引入外部组件或调整内部结构,显著增强了模型的灵活性和性能。
4. Generation
在检索增强生成(RAG)系统中,直接将所有检索到的信息输入给大型语言模型(LLM)以回答问题并非明智之举。为了提高LLM生成的准确性和相关性,需要从两个角度对检索到的内容进行调整:一是对检索结果的处理,二是调整LLM本身。
上下文精炼(Context Curation)
上下文精炼是必要的,因为冗余信息会干扰LLM的最终生成,而过长的上下文会使LLM陷入“中间遗忘”的问题,即像人类一样,LLM往往更关注文本的开头和结尾,忽略中间部分。为解决这一问题,RAG系统通常需要进一步处理检索出的内容。
-
重排序(Reranking):这是一种重新排列文档片段的方法,确保最相关的结果优先展示,从而有效地缩小文档池范围。重排序不仅增强了检索效果,还起到了过滤作用,为LLM提供更精准的输入。重排序可以使用基于规则的方法,依赖预定义的指标如多样性、相关性和平均倒数排名(MRR),也可以采用基于模型的方法,比如BERT系列的编码器-解码器模型(例如SpanBERT)、专门的重排序模型如Cohere重排序或bge-raranker-large,以及通用的大型语言模型如GPT。
-
上下文选择与压缩(Context Selection/Compression):一个常见的误区是认为检索尽可能多的相关文档并将其拼接成一个长提示是有益的。然而,过多的上下文会导致噪声增加,降低LLM对关键信息的感知。为了解决这个问题,(Long) LLMLingua利用小型语言模型(SLMs)如GPT-2 Small或LLaMA-7B来检测并移除不重要的词汇,将其转换成虽然人类难以理解但LLM能理解的形式。这种方法直接且实用地压缩了提示,无需额外训练LLM,同时保持了语言完整性和压缩比率。PRCA通过训练信息提取器来解决这个问题,而RECOMP则采取类似方法,通过对比学习训练信息浓缩器。每个训练数据点包括一个正样本和五个负样本,编码器在整个过程中使用对比损失进行训练。
-
此外,减少文档数量也有助于提高模型答案的准确性。Ma等人提出的“Filter-Reranker”范式结合了LLM和SLM的优点,其中SLM作为过滤器,而LLM作为重排序者。研究显示,指导LLM对SLM识别出的困难样本进行重排,可以在各种信息抽取任务中取得显著改进。另一种简单有效的方法是让LLM在生成最终答案前评估检索到的内容,这允许LLM通过自我批判来排除相关性差的文档。例如,在Chatlaw中,LLM被提示自我建议引用的法律条文,以评估它们的相关性。
综上,上下文精炼是RAG系统中不可或缺的步骤,它通过重排序和上下文选择与压缩等技术,提高了LLM生成结果的质量和效率。
LLM Fine-Tune
-
针对特定场景和数据特征对大型语言模型(LLM)进行微调能够产生更佳的结果。这是使用本地部署LLM的一大优势,尤其是在模型缺乏某一领域数据时,通过微调可以向LLM注入额外的知识。Huggingface提供的微调数据集可以作为初始训练的一个起点。
-
微调的另一个好处是能够调整模型的输入和输出。例如,这可以使LLM适应特定的数据格式,并按指令生成特定风格的响应。对于涉及结构化数据的检索任务,SANTA框架实施了一个三阶段训练流程,以有效捕捉结构和语义细节。初步阶段集中在检索器上,通过对比学习优化查询和文档的嵌入表示。
-
将LLM的输出与人类或检索器的偏好对齐,可以通过强化学习实现。例如,手动标注最后生成的答案,然后通过强化学习提供反馈。除了与人类偏好对齐,也可以与已精细调整的模型和检索器的偏好对齐。当无法访问强大的专有模型或大参数开源模型时,一种简单有效的方法是对更强的模型(如GPT-4)进行知识蒸馏。LLM的精细调整可以与检索器的精细调整同步进行,以使两者偏好一致。RA-DIT就是一种典型方法,它使用KL散度来对齐检索器和生成器之间的评分函数。
微调LLM不仅可以弥补其在特定领域知识上的不足,还能让模型更好地适应不同场景的需求,优化输入输出,以及通过与人类和机器偏好的对齐,提升模型的性能和实用性。
5. Augmentation process in RAG
在检索增强生成(RAG)框架下,迭代检索、递归检索和自适应检索是三种用于提升模型性能的关键技术,它们分别在不同场景下优化了知识获取的过程,从而改善了大型语言模型(LLM)的生成质量。
除了最常见的一次性检索外,RAG 还包括三种类型的检索增强过程。
- (左)迭代检索涉及在检索和生成之间交替进行,从而允许在每个步骤中从知识库中获得更丰富、更有针对性的上下文。
- (中)递归检索涉及逐步细化用户查询并将问题分解为子问题,然后通过检索和生成不断解决复杂问题。
- (右)自适应检索的重点是使 RAG 系统能够自主确定是否需要外部知识检索以及何时停止检索和生成,通常利用 LLM 生成的特殊token进行控制。
A. 迭代检索(Iterative Retrieval)
迭代检索是一种动态的检索策略,它允许RAG系统基于初始查询和已经生成的文本内容,多次查询知识库。这种多轮次的检索有助于构建更全面的信息基础,特别是在处理需要多步骤推理的复杂问题时,能够提供更丰富的上下文和针对性更强的信息。通过迭代检索,LLM能够在每次迭代中获得新的信息,进一步优化后续的生成结果,避免了一次性检索可能带来的信息局限性和不准确性。
B. 递归检索(Recursive Retrieval)
递归检索策略专注于深化检索深度和提高结果的相关性。它通过逐步细化用户查询,将大问题分解成一系列子问题,然后通过连续的检索和生成循环来解决复杂问题。这种检索方式特别适用于初始查询模糊不清或者所需信息高度专业化的情况,通过逐步逼近和细化,最终达到最佳的检索效果。递归检索能够帮助RAG系统逐步聚焦于最相关的信息,从而提供更加精准的搜索结果。
C. 自适应检索(Adaptive Retrieval)
自适应检索技术赋予了RAG系统自主判断是否需要外部知识以及何时停止检索和生成的能力。这种机制通常依赖于LLM生成的特殊控制令牌,来决定是否继续检索,何时转入生成阶段。自适应检索提高了系统的灵活性和效率,允许模型根据实际需求动态调整检索策略,避免了不必要的计算资源浪费,同时确保了信息的充分性和及时性。
迭代检索、递归检索和自适应检索分别针对不同的信息需求和场景,通过优化检索流程,提升了RAG系统处理复杂任务的能力,增强了生成内容的准确性和实用性。这些技术的综合运用,为RAG在各种应用领域提供了强大的支撑,推动了RAG系统向着更加智能化和高效的方向发展。
6. Task and Eval
RAG(检索增强生成)在自然语言处理(NLP)领域的快速发展和广泛应用,使得评估RAG模型成为大型语言模型社区研究的焦点。评估的主要目标是理解并优化RAG模型在不同应用场景下的表现。RAG的核心任务是问答(QA),包括单跳/多跳QA、多项选择、特定领域的QA以及适合RAG的长篇幅场景。此外,RAG正在扩展到信息抽取(IE)、对话生成、代码搜索等下游任务中。
评估RAG模型主要关注两个方面:检索质量和生成质量。检索质量评估确定检索器组件提取上下文的有效性,使用搜索引擎、推荐系统和信息检索系统的标准指标,如命中率、平均精确率(MRR)和规范化折损累积增益(NDCG)。生成质量评估则关注生成器从检索到的上下文中合成连贯且相关答案的能力,分为无标签和有标签内容的评价,前者考察答案的忠实度、相关性和无害性,后者侧重于信息的准确性。
当代RAG模型的评估实践强调三个质量分数和四种关键能力。质量分数包括上下文相关性、答案忠实度和答案相关性。上下文相关性确保检索内容的准确性和具体性;答案忠实度保证答案与上下文一致,避免矛盾;答案相关性要求答案直接关联提问,有效回应核心问题。
四种关键能力包括噪声鲁棒性、否定拒绝、信息整合和反事实鲁棒性。噪声鲁棒性衡量模型处理与问题相关但缺乏实质信息的文档的能力;否定拒绝评估模型在没有必要知识时避免回答的能力;信息整合评估模型从多文档中综合信息应对复杂问题的能力;反事实鲁棒性测试模型识别和忽略已知不准确信息的能力。
RAG的评估还涉及一系列基准测试和工具,例如RGB、RECALL和CRUD,这些工具不仅提供量化指标评估模型性能,也加深了对模型在各评估方面能力的理解。自动化工具如RAGAS、ARES和TruLens使用大型语言模型来评估质量分数,共同构成了一个全面的RAG模型评估框架。
RAG模型的评估涵盖了从上下文检索到答案生成的各个环节,通过质量分数和关键能力的评估,结合定制的评估工具和基准,形成了一套全面的RAG模型评估体系,以促进其在NLP领域的持续进步和应用。
7. 未来方向
尽管检索增强生成(RAG)技术取得了显著进展,但仍存在一些需要深入研究的挑战。以下是RAG当前面临的挑战及未来研究方向:
-
RAG与长上下文的关系:
随着研究的深入,大型语言模型(LLM)能够处理超过20万词的上下文。这意味着对于长文档的问答,可以不再依赖RAG而直接将整篇文档作为提示。然而,RAG仍然具有不可替代的作用,它能提高操作效率,并帮助用户验证生成的回答,使推理过程变得可观察。此外,RAG在超长上下文中处理更复杂的问题和需要大量阅读才能回答的总结性问题方面展现出新的潜力。 -
RAG的鲁棒性:
在检索过程中遇到的噪音或矛盾信息会严重影响RAG的输出质量。提高RAG抵抗此类对抗性或反事实输入的能力正成为研究热点和性能指标。例如,Cuconasu等人发现包含无关文档反而可能意外地增加准确性,这表明需要进一步探索RAG的鲁棒性。 -
混合方法:
将RAG与微调相结合是当前的一个主要策略,如何最优地集成这两种方法以及如何利用参数化和非参数化的优点是未来研究的重点。 -
RAG的规模定律:
虽然大型语言模型的规模定律已确立,但RAG模型的参数数量和适用性仍需进一步研究。逆规模定律的可能性——小模型胜过大模型——尤其值得探索。 -
生产就绪的RAG:
提升检索效率、改进大规模知识库中的文档召回以及确保数据安全是工程领域面临的关键挑战。例如,防止LLM泄露文档来源或元数据是亟待解决的问题。 -
RAG生态系统的发展:
RAG工具包正在向基础技术栈汇聚,为高级企业应用奠定基础,但完全集成的平台概念仍在发展中。 -
多模态RAG:
RAG已经超越了基于文本的问答,开始涵盖多种模态数据,如图像、音频、视频和代码。例如,RA-CM3能检索和生成文本与图像,而Vid2Seq则通过专门的时间标记增强了事件边界预测和文本描述。
未来的研究方向包括:开发适用于超长上下文的新RAG方法、提升RAG的鲁棒性、探索混合RAG与微调的最佳策略、研究RAG的规模定律、实现生产环境下的RAG优化、推动RAG生态系统的集成发展以及拓展RAG至多模态应用领域。
更多推荐
所有评论(0)