1. RAG
RAG 的核心是以知识为中心的方法,该方法将外部知识作为改进语言生成的关键因素。通过整合相关的实时和结构化信息,RAG 模型可以显著提高其生成上下文准确且基于事实的内容的能力。这种以知识为中心的视角解决了传统语言模型的关键限制之一,这些模型受其训练数据的限制,并且无法访问动态或特定于领域的知识。外部知识的集成使 RAG 模型不仅可以检索和整合相关细节,还可以对多条信息进行推理,从而产生更细致和明智的输出
1.1 挑战
- 知识选择,其中模型必须有效地从大量外部来源中识别最相关的信息。鉴于现实世界知识库的庞大、嘈杂和多样化,这项任务尤其具有挑战性
- 知识检索,这涉及在生成时检索正确的信息,同时平衡效率和相关性。当前的检索技术通常难以将查询与知识源准确匹配,尤其是在高度专业化或模棱两可的上下文中
- 知识增强的上下文推理是一个重大障碍,因为模型不仅必须检索相关知识,而且还必须以连贯且上下文适当的方式有效地整合和推理它。
2. RAG起源
到 2020 年,Facebook 引入了 RAG 的概念,并将其有效地应用于知识密集型任务。RAG 通过检索机制集成外部知识来增强生成模型,从而显著提高问答和文本理解等任务的性能。同时,Google 的 REALM 采用了一种类似的检索增强方法。通过在预训练阶段加入潜在知识检索器,REALM 在开放域问答方面取得了重大进步,建立了当时最先进的结果。从那时起,RAG 因其相对于传统生成模型的独特优势而受到越来越多的研究关注
3. 概述
检索增强生成 (RAG) 已成为一种强大的范式,它将大型语言模型 (LLM) 的内部知识与外部知识相结合,以提高生成质量。通过将检索机制集成到生成管道中,RAG 解决了传统序列到序列框架的局限性,尤其是在需要广泛领域知识的场景中。

该框架由三个主要部分组成:(1) 查询由 LLM 及其内部知识处理,(2) 根据查询检索外部知识,以及 (3) 知识集成结合内部和外部知识以生成最终答案
4. 基本原理和目标
RAG 的基础知识和目标,包括用户意图理解、知识检索、知识集成、答案生成和 RAG 评估
4.1 用户意图理解
准确理解用户意图对于 RAG 模型生成语义相关和上下文适当的响应至关重要,这需要分析可能模棱两可或包含隐含含义的用户查询,通常缺乏明确的细节。由于用户特定的个性化偏好在确定每个请求背后的确切意图方面带来了挑战,因此用户查询可能会有很大差异。 为了克服这些挑战,RAG 模型需要实施高级意图理解策略,这些策略结合了上下文理解和语义分析。文本建模 (Alghamdi 和 Alfalqi,2015 年)、 查询重写和意图聚类等策略可以增强 LLM 解释用户需求的能力,从而实现更精确的检索和生成
4.2 知识检索
知识检索的主要挑战之一是处理大规模数据集,这需要复杂的索引技术,例如倒排索引、近似最近邻 (ANN) (Arya et al, 1998) 搜索和可缩放向量表示 (Gormley and Tong, 2015) 以保持快速访问时间。此外,多样性和非结构化数据源需要强大的预处理和规范化方法,以确保一致性和相关性。
4.3 知识集成
将检索到的知识整合到 LLM 中是一项具有挑战性的任务,需要外部知识和 LLM 的内部知识之间无缝对齐 (Grigoriou 和 Rothaermel,2017)。 这种整合对于生成不仅在语义上相关,而且在上下文中具有连贯性和适当性的输出至关重要。重大挑战之一是确保 LLM 能够有效地解释和利用检索到的信息,而不会引入不一致或事实不准确,这需要将各种数据类型(例如文本块)和结构化数据合并为 LLM 可以处理的统一表示的策略。
4.4 答案生成
在 RAG 模型中实现卓越的答案生成涉及将检索到的信息与 LLM 的自然语言能力综合在一起以确保输出准确、相关和连贯的复杂任务
4.5 RAG评估
由于检索和生成任务的双重性质,评估 RAG 的性能会带来一系列独特的挑战。传统的评估指标,如 BLEU (Papineni et al, 2002) 和 ROUGE (Lin, 2004), 主要通过与参考输出进行比较来关注生成文本的质量。但是,这些量度可能无法充分捕捉检索组件的有效性,而检索组件在确定生成内容的相关性和准确性方面起着至关重要的作用。为了解决这个问题,全面的评估框架必须整合评估检索准确性(例如,精度、召回率、F1 分数 (Yacouby 和 Axman,2020 年))和生成质量(例如,连贯性、流畅性、事实准确性)的指标。
5. 基本的RAG方法
基本的 RAG 方法包括几个关键步骤:用户意图理解、知识来源和解析、知识嵌入、知识索引、知识检索、知识集成、答案生成和知识引用。本节介绍这些核心组件,展示 RAG 系统如何理解用户查询、处理不同类型的知识、将信息转换为向量、构建搜索索引、检索相关内容、将知识与模型集成以及生成具有适当引用的答案。
5.1 用户意图理解
提高查询质量的两种方法:查询分解和查询重写
- 查询分解方法已成为增强语言模型推理能力的有效策略,特别是对于需要多步骤或组合推理的复杂任务。诸如最少到最提示(周 et al, 2022)等技术将困难的问题分解为逐渐简单的子问题,从而提高对较难任务的泛化
- 查询重写已成为提高 RAG 性能的关键技术,尤其是在解决语义差距和改善任务结果方面。重写-检索-读取 (RRR)(马 et al, 2023) 通过使用 LLM 在检索之前创建和优化查询,并使用由强化学习指导的可训练重写器来优化查询生成过程。这种方法改进了查询和目标知识之间的一致性,从而提高了开放域 QA 和多项选择任务的性能
5.2 知识源和解析
RAG 采用的知识类别,包括结构化、半结构化、非结构化和多模态知识,以及它们各自的解析和集成方法。
- 结构化知识的利用:知识图谱 (KG) 是一种结构化表示,以图形格式封装实体及其相互关系,为 RAG 提供了优势。它们的结构化特性有助于高效的查询和检索,而它们捕获的语义关系有助于细致的理解和推理
- 半结构化知识的提取:半结构化数据介于结构化和非结构化格式之间,具有没有僵化架构的组织元素。示例包括 JSON 和 XML 文件、电子邮件,尤其是 HTML 文档。HTML 是网页的基础,它将结构化组件(如标签和属性)与非结构化内容(如自由格式文本)混合在一起。这种混合性质允许以分层格式表示复杂信息,包括文本、图像和链接。然而,HTML 的灵活性可能会导致不一致和不规则,给数据提取和集成到 RAG 中带来挑战。目前,RAG 的研究已经开始集中在解析 HTML 上,如 HtmlRAG 等方法所示(Tan et al, 2024)。然而,在大多数情况下,开源 HTML 解析技术对于高效数据提取和无缝集成仍然不可或缺。这些工具提供了强大的解析能力和对各种 HTML 结构的适应性,确保了各种应用程序上下文中的高效率和准确性。
- 非结构化知识的解析
- 多模态知识集成
5.3 知识嵌入
知识通常存储在广泛的文本文档中,这些文档首先被分割成简洁而有意义的单元,每个单元都包含一个独特的核心思想。这些单元随后被转换为对语义信息进行编码的向量嵌入,从而促进通过相似性指标进行高效检索
- 块分区
- 文本嵌入模型
- 多模态嵌入模型
5.4 知识索引
在 RAG 中,索引被定义为数据的结构化组织,它支持从大规模数据集中高效访问和检索信息。索引将用户查询映射到相关的文档块、知识片段或其他信息内容,充当存储的数据和检索机制之间的桥梁。索引的有效性对于 RAG 系统至关重要,因为它直接影响响应精度、检索速度和计算效率
5.4.1 索引结构
分为结构化索引和非结构化索引 图形索引是一种非结构化索引形式,它利用图形结构的固有优势来表示和检索互连的数据。在图形索引中,数据点被描述为节点,而这些点之间的关系则通过边缘来表示。这种索引范式特别擅长捕获语义关系和上下文信息,这对于促进 RAG 系统中的有效检索至关重要。由于这些优势,图形索引越来越多地被 RAG 应用程序采用 混合索引
5.4.2 索引更新和存储
索引更新在确保 RAG 系统在引入新数据时保持准确和高效方面发挥着关键作用。在实践中,索引更新通常通过两种主要方法执行: 增量更新和定期重建 ,其中 增量更新 ,在现有索引中添加或修改条目的过程,而无需重建整个结构,可以有效地适应不断变化的数据,同时最大限度地减少计算开销,因此在不断提供新信息的动态系统中特别有益引入,如 Light RAG(Guo et al.,2024 年 ) 和 REALM(Guu 等 人 。,2020b)
5.5 知识检索
5.5.1 检索策略
检索的目标是根据输入查询识别和提取最相关的知识。具体来说,该任务涉及通过使用相似性函数来检索前 k 个最相关的块。根据相似性函数的不同,检索策略可以分为稀疏检索、密集检索和混合检索三种类型 稀疏检索: 稀疏检索策略利用稀疏向量通过术语分析和匹配来检索文档或块。传统的稀疏检索策略利用术语匹配指标,如 BM25(Robertson et al, 2009)、TF-IDF(Robertson and Walker, 1997) 和查询可能性 (Lafferty and Zhai, 2001), 它们通过计算术语出现的频率和反向文档频率来估计文档与查询的相关性 密集检索。 密集检索策略将查询和文档编码到低维向量空间中,其中相关性通过其向量表示之间的点积或余弦相似性来衡量
5.5.2 搜索方法
搜索方法是指旨在从给定查询向量的向量数据库中有效识别相似向量的算法。搜索方法可分为两种类型:最近邻搜索 (NNS) 和近似最近邻搜索 (ANNS)。NNS 旨在在给定集中找到与查询向量最接近(或最相似)的向量,而 ANNS 是 NNS 的一种变体,它允许在搜索结果中控制误差或近似程度(Han et al, 2023)
5.6 知识整合
知识整合是指将检索到的外部知识与生成模型的内部知识进行集成,以提高输出的准确性和连贯性。基本上,知识集成有三种类型:输入层集成、中间层集成和输出层集成
- 输入层集成是指将检索到的信息与输入层的原始查询直接集成,旨在增强生成过程中的上下文信息。根据集成的方法,输入层集成可以分为两种类型: 文本级集成 和 特征级集成。一种简单的文本级集成方法涉及直接将检索到的 top-k 文档与查询连接起来;特征级集成侧重于将检索到的内容的编码形式与特征级的原始输入集成
- 中间层集成是指将外部知识整合到生成器的隐藏层中
- 输出层集成是指在生成器的输出层集成检索到的知识
5.7 答案生成
RAG 系统中的生成组件是生成准确且与上下文相关的响应的核心。然而,在 RAG 模型中实现高质量的输出需要克服两个主要挑战:处理嘈杂的检索和对不同信息进行有效推理
5.7.1 降噪
降噪对于减轻从大型知识库中检索的不相关、矛盾或其他误导性信息的影响至关重要。检索中的噪声会严重影响生成输出的事实准确性和连贯性,因此降噪机制在 RAG 管道中不可或缺
- 显式降噪技术。 一种有效的去噪方法是通过明确的监督
- 基于判别器的降噪。 另一种方法是使用判别性过滤机制。
- 自反射和自适应降噪。 Self-RAG(Asai 等 人,2023 年)引入了一种自我反思机制,在该机制中,模型通过评估自己的连贯性和真实性来批评和修改自己的回答。这种方法提供了一种动态的噪声处理方式,因为模型可以通过自我评估迭代过滤掉不可信或不相关的信息
- 上下文筛选和置信度评分
5.7.2 推理
有效的推理使模型能够将检索到的信息置于上下文中,建立逻辑连贯性,并生成准确反映复杂关系的响应。
- 结构化知识和基于图的推理。 一种高级推理方法涉及集成结构化知识源(例如知识图谱)以协助复杂的关系推理。
- Multi-Document Reasoning 的交叉注意。
- 记忆增强推理
- 检索校准和选择性推理
- 分层和多通道推理
5.8 知识引用
RAG 中的引用对于确保模型响应的透明度、可信度和事实依据至关重要。通过将生成的内容归属于可验证的来源,它使用户能够轻松验证信息,减轻索赔验证的负担,并改进评估流程。此外,有效的引用有助于减轻幻觉,加强模型输出的事实完整性。
5.8.1 引文生成策略
同步引文生成和生成后引文检索, 同时生成提供更强的事实基础,而生成后引文在响应生成方面提供了更大的灵活性
5.8.2 引文粒度的进展
引文粒度(引文中提供的详细程度)在最近的模型中得到了显著提高
6. 先进的RAG方法
高级 RAG 方法被定义为超越基本 RAG 模型的方法,包括一系列旨在克服基本 RAG 系统局限性的尖端技术。这些方法旨在增强 RAG 系统在多个维度上的能力,包括训练优化、多模态处理、内存增强和代理推理。具体来说,本节深入探讨了四个关键进步:RAG 训练,侧重于提高检索和生成之间的协同作用;多模态 RAG,集成多种传感模态,实现丰富的输出;Memory RAG,它结合了长期记忆以改善上下文推理和个性化;以及 Agentic RAG,它引入了迭代和动态优化机制来处理不断变化的信息需求。这些方法共同突破了 RAG 系统所能实现的界限,使它们能够处理复杂、动态和专业的任务。
6.1 RAG培训

训练 RAG 模型需要平衡检索和生成组件的优化,以实现最佳性能。有效的训练策略可确保检索器获取相关信息,而生成器则产生连贯且准确的输出。RAG 培训包括静态培训、单向引导培训和协同培训
6.1.1 静态训练
静态优化训练是一种简单而有效的方法,其中检索器或生成器在训练过程中保持固定,允许优化仅关注其他组件。此方法在计算资源有限或需要快速部署的情况下特别有利。但是,静态优化的主要缺点是可能会损害整体系统性能。由于只有一个组件被优化,检索和生成之间的协同作用可能无法完全实现,这可能会限制模型适应特定任务或域的能力。
6.1.2 单向引导训练
单向引导式训练引入了一种定向优化策略,其中一个组件指导另一个组件的训练。这种方法可以分为两种不同的方法:检索器指导的生成器训练和生成器引导的检索器训练
6.1.3 写作训练
采用协优化策略,同时优化 retriever 和 generator 以实现最佳的整体系统性能。这种整体方法可确保一个组件的改进加强另一个组件的增强,从而培养协同关系,从而最大限度地发挥整个 RAG 系统的能力。通过联合训练这两个组件,系统可以更好地将相关文档的检索与准确、连贯的文本生成保持一致。
6.2 多模态RAG
多模态 RAG 通过整合多种模态(包括图像、音频、视频等)扩展了传统的基于文本的 RAG 系统。与基于文本的 RAG 系统相比,多模态 RAG 面临两个主要挑战。
- 首先,它需要有效地表示和检索不同模态的知识,需要复杂的方法将不同的数据类型转换为统一的表示形式,并支持跨模态搜索。
- 其次,在检索多模态知识后,系统必须理解并利用跨模态的信息来生成适当的响应,这需要先进的多模态理解和生成技术。 本节探讨了这两个方面:多模态 RAG 系统如何表示和检索不同类型的信息,以及它们如何理解和整合这些多模态知识以产生基于上下文的响应
6.2.1 多模态表示和检索
多模态 RAG 系统的基础在于它们能够有效地表示和检索不同模态的信息。这既需要复杂的嵌入模型将不同的数据类型转换为统一的向量表示,也需要专门的检索机制来有效地跨模态搜索。已经开发了各种方法来应对这些基本挑战:
- 不同的模式需要专门的方法来有效地表示和检索。
- 多模态 RAG 系统的有效性从根本上取决于这些表示和检索能力。
6.2.2 多模态理解和生成
以有效的多模态表示和检索为基础,多模态理解和生成能力对于增强 RAG 系统而不仅仅是文本处理至关重要。虽然表示和检索允许访问相关的多模态内容,但系统必须进一步处理这些信息以理解跨模态关系并生成连贯的输出, 现代多模态 RAG 系统通过复杂的方法来整合各种模态的理解和生成,从而解决了这些限制。像 CLIP、MuRAG…
6.3 Memory RAG
- 问题:传统的 RAG 系统主要依赖于两个极端的知识存储和访问:通过预训练嵌入语言模型中的隐式内存,以及直接检索和处理原始文本块的工作内存。虽然语言模型擅长在其参数中存储压缩的一般知识,而传统的 RAG 通过文本检索有效地处理即时上下文,但这两种方法之间存在关键差距。
- 解决方法:Memory RAG 通过引入用作中间层的显式内存机制来弥合这一差距。这种方法对于需要全面了解长文档或随着时间的推移保持个性化知识的场景特别有价值,例如书籍理解和技术文档分析,其中它可以维护文档结构和关键见解的分层表示,以及个性化场景,它可以有效地存储和更新用户首选项和行为模式的压缩表示。
- 优点:这种中间方法的价值在于它相对于两个极端的独特优势。与语言模型中需要昂贵的重新训练才能更新的刚性隐式内存不同,也与直接处理原始文本的计算密集型工作记忆不同,Memory RAG 中的显式内存提供了一个灵活高效的中间地带。它支持知识的压缩、结构化表示,这些知识既比模型参数更具更新性,又比原始文本处理更高效。通过实现这些不同的内存机制,Memory RAG 创建了一个更完整的知识处理管道,它结合了所有三种内存类型的优势。本节首先探讨了这些不同类型的内存及其互补作用,然后演示了它们的技术实现如何有助于 RAG 系统中更高效和可扩展的信息处理。
6.3.1 内存类型
- 隐式内存:类似于人类的内隐记忆(Gabrieli et al, 1988;Corkin, 2002;Bayley 和 Squire,2005 年)代表了深深嵌入但无法有意识地获取的知识。正如人类在没有意识思考的情况下发展骑自行车或打字等无意识技能一样,RAG 系统通过训练在其模型参数中编码隐含知识。
- 显式内存:与人类外显记忆相似(Parkin et al, 1990)——对事实和经验的有意识回忆。在 RAG 系统中,它充当长期知识的压缩、结构化表示,用于捕获对信息源的高级理解。
- 工作内存:工作记忆反映了人类的短期记忆 (Cowan, 2001, 2012), 作为即时处理的临时存储。在 RAG 系统中,这表现为检索到的纯文本块,这些块被合并到提示上下文窗口中,以及最近的对话历史记录和中间计算结果。就像人类在执行复杂任务时牢记最近的信息一样,RAG 的工作记忆会暂时保存相关的检索到的段落,以通知当前生成的任务。这种类型的内存的特点是高频访问、每个新任务的快速更新和临时存储。它面临着与人类工作记忆类似的容量限制——它受到计算资源和上下文窗口大小的限制,就像人类只能立即感知有限数量的信息一样。提示中检索到的段落用作临时工作区,模型在其中处理和综合信息以生成适当的响应。
6.3.2 技术实现
Memory RAG 主要关注显式内存,它采用稀疏键值缓存的形式,用作原始文本和模型参数之间的中间表示。Memory RAG 通过键值缓存将知识从原始文本转换为更紧凑、结构化的显式记忆,使用这些记忆来指导和优化检索过程,并减少对实时检索的依赖以提高系统效率。它通过高效的内存管理降低计算成本,通过存储和选择性检索信息来增强长文本处理能力,并通过结构化知识表示提高答案的准确性和可解释性。具体方法有:Memory、MemoRAG、CAG
6.4 Agentic RAG

Agentic RAG 是一个高级框架,它将自主代理与 RAG 技术集成在一起,显著提高了信息检索和生成过程的性能。此策略引入了基于代理的决策,以动态管理检索策略,从而改进复杂的问题解决、知识管理和生成流程。在 Agentic RAG 中,自主代理负责查询理解、工具利用和推理优化。
- 查询理解和策略规划 查询理解和策略规划是 Agentic RAG 中的关键步骤,它能够有效地理解用户查询并制定适当的检索策略。代理分析查询复杂性和主题,以确定检索的优先级和方法。
- Toolkit利用率 Agentic RAG 的一个关键功能是它能够利用多种工具。代理能够使用传统的搜索引擎、计算器、API 和其他外部工具来增强检索和推理能力。
- 推理和决策优化 推理和决策优化是 Agentic RAG 系统的核心机制,确保代理根据不断变化的信息和环境做出最佳决策。通过推理,代理可以评估多个信息源的可靠性,执行多步骤推理,并根据推理结果优化检索策略
7. RAG的综合评估策略
评估 RAG 系统需要评估其有效性和效率。有效性评估检查模型检索相关上下文、将其整合到连贯答案中以及保持整体准确性的能力。效率评估考虑了检索和生成过程的计算资源、响应延迟和可扩展性。
- 评估RAG的有效性
- 评估Query-Context相关性
- 评估上下文-答案的一致性
- 测量 Query-Answer 准确性
- 评估RAG的效率
- RAG 系统的效率对于它们在生产环境中的成功部署至关重要,在生产环境中,低延迟和高吞吐量对于提供响应式服务至关重要。要评估 RAG 效率,需要测量几个关键性能指标,包括延迟、吞吐量和资源利用率。延迟是指端到端响应时间,包括检索和生成阶段。高效的检索机制(如密集或稀疏检索器)在减少延迟方面发挥着重要作用;但是,密集检索器通常需要更高的计算资源,这可能会增加处理时间。吞吐量(表示系统每秒可以处理多少个查询)对于测试扩展能力的高流量环境至关重要。此外,资源利用率(包括 CPU/GPU 使用率和内存消耗)反映了系统在不引入不必要开销的情况下利用硬件资源的效率
8. 下游任务和应用
通常,下游任务涵盖多个领域,包括问答、信息提取、文本生成和分类。 在问答 (QA) 中,RAG 模型通过检索支持准确和相关答案的目标信息来展示显著优势:
- 单跳 QA:对于简单的事实问题,RAG 检索直接解决查询的单个文档或段落,使模型能够以最小的推理复杂性生成精确的答案
- 多跳 QA:RAG 的检索机制在多跳场景中大放异彩,在多跳场景中,它必须从多个来源收集和综合信息,以回答需要连接不同事实或观点的问题。这种多步骤检索功能使 RAG 模型能够处理更复杂的问题并提供深入的响应。
- 长篇 QA:在需要详细、段落长度答案的任务中,RAG 检索并组合多个相关文档,综合出全面而连贯的响应。这对于开放式或复杂的问题特别有价值,因为它使模型能够产生细致入微且明智的答案。
在信息提取中,RAG 从外部来源提取上下文相关数据的能力提高了实体和关系识别的准确性和深度:
- 实体链接:通过访问特定实体的实时信息,RAG 模型可以更准确地将文本中提到的实体链接到知识库中的标准化条目,从而提高歧义消除和上下文理解。
- 关系提取:RAG 的检索功能允许模型收集有关相关实体的背景信息,从而有助于准确识别文本中的关系。这支持结构化知识的构建,对于知识图谱开发等应用程序非常有用。
在文本理解和生成中,RAG 通过检索补充信息来增强可解释性和相关性,从而提供上下文深度:
- 文本分类:对于分类任务,尤其是在专业领域中,RAG 可以检索支持准确分类的背景信息或示例,从而提高分类场景中的模型性能。
- 文本摘要:RAG 可以从相关文档中检索摘要或其他上下文,帮助模型专注于最相关的点,以获得简洁、信息丰富的摘要。