精读笔记 · RAG 综述:检索增强生成全景图
论文全称:Retrieval-Augmented Generation for Large Language Models: A Survey
arXiv 编号:2312.10997(2023 年 12 月投稿,2024 年持续更新)
作者团队:Yunfan Gao, Yun Xiong, Xinyu Gao 等(同济大学 + 复旦大学联合)
通讯作者:Haofen Wang(同济大学智能自主系统研究院)
开源资源:https://github.com/Tongji-KGLLM/RAG-Survey
本文 PDF:RAG综述 Survey [2312.10997].pdf
阅读地图
本综述是 RAG 领域最系统、被引用最广的综述论文,梳理了 100 余篇 RAG 研究,构建了三范式 + 三组件 + 评估体系的完整框架。
| 章节 | 内容 | 精读深度 |
|---|---|---|
| Abstract | RAG 解决什么问题、本文贡献 | ★★★ 逐句精译 |
| Section I Introduction | LLM 局限性、RAG 缘起、演进历史 | ★★★ 核心段精译 |
| Section II | 三大范式(Naive / Advanced / Modular RAG) | ★★★ 逐段精读,重中之重 |
| Section III Retrieval | 检索源、索引优化、查询优化、嵌入模型 | ★★★ 分块讲解 |
| Section IV Generation | 上下文整理、重排序、LLM 微调 | ★★ 关键段落 |
| Section V Augmentation | 迭代/递归/自适应检索 | ★★★ 全部讲解 |
| Section VI Evaluation | 下游任务、评估指标、基准工具 | ★★ 框架梳理 |
| Section VII Future | 挑战与未来方向 | ★ 要点列举 |
RAG 知识地图(整体框架总览)
在深入每一节之前,先建立全局观——以下是整篇综述的骨架:
RAG 全景图
│
├── 为什么需要 RAG?
│ ├── LLM 幻觉(Hallucination):一本正经地胡说八道
│ ├── 知识截止(Knowledge Cutoff):不知道训练截止后的事
│ └── 缺乏领域知识(Domain Gap):专业问题无法准确回答
│
├── 三大范式(演进关系)
│ ├── [1] Naive RAG(朴素 RAG)
│ │ ├── 流程:索引 → 检索 → 生成(一次性)
│ │ └── 问题:检索精度低、幻觉、信息整合差
│ │
│ ├── [2] Advanced RAG(进阶 RAG)
│ │ ├── 在 Naive RAG 基础上加前处理 + 后处理
│ │ ├── 前处理:查询重写、扩展、路由
│ │ └── 后处理:重排序、上下文压缩
│ │
│ └── [3] Modular RAG(模块化 RAG)
│ ├── 将 RAG 拆成可替换的功能模块
│ ├── 新增:搜索模块、记忆模块、路由、预测、任务适配器
│ └── 新模式:迭代/递归/自适应检索,可与微调结合
│
├── 三大核心组件
│ ├── Retrieval(检索)
│ │ ├── 检索源:非结构化文本、半结构化、结构化KG、LLM生成
│ │ ├── 索引优化:分块策略、元数据、层级索引
│ │ ├── 查询优化:扩展、转换、路由
│ │ └── 嵌入:稀疏(BM25)+ 密集(BERT系)+ 混合
│ │
│ ├── Generation(生成)
│ │ ├── 上下文整理:重排序(Reranking)、压缩
│ │ └── LLM 微调:领域适配、与检索器对齐
│ │
│ └── Augmentation(增强)
│ ├── 迭代检索(Iterative):循环检索-生成
│ ├── 递归检索(Recursive):分解子问题逐层检索
│ └── 自适应检索(Adaptive):模型自主决定何时检索
│
└── 评估体系
├── 质量分数:上下文相关性、答案忠实度、答案相关性
├── 能力测试:抗噪声、拒绝无关回答、信息整合、反事实稳健性
└── 评估工具:RGB、RAGAS、ARES、TruLens
前 10 篇精读论文在本框架中的位置:
| 论文 | 综述分类 | 核心贡献 |
|---|---|---|
| RAG 原论文 [2005.11401] | Naive RAG 奠基 | 首次提出 RAG 框架 |
| REALM [2002.08909] | Naive RAG(预训练阶段) | 将检索纳入预训练 |
| DPR [2004.04906] | Retrieval → 嵌入优化 | 双塔密集向量检索 |
| FiD [2007.01282] | Generation → 上下文整理 | 分段编码融合生成 |
| RETRO [2112.04426] | Naive RAG(预训练阶段) | 万亿 token 数据库检索 |
| Atlas [2208.03299] | Advanced RAG | 少样本学习 + 检索器联合微调 |
| HyDE [2212.10496] | Retrieval → 查询转换 | 假设文档嵌入 |
| FLARE [2305.06983] | Adaptive Retrieval | 主动判断何时检索 |
| Self-RAG [2310.11511] | Adaptive Retrieval | 反思标记自主控制检索 |
| CRAG [2401.15884] | Advanced RAG(后处理) | 检索质量评估 + 纠错 |
一、Abstract(摘要)精译
原文 A-1
"Large Language Models (LLMs) showcase impressive capabilities but encounter challenges like hallucination, outdated knowledge, and non-transparent, untraceable reasoning processes."
翻译
大型语言模型(LLMs)展示出令人印象深刻的能力,但面临幻觉、知识过时以及不透明、无法追溯的推理过程等挑战。
新手讲解
这三个挑战是 RAG 存在的根本原因,必须搞清楚每一个:
-
幻觉(Hallucination):大模型在生成答案时,有时会"编造"听起来合理但实际上不存在的事实。比如问某篇论文的引用数,模型可能给出一个听起来真实的数字,但完全是假的。
- 类比:一个记性很好但偶尔会"混淆记忆"的人,说出的话很自信,但有时根本没发生过。 -
知识过时(Outdated Knowledge):大模型的训练数据有截止日期(比如 2023 年初),之后发生的事情完全不知道。就像一本百科全书,印出来后就不会自动更新了。
-
不透明推理(Non-transparent Reasoning):大模型给出答案时,很难知道它"参考了哪些信息"来得出这个结论。RAG 通过显式检索外部文档,让推理过程变得可追溯。
原文 A-2
"Retrieval-Augmented Generation (RAG) has emerged as a promising solution by incorporating knowledge from external databases. This enhances the accuracy and credibility of the generation, particularly for knowledge-intensive tasks, and allows for continuous knowledge updates and integration of domain-specific information."
翻译
检索增强生成(RAG)通过从外部数据库中引入知识,成为一种有前景的解决方案。这提升了生成内容的准确性和可信度,尤其是对知识密集型任务,并允许持续的知识更新和领域特定信息的整合。
新手讲解
术语首次出现 → 检索增强生成(RAG, Retrieval-Augmented Generation):字面意思就是"带检索功能的增强型生成"。核心思路是:回答问题前,先去外部知识库里检索相关资料,把检索到的资料和问题一起交给大模型,让模型参考这些"参考书"再作答。
举个例子:
- 没有 RAG 的 LLM:像一个只能依靠自己记忆回答问题的专家,知识有截止日期,还可能记错。
- 有 RAG 的 LLM:像一个手边有图书馆的专家,回答前先查资料,准确性更高,而且图书馆可以随时更新。
知识密集型任务(Knowledge-Intensive Tasks):需要大量具体事实知识才能正确回答的任务,比如"某个药物的副作用有哪些?"、"某个法律条款的内容是什么?"——这类问题要求精准,不能靠"差不多对"的答案。
原文 A-3
"RAG synergistically merges LLMs' intrinsic knowledge with the vast, dynamic repositories of external databases."
翻译
RAG 将 LLM 的内在知识与外部数据库庞大、动态的信息库协同融合。
新手讲解
这句话抓住了 RAG 的精华:不是替换 LLM 的知识,而是补充它。
- LLM 的内在知识(Intrinsic Knowledge):训练时"记住"的知识,包括语言理解、推理能力、常识等——这部分 RAG 不动。
- 外部动态数据库(Dynamic Repositories):可以随时更新的知识库,比如最新论文、实时新闻、企业内部文档——这部分 RAG 通过检索来利用。
两者结合:LLM 负责理解问题、整合信息、生成流畅的答案;外部知识库负责提供准确、最新的事实。
原文 A-4
"This comprehensive review paper offers a detailed examination of the progression of RAG paradigms, encompassing the Naive RAG, the Advanced RAG, and the Modular RAG. It meticulously scrutinizes the tripartite foundation of RAG frameworks, which includes the retrieval, the generation and the augmentation techniques."
翻译
这篇综合性综述论文对 RAG 范式的演进进行了详细检视,涵盖朴素 RAG、进阶 RAG 和模块化 RAG。它细致审视了 RAG 框架的三位一体基础,即检索、生成和增强技术。
新手讲解
这句话给出了本综述的两个核心框架:
- 纵向:三大范式(时间线演进)—— Naive → Advanced → Modular
- 横向:三大组件(技术分层)—— 检索 + 生成 + 增强
后续精读将沿这两个维度展开。
二、Introduction(引言)精译
原文 I-1(为什么 RAG 出现)
"Large language models (LLMs) have achieved remarkable success, though they still face significant limitations, especially in domain-specific or knowledge-intensive tasks, notably producing 'hallucinations' when handling queries beyond their training data or requiring current information. To overcome challenges, Retrieval-Augmented Generation (RAG) enhances LLMs by retrieving relevant document chunks from external knowledge base through semantic similarity calculation."
翻译
大型语言模型(LLMs)取得了显著成功,但仍面临重大局限性,尤其是在领域特定或知识密集型任务中,当处理超出训练数据范围或需要当前信息的查询时,会产生"幻觉"。为克服这些挑战,检索增强生成(RAG)通过语义相似度计算从外部知识库检索相关文档片段,从而增强 LLM。
新手讲解
注意一个关键词:语义相似度计算(Semantic Similarity Calculation)。
这不是简单的关键词匹配(比如 Google 早期搜索),而是"理解含义后的相似度匹配"。举个例子:
- 用户问:"感冒怎么办?"
- 关键词搜索会找包含"感冒"这个词的文档
- 语义搜索会理解"感冒"的含义,也能找到标题是"上呼吸道感染治疗"的相关文档
这个能力来自于词嵌入(Word Embedding)技术,把文本转换成数字向量,语义相近的词/句子在向量空间中距离也近。DPR 论文(我们第3篇精读)就是专门研究这种密集向量检索的。
原文 I-2(RAG 发展阶段)
"RAG technology has rapidly developed in recent years... Initially, RAG's inception coincided with the rise of the Transformer architecture, focusing on enhancing language models by incorporating additional knowledge through Pre-Training Models (PTM). This early stage was characterized by foundational work aimed at refining pre-training techniques. The subsequent arrival of ChatGPT marked a pivotal moment, with LLM demonstrating powerful in context learning (ICL) capabilities. RAG research shifted towards providing better information for LLMs to answer more complex and knowledge-intensive tasks during the inference stage."
翻译
RAG 技术近年来发展迅速……最初,RAG 的诞生与 Transformer 架构的兴起同步,专注于通过预训练模型(PTM)纳入额外知识来增强语言模型。这一早期阶段以旨在完善预训练技术的奠基性工作为特征。随后 ChatGPT 的到来标志着一个关键转折点,LLM 展示出强大的上下文学习(ICL)能力。RAG 研究转向在推理阶段为 LLM 提供更好的信息以回答更复杂和知识密集型的任务。
新手讲解
RAG 的发展可以分成三个时代:
| 时代 | 代表工作 | 特点 |
|---|---|---|
| PTM 时代(2020-2021) | REALM、RAG原论文、RETRO | 把检索嵌入预训练阶段,模型一边学语言一边学检索 |
| ChatGPT 时代(2022-2023) | Atlas、FLARE、Self-RAG | 利用强大的 LLM 的 ICL 能力,在推理时动态检索 |
| 模块化时代(2023至今) | 各种 Modular RAG | 组件化、可插拔、与微调结合 |
上下文学习(In-Context Learning, ICL):一种无需重新训练模型的学习方式。只需在输入提示中给几个例子,LLM 就能"理解"任务并执行。这是 GPT-3/ChatGPT 的关键能力,使得 RAG 在推理时就能工作,不必改动模型本身。
原文 I-3(本文贡献)
"In this survey, we present a thorough and systematic review of the state-of-the-art RAG methods, delineating its evolution through paradigms including naive RAG, advanced RAG, and modular RAG... We identify and discuss the central technologies integral to the RAG process, specifically focusing on the aspects of 'Retrieval', 'Generation' and 'Augmentation'... We have summarized the current assessment methods of RAG, covering 26 tasks, nearly 50 datasets."
翻译
本综述对最先进的 RAG 方法进行了全面系统的回顾,描述了其通过朴素 RAG、进阶 RAG 和模块化 RAG 范式的演进……识别并讨论了 RAG 过程中的核心技术,专注于"检索"、"生成"和"增强"三个方面……总结了 RAG 的现有评估方法,涵盖 26 个任务、近 50 个数据集。
新手讲解
三个贡献点恰好对应本综述的三大核心框架,这也是我们精读笔记的组织结构:
1. 范式框架(纵向演进):三代 RAG 的来龙去脉
2. 技术框架(横向分解):检索 + 生成 + 增强的具体技术
3. 评估框架(衡量体系):如何客观评估 RAG 系统的好坏
三、RAG 三大范式(核心精华)
这是整篇综述最重要的部分。 三范式不是平行并列的,而是前后演进的:Naive RAG 有问题 → Advanced RAG 打补丁 → Modular RAG 从架构上重新设计。
综述原文框架介绍
"The RAG research paradigm is continuously evolving, and we categorize it into three stages: Naive RAG, Advanced RAG, and Modular RAG. Despite RAG methods are cost-effective and surpass the performance of the native LLM, they also exhibit several limitations. The development of Advanced RAG and Modular RAG is a response to these specific shortcomings in Naive RAG."
翻译
RAG 研究范式在持续演进,我们将其分为三个阶段:朴素 RAG、进阶 RAG 和模块化 RAG。尽管 RAG 方法具有成本效益且超越了原生 LLM 的性能,但也表现出若干局限性。进阶 RAG 和模块化 RAG 的发展正是对朴素 RAG 中这些具体缺陷的回应。
3.1 Naive RAG(朴素 RAG)
原文定义
"The Naive RAG research paradigm represents the earliest methodology, which gained prominence shortly after the widespread adoption of ChatGPT. The Naive RAG follows a traditional process that includes indexing, retrieval, and generation, which is also characterized as a 'Retrieve-Read' framework."
翻译
朴素 RAG 研究范式代表了最早的方法论,在 ChatGPT 广泛采用后不久迅速走红。朴素 RAG 遵循一个包含索引、检索和生成的传统过程,也被称为"检索-阅读"框架。
三个步骤详解
步骤 1:索引(Indexing)
"Indexing starts with the cleaning and extraction of raw data in diverse formats like PDF, HTML, Word, and Markdown, which is then converted into a uniform plain text format. To accommodate the context limitations of language models, text is segmented into smaller, digestible chunks. Chunks are then encoded into vector representations using an embedding model and stored in vector database."
翻译
索引从清理和提取多种格式(PDF、HTML、Word、Markdown 等)的原始数据开始,然后转换为统一的纯文本格式。为适应语言模型的上下文限制,文本被分割成更小的可消化片段(chunks)。这些片段随后使用嵌入模型编码为向量表示,并存储在向量数据库中。
新手讲解:索引就是建图书馆的"目录"
想象你要给 10 万本书建一个能"按语义查找"的目录:
1. 清洗数据:把 PDF 里的图表、页眉页脚等无关内容去掉,只保留正文
2. 文本切分(Chunking):一本书太长,把它切成若干段落(比如每段 512 个 token)。每段就是一个 "chunk"(片段)
3. 向量化(Embedding):用嵌入模型(如 BERT、OpenAI Embedding)把每个 chunk 转成一串数字(向量)。语义相近的 chunk 向量在空间中距离近
4. 存入向量数据库(Vector DB):把所有向量存到专门的数据库(如 Faiss、Weaviate、Pinecone),支持超快的相似度搜索
为什么要切分? 大模型的"上下文窗口"(能同时处理的文本长度)是有限的(比如 4096 个 token)。你不能把整本书塞进去,必须筛选最相关的片段。
步骤 2:检索(Retrieval)
"Upon receipt of a user query, the RAG system employs the same encoding model utilized during the indexing phase to transform the query into a vector representation. It then computes the similarity scores between the query vector and the vector of chunks within the indexed corpus. The system prioritizes and retrieves the top K chunks that demonstrate the greatest similarity to the query."
翻译
收到用户查询后,RAG 系统使用与索引阶段相同的编码模型,将查询转换为向量表示。然后计算查询向量与索引语料库中各片段向量之间的相似度分数。系统优先检索出与查询相似度最高的前 K 个片段。
新手讲解:检索就是"按语义找资料"
- 同一个编码模型:问题和文档必须用同一个模型来编码,才能在同一个向量空间中比较距离。(这是 DPR 论文的关键发现!)
- Top-K 检索:K 通常设为 3-10,即找出最相关的 3-10 个段落
计算方式:最常用的是余弦相似度(Cosine Similarity),衡量两个向量之间的角度(夹角越小 = 越相似)。
相似度 = cos(查询向量, 文档向量) = (向量点积) / (两个向量长度之积)
范围:-1 到 1,越接近 1 越相似
步骤 3:生成(Generation)
"The posed query and selected documents are synthesized into a coherent prompt to which a large language model is tasked with formulating a response. The model's approach to answering may vary depending on task-specific criteria, allowing it to either draw upon its inherent parametric knowledge or restrict its responses to the information contained within the provided documents."
翻译
将提出的查询和选定的文档综合成一个连贯的提示,大型语言模型据此负责制定回应。模型的回答方式可能因任务特定标准而异,允许其要么利用其固有的参数化知识,要么将回应限制在所提供文档所含的信息范围内。
新手讲解:生成就是"参考资料后作答"
提示(Prompt)的结构通常是:
[系统指令] 请基于以下参考资料回答用户问题。如果资料中没有答案,请如实说明。
[参考资料 1] ...第一个检索到的 chunk 内容...
[参考资料 2] ...第二个检索到的 chunk 内容...
[参考资料 3] ...第三个检索到的 chunk 内容...
[用户问题] 请问 XX 是什么?
两种模式:
- 开放生成:模型可以结合自身知识和检索结果一起回答
- 限制生成:严格要求模型只基于检索到的文档回答(如法律/医疗场景)
Naive RAG 的三大缺陷
"Naive RAG encounters notable drawbacks: Retrieval Challenges... Generation Difficulties... Augmentation Hurdles..."
缺陷 1:检索挑战(Retrieval Challenges)
"The retrieval phase often struggles with precision and recall, leading to the selection of misaligned or irrelevant chunks, and the missing of crucial information."
翻译:检索阶段经常在精确率和召回率上遇到困难,导致选择了不匹配或无关的片段,并遗漏了关键信息。
新手讲解:
- 精确率(Precision)低:检索到的片段里,很多其实不相关("宁可错杀,不可放过"导致噪声多)
- 召回率(Recall)低:真正相关的片段没被检索到(漏掉了关键信息)
- 根本原因:用户的问题和文档的表达方式之间存在语义鸿沟(比如用户问"肚子痛",文档写"腹部疼痛")
缺陷 2:生成困难(Generation Difficulties)
"In generating responses, the model may face the issue of hallucination, where it produces content not supported by the retrieved context."
翻译:在生成回应时,模型可能面临幻觉问题,即产生检索上下文不支持的内容。
新手讲解:
即使有了检索结果,大模型有时仍会"凭空捏造"。原因:
1. 检索到的内容和问题存在细微偏差,模型试图"填补空白"时编造内容
2. 检索到的片段互相矛盾,模型不知道该信哪个
3. 模型倾向于生成流畅的文字,有时为了"听起来合理"而偏离事实
缺陷 3:增强障碍(Augmentation Hurdles)
"Integrating retrieved information with the different task can be challenging, sometimes resulting in disjointed or incoherent outputs. The process may also encounter redundancy when similar information is retrieved from multiple sources, leading to repetitive responses."
翻译:将检索到的信息与不同任务整合可能很有挑战性,有时导致割裂或不连贯的输出。当从多个来源检索到相似信息时,该过程还可能遇到冗余,导致重复的回应。
新手讲解:
整合三大问题:
1. 割裂感:检索到的片段和原问题"对不上",生成的答案东拼西凑,不流畅
2. 冗余:5 个检索片段说了几乎相同的事,最终答案变成废话连篇
3. 单次检索不足:复杂问题(如多跳推理)需要多轮检索,但 Naive RAG 只检索一次
3.2 Advanced RAG(进阶 RAG)
原文定义
"Advanced RAG introduces specific improvements to overcome the limitations of Naive RAG. Focusing on enhancing retrieval quality, it employs pre-retrieval and post-retrieval strategies. To tackle the indexing issues, Advanced RAG refines its indexing techniques through the use of a sliding window approach, fine-grained segmentation, and the incorporation of metadata."
翻译
进阶 RAG 引入了具体改进以克服朴素 RAG 的局限性。聚焦于提升检索质量,它采用了检索前(pre-retrieval)和检索后(post-retrieval)策略。为解决索引问题,进阶 RAG 通过使用滑动窗口方法、细粒度分割以及元数据整合来精炼其索引技术。
新手讲解:Advanced RAG = Naive RAG + 前处理 + 后处理
就像一个流水线工厂,Naive RAG 是原始的"三步生产线",Advanced RAG 在头尾各加了一道"质量控制":
Naive RAG:
[用户问题] → [检索] → [生成] → [答案]
Advanced RAG:
[用户问题] → [前处理] → [检索] → [后处理] → [生成] → [答案]
↑ ↑
查询优化/重写 重排序/压缩
检索前处理(Pre-Retrieval)
"In this stage, the primary focus is on optimizing the indexing structure and the original query. The goal of optimizing indexing is to enhance the quality of the content being indexed... While the goal of query optimization is to make the user's original question clearer and more suitable for the retrieval task. Common methods include query rewriting, query transformation, query expansion and other techniques."
翻译
此阶段的主要重点是优化索引结构和原始查询。优化索引的目标是提升被索引内容的质量……而查询优化的目标是使用户的原始问题更清晰、更适合检索任务。常见方法包括查询重写、查询转换、查询扩展等技术。
新手讲解:检索前处理解决的是"问题问得不好"的问题
用户的问题往往不是最适合检索的形式,需要"翻译":
| 方法 | 作用 | 举例 |
|---|---|---|
| 查询重写(Query Rewrite) | 让问题更精确 | "苹果好吃吗" → "苹果的营养价值和口感特点" |
| 查询扩展(Query Expansion) | 一个问题变多个 | "AI 发展" → ["人工智能历史", "深度学习突破", "大模型进展"] |
| 查询转换(HyDE) | 先生成假答案再检索 | "用这个问题的可能答案去找相关文档" |
| 步退提问(Step-back) | 抽象成更高层问题 | "这个药的副作用" → "这类药物的一般副作用规律" |
这里的 HyDE 正是我们第 7 篇精读的论文!它的核心技巧:与其用问题去找答案,不如先让模型"猜"一个答案,用这个假设的答案去检索——因为"答案-答案"的相似度比"问题-答案"的相似度更高。
检索后处理(Post-Retrieval)
"Once relevant context is retrieved, it's crucial to integrate it effectively with the query. The main methods in post-retrieval process include rerank chunks and context compressing. Re-ranking the retrieved information to relocate the most relevant content to the edges of the prompt is a key strategy... Feeding all relevant documents directly into LLMs can lead to information overload, diluting the focus on key details with irrelevant content."
翻译
一旦检索到相关上下文,有效地将其与查询整合至关重要。检索后处理的主要方法包括对片段重排序和上下文压缩。将检索信息重新排序,把最相关内容放在提示的边缘位置,是一个关键策略……将所有相关文档直接输入 LLM 可能导致信息过载,用无关内容稀释对关键细节的关注。
新手讲解:检索后处理解决的是"检索到太多/质量不齐"的问题
两大核心操作:
1. 重排序(Reranking)
- 检索(如 Top-20)先用轻量模型快速筛选,再用更精准的重排序模型从 20 个中选出 Top-3
- "Lost in the Middle"问题:研究发现,当给 LLM 很长的上下文时,它倾向于只关注开头和结尾,中间的信息容易被忽略。重排序会把最重要的放在提示的开头或结尾。
2. 上下文压缩(Context Compression)
- 检索到的片段太长、信息密度低,需要"浓缩"
- 例如:用小模型(如 GPT-2)删掉无关的词和句子,只保留关键信息
- 这样做的好处:节省 token(节省成本),减少噪声,提高回答质量
CRAG(第 10 篇精读)就属于 Advanced RAG 的代表:在检索后,用一个评估器评分,好的精炼用,差的换源重新找。
3.3 Modular RAG(模块化 RAG)
原文定义
"The modular RAG architecture advances beyond the former two RAG paradigms, offering enhanced adaptability and versatility. It incorporates diverse strategies for improving its components, such as adding a search module for similarity searches and refining the retriever through fine-tuning. The shift towards a modular RAG approach is becoming prevalent, supporting both sequential processing and integrated end-to-end training across its components. Despite its distinctiveness, Modular RAG builds upon the foundational principles of Advanced and Naive RAG, illustrating a progression and refinement within the RAG family."
翻译
模块化 RAG 架构超越了前两种 RAG 范式,提供了更强的适应性和多功能性。它融入了多种改进组件的策略,例如添加搜索模块用于相似度搜索,以及通过微调来精炼检索器。向模块化 RAG 方法的转变正变得普遍,支持顺序处理以及跨组件的集成端到端训练。尽管具有独特性,模块化 RAG 建立在进阶 RAG 和朴素 RAG 的基础原则之上,展示了 RAG 家族内部的演进和精炼。
新手讲解:Modular RAG = 乐高积木式 RAG
Naive RAG 是一个固定的三步流程,Advanced RAG 是加了两道工序的改良版,而 Modular RAG 把整个系统分解成可替换的功能模块:
Modular RAG 的"积木模块":
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 搜索 │ │ 记忆 │ │ 路由 │ │ 预测 │ │ 适配器 │
│ Search │ │ Memory │ │ Routing │ │ Predict │ │ Adapter │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
↕ 根据任务自由组合,替换,增删
┌──────────────────────────────────────────────────────────────┐
│ 核心:检索器 + 生成器 │
└──────────────────────────────────────────────────────────────┘
新增模块(New Modules)详解
"The Search module adapts to specific scenarios, enabling direct searches across various data sources like search engines, databases, and knowledge graphs, using LLM-generated code and query languages. RAG-Fusion addresses traditional search limitations by employing a multi-query strategy... The Memory module leverages the LLM's memory to guide retrieval, creating an unbounded memory pool..."
五大新增模块:
| 模块 | 功能 | 解决什么问题 | 典型方法 |
|---|---|---|---|
| Search 搜索 | 直接查搜索引擎/数据库/KG | 超出静态知识库范围的查询 | WebGPT、KnowledGPT |
| Memory 记忆 | 用 LLM 的"记忆"引导检索 | 长对话上下文维护 | Self-Mem(迭代自增强) |
| Routing 路由 | 判断去哪找信息 | 多种数据源、多种查询类型 | Semantic Router |
| Predict 预测 | 用 LLM 直接生成上下文 | 减少冗余噪声 | GenRead(生成-阅读) |
| Task Adapter | 为特定任务定制 RAG | 零样本/少样本任务适配 | UPRISE、PROMPTAGATOR |
新增模式(New Patterns)详解
"Innovations such as the Rewrite-Retrieve-Read model leverage the LLM's capabilities to refine retrieval queries through a rewriting module... The flexible orchestration of Modular RAG Flow showcases the benefits of adaptive retrieval through techniques such as FLARE and Self-RAG."
翻译
诸如"重写-检索-阅读"模型等创新利用 LLM 的能力通过重写模块精炼检索查询……模块化 RAG 流程的灵活编排通过 FLARE 和 Self-RAG 等技术展示了自适应检索的优势。
五大新模式:
| 模式 | 流程 | 我们精读过的对应论文 |
|---|---|---|
| Rewrite-Retrieve-Read | 先重写问题,再检索,再阅读 | - |
| Generate-Read | 用 LLM 生成上下文替代检索 | GenRead |
| Recite-Read | 从模型权重中"背诵"知识 | RECITE |
| Iterative/Recursive | 多轮检索-生成循环 | ITER-RETGEN、IRCoT |
| Adaptive Retrieval | 模型自主决定何时检索 | FLARE(第8篇)、Self-RAG(第9篇) |
重点展开:Adaptive Retrieval(自适应检索)
"This approach transcends the fixed RAG retrieval process by evaluating the necessity of retrieval based on different scenarios."
FLARE 和 Self-RAG 是自适应检索的两个标志性系统:
-
FLARE(第8篇精读):监控生成时每个词的概率,当某个词的置信度低于阈值时,触发检索。实质上是"边写边查、写到不确定就去找资料"。
-
Self-RAG(第9篇精读):训练模型生成特殊的"反思标记"(reflection tokens),如
[Retrieve]表示需要检索、[Relevant]表示当前文档相关、[Supported]表示答案有文档支持。模型学会了自我审查和自主决策。
这是模块化 RAG 最前沿的方向:RAG 不再是机械地"永远检索",而是智能地"按需检索"。
Modular RAG 与微调的结合
"Another benefit of a flexible architecture is that the RAG system can more easily integrate with other technologies (such as fine-tuning or reinforcement learning). For example, this can involve fine-tuning the retriever for better retrieval results, fine-tuning the generator for more personalized outputs, or engaging in collaborative fine-tuning."
翻译
灵活架构的另一个优势是 RAG 系统可以更容易地与其他技术(如微调或强化学习)集成。例如,这可以涉及微调检索器以获得更好的检索结果,微调生成器以获得更个性化的输出,或进行协同微调。
新手讲解
这是 Modular RAG 相比前两代的重大突破:
三种结合方式:
1. 只微调检索器(Retriever Tuning):让检索器更懂目标领域的语义
2. 只微调生成器(Generator Tuning):让 LLM 适应特定风格或格式
3. 协同微调(Collaborative Tuning):检索器和生成器互相监督、共同优化
↑ 这是 Atlas(第6篇精读)的核心思路!
RAG vs 微调对比表
综述专门给出了一个四象限图比较三种 LLM 优化方法:
"We used a quadrant chart to illustrate the differences among three methods in two dimensions: external knowledge requirements and model adaption requirements."
| 方法 | 外部知识需求 | 模型修改需求 | 适用场景 |
|---|---|---|---|
| Prompt Engineering | 低 | 低 | 简单任务,快速原型 |
| RAG | 高 | 低(Naive)到中(Modular) | 需要最新知识、领域准确性 |
| Fine-tuning | 低 | 高 | 需要特定风格、格式、行为 |
关键结论:RAG 和微调不是对立关系,可以互补。对于既需要最新知识又需要特定风格的场景,可以同时使用两者。
四、核心组件(一):Retrieval(检索)
原文框架
"In the context of RAG, it is crucial to efficiently retrieve relevant documents from the data source. There are several key issues involved, such as the retrieval source, retrieval granularity, pre-processing of the retrieval, and selection of the corresponding embedding model."
翻译
在 RAG 的背景下,从数据源高效检索相关文档至关重要。涉及的几个关键问题包括检索源、检索粒度、检索的预处理,以及相应嵌入模型的选择。
4.1 检索源(Retrieval Source)
数据结构类型
| 类型 | 示例 | 特点 |
|---|---|---|
| 非结构化文本 | Wikipedia、新闻、论文 | 最常用,信息丰富 |
| 半结构化数据 | PDF(含表格) | 处理复杂,表格难以语义化 |
| 结构化数据 | 知识图谱(KG)、数据库 | 信息精准,但构建维护成本高 |
| LLM 生成内容 | GenRead、Self-Mem | 模型自生成上下文,减少外部依赖 |
新手讲解
最有趣的是最后一类——用 LLM 自己生成的内容作为检索源。
-
GenRead:完全不检索外部文档,而是让 LLM "生成"一个假设性的参考文档,然后基于这个自生成的文档来回答问题。这听起来很奇怪(检索自己生成的东西?),但实验发现效果不错,因为 LLM 生成的上下文与其预训练目标(自回归语言建模)更对齐。
-
自生成 vs 外部检索的权衡:自生成速度快、无需维护知识库,但无法获取训练截止后的信息;外部检索可以获取最新信息,但延迟更高、需要维护数据库。
4.2 检索粒度(Retrieval Granularity)
"Coarse-grained retrieval units theoretically can provide more relevant information for the problem, but they may also contain redundant content... On the other hand, fine-grained retrieval unit granularity increases the burden of retrieval and does not guarantee semantic integrity."
翻译
粗粒度检索单元理论上可以为问题提供更多相关信息,但也可能包含冗余内容……另一方面,细粒度检索单元粒度增加了检索负担,且不能保证语义完整性。
新手讲解:粒度就是"切片的粗细"
检索的最小单位可以是:
细 ←————————————————————————————→ 粗
Token | Phrase | Sentence | Proposition | Chunk | Document
(词) | (短语) | (句子) | (命题) | (段落) | (整篇文档)
命题(Proposition)是一个有趣的中间粒度(DenseX 提出):定义为"文本中的原子表达,每个命题封装一个独特的事实片段,以简洁、自足的自然语言呈现"。
例如,一段话可以分解为多个命题:
- 原文:"爱因斯坦于1879年出生在德国,1921年获得诺贝尔物理学奖"
- 命题1:爱因斯坦于1879年出生
- 命题2:爱因斯坦出生在德国
- 命题3:爱因斯坦于1921年获得诺贝尔物理学奖
命题粒度适合需要精确事实检索的任务。
4.3 索引优化(Indexing Optimization)
分块策略(Chunking Strategy)
"The most common method is to split the document into chunks on a fixed number of tokens (e.g., 100, 256, 512)... However, chunks leads to truncation within sentences, prompting the optimization of a recursive splits and sliding window methods... Therefore, methods like Small2Big have been proposed, where sentences (small) are used as the retrieval unit, and the preceding and following sentences are provided as (big) context to LLMs."
三种主要分块方法:
| 方法 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| 固定大小 | 每 256/512 token 切一段 | 简单直接 | 可能从句子中间切断 |
| 滑动窗口 | 相邻块之间有重叠 | 不丢失边界信息 | 存储量增加 |
| Small2Big | 用小单元检索,返回更大上下文 | 检索精准,上下文完整 | 实现复杂 |
Small2Big 的妙处:用句子(细粒度)检索,找到最相关的句子后,返回它前后几段(粗粒度)给 LLM。这样既保证了检索精准度,又保证了 LLM 得到足够的上下文。
元数据附加(Metadata Attachments)
"Chunks can be enriched with metadata information such as page number, file name, author, category, timestamp... Assigning different weights to document timestamps during retrieval can achieve time-aware RAG, ensuring the freshness of knowledge."
新手讲解
为每个 chunk 添加"标签信息"(元数据),检索时可以先过滤:
- "只找 2024 年后的文档" → 按时间戳过滤
- "只找财务报告" → 按文档类别过滤
- "只找 XX 作者的内容" → 按作者过滤
Reverse HyDE(逆向假设文档嵌入):用 LLM 为每个 chunk 生成"这个 chunk 可以回答什么问题",存储这些假设问题作为元数据。检索时,匹配用户问题与假设问题的相似度——这比直接匹配问题与答案文本效果更好,因为两者在语义形式上更接近。
4.4 查询优化(Query Optimization)
"One of the primary challenges with Naive RAG is its direct reliance on the user's original query as the basis for retrieval. Formulating a precise and clear question is difficult, and imprudent queries result in subpar retrieval effectiveness."
翻译
朴素 RAG 的主要挑战之一是直接依赖用户的原始查询作为检索基础。制定精确清晰的问题很困难,不审慎的查询会导致检索效果欠佳。
四种查询优化技术:
1. 查询扩展(Query Expansion)
"Expanding a single query into multiple queries enriches the content of the query, providing further context to address any lack of specific nuances."
- Multi-Query:一个问题 → 并行多个问题版本 → 合并检索结果
- Sub-Query:复杂问题 → 拆成多个子问题 → 分别检索 → 组合答案
- Chain-of-Verification(CoVe):生成的扩展查询经 LLM 验证,减少幻觉
2. 查询转换(Query Transformation)
- 查询重写(Query Rewrite):用 LLM 或专门的小模型把问题改写得更适合检索
- HyDE(假设文档嵌入):生成一个假设性答案,用这个答案去检索
- Step-back Prompting(步退提示):把具体问题抽象成更高层次的问题,然后同时检索具体+抽象版本
3. 查询路由(Query Routing)
"Based on varying queries, routing to distinct RAG pipeline, which is suitable for a versatile RAG system designed to accommodate diverse scenarios."
根据问题的类型,路由到不同的检索管道:
- "这是什么的摘要?" → 路由到摘要检索管道
- "某法规第几条怎么说?" → 路由到结构化数据库查询
- "最新消息是什么?" → 路由到实时搜索引擎
4.5 嵌入模型(Embedding)
"In RAG, retrieval is achieved by calculating the similarity (e.g. cosine similarity) between the embeddings of the question and document chunks, where the semantic representation capability of embedding models plays a key role. This mainly includes a sparse encoder (BM25) and a dense retriever (BERT architecture Pre-training language models)."
翻译
在 RAG 中,检索通过计算问题与文档片段嵌入之间的相似度(如余弦相似度)来实现,嵌入模型的语义表示能力起关键作用。这主要包括稀疏编码器(BM25)和密集检索器(基于 BERT 架构的预训练语言模型)。
两类嵌入方法对比:
| 类型 | 代表 | 原理 | 优点 | 缺点 |
|---|---|---|---|---|
| 稀疏检索 | BM25、TF-IDF | 词频统计 | 速度快、精确匹配 | 无法理解同义词 |
| 密集检索 | DPR、BERT | 神经网络向量 | 语义理解强 | 训练成本高 |
| 混合检索 | 两者结合 | 加权融合 | 兼顾两者优点 | 系统复杂度增加 |
DPR(第3篇精读)正是密集检索的奠基工作:用双塔架构(Query Encoder + Document Encoder),通过对比学习让相关问答对的向量距离更近。
嵌入模型微调:当领域高度专业化(如医疗、法律),通用嵌入模型可能效果不佳,需要在领域数据上微调。
五、核心组件(二):Generation(生成)
5.1 上下文整理(Context Curation)
"Redundant information can interfere with the final generation of LLM, and overly long contexts can also lead LLM to the 'Lost in the middle' problem. Like humans, LLM tends to only focus on the beginning and end of long texts, while forgetting the middle portion."
翻译
冗余信息会干扰 LLM 的最终生成,过长的上下文也会导致 LLM 出现"迷失在中间"问题。就像人类一样,LLM 往往只关注长文本的开头和结尾,而遗忘中间部分。
新手讲解
"Lost in the Middle"(迷失在中间)是一个有趣的发现:实验表明,当上下文超过一定长度时,LLM 对中间部分的信息利用率显著下降。这意味着:
- 将最重要的信息放在提示的开头或结尾(而非中间)效果更好
- 重排序(Reranking)应该将最相关文档放在边缘位置
重排序(Reranking)
"Reranking fundamentally reorders document chunks to highlight the most pertinent results first... Reranking can be performed using rule-based methods that depend on predefined metrics like Diversity, Relevance, and MRR, or model-based approaches like Encoder-Decoder models from the BERT series."
两阶段检索架构(在实际 RAG 系统中极为常见):
阶段1(粗检索):
用 BM25 或向量检索,快速从百万文档中找出 Top-100
阶段2(精排序):
用更强的重排序模型(如 cross-encoder)从 Top-100 中选出 Top-3~5
为什么两阶段?因为强大的重排序模型(如 cross-encoder,它同时处理问题和文档)速度慢,不能用于全库扫描,但用于精排就很合适。
上下文压缩(Context Compression)
"(Long) LLMLingua utilizes small language models (SLMs) such as GPT-2 Small or LLaMA-7B, to detect and remove unimportant tokens, transforming it into a form that is challenging for humans to comprehend but well understood by LLMs."
翻译
LLMLingua 利用 GPT-2 Small 或 LLaMA-7B 等小型语言模型,检测并删除不重要的 token,将其转化为人类难以理解但 LLM 能很好理解的形式。
新手讲解
LLMLingua 的做法很有趣:用小模型来给 token 打分(哪些 token 对理解关键?),然后把低分 token 删掉,压缩后的文本比原文短 3-5 倍,但语义基本保留。
这就像考试答题卡:把长文章压缩成关键词提纲,让 LLM"精读"而不是"通读"。
5.2 LLM 微调(LLM Fine-tuning)
"Targeted fine-tuning based on the scenario and data characteristics on LLMs can yield better results... Another benefit of fine-tuning is the ability to adjust the model's input and output. For example, it can enable LLM to adapt to specific data formats and generate responses in a particular style."
新手讲解
Generation 阶段的微调有三个目的:
- 领域知识补充:当 LLM 在某个专业领域(如医疗、法律)知识不足时,用领域数据微调
- 格式适配:让模型输出符合特定结构(如 JSON、表格、报告格式)
- 与检索器对齐:让生成器的偏好与检索器的偏好一致(RA-DIT 用 KL 散度对齐两者)
六、核心组件(三):Augmentation(增强过程)
原文框架
"In the domain of RAG, the standard practice often involves a singular (once) retrieval step followed by generation, which can lead to inefficiencies and sometimes is typically insufficient for complex problems demanding multi-step reasoning."
翻译
在 RAG 领域,标准做法通常涉及单次(once)检索步骤后跟生成,这可能导致低效,对于需要多步推理的复杂问题通常也不够充分。
新手讲解
这一章回答了一个关键问题:什么时候检索、检索几次、怎么控制?
从"单次检索"进化到"智能检索",有三条路径:
6.1 迭代检索(Iterative Retrieval)
"Iterative retrieval is a process where the knowledge base is repeatedly searched based on the initial query and the text generated so far, providing a more comprehensive knowledge base for LLMs... ITER-RETGEN employs a synergistic approach that leverages 'retrieval-enhanced generation' alongside 'generation-enhanced retrieval'."
翻译
迭代检索是一个过程,其中基于初始查询和迄今生成的文本反复搜索知识库,为 LLM 提供更全面的知识库……ITER-RETGEN 采用协同方法,利用"检索增强生成"与"生成增强检索"相结合。
新手讲解:迭代检索 = 边写边查,查完再写
迭代检索流程:
Step 1: 检索(基于原始问题)→ 生成(得到中间答案)
Step 2: 检索(基于原始问题 + 中间答案)→ 生成(得到更完整的答案)
Step 3: 再次检索(更多上下文)→ 最终生成
ITER-RETGEN 的精妙之处:用生成的内容来改善检索,用检索的结果来改善生成——双向互促。
潜在问题:语义不连续(每轮检索主题可能偏移)、无关信息累积(每轮可能带入新的噪声)。
6.2 递归检索(Recursive Retrieval)
"Recursive Retrieval aims to enhance the search experience by gradually converging on the most pertinent information through a feedback loop. IRCoT uses chain-of-thought to guide the retrieval process and refines the CoT with the obtained retrieval results. ToC creates a clarification tree that systematically optimizes the ambiguous parts in the Query."
翻译
递归检索旨在通过反馈循环逐渐收敛到最相关的信息,从而增强搜索体验。IRCoT 使用思维链来引导检索过程,并用获得的检索结果来精炼 CoT。ToC 创建一个澄清树,系统性地优化查询中的模糊部分。
新手讲解:递归检索 = 先问大问题,再问小问题
递归检索流程(以多跳问题为例):
问题:"特斯拉 CEO 的母亲是谁?"
Step 1: 检索"特斯拉 CEO"→ 找到"埃隆·马斯克"
Step 2: 检索"埃隆·马斯克的母亲"→ 找到"梅伊·马斯克"
Step 3: 生成最终答案:"梅伊·马斯克"
与迭代检索的区别:迭代检索是"反复检索同一问题以获得更多上下文",递归检索是"分解问题,逐层解决子问题"。
IRCoT(Interleaving Retrieval with Chain-of-Thought):把推理链和检索交织进行——每推理一步,就检索一次,用检索结果修正推理,再继续推理。
6.3 自适应检索(Adaptive Retrieval)
"Adaptive retrieval methods, exemplified by Flare and Self-RAG, refine the RAG framework by enabling LLMs to actively determine the optimal moments and content for retrieval, thus enhancing the efficiency and relevance of the information sourced."
翻译
以 FLARE 和 Self-RAG 为代表的自适应检索方法,通过使 LLM 能够主动确定检索的最佳时机和内容,从而精炼 RAG 框架,提升信息来源的效率和相关性。
新手讲解:自适应检索 = 模型自己决定要不要查资料
传统 RAG 的问题:总是检索(不管问题是否需要),浪费资源,增加延迟;有时反而引入干扰。
自适应检索解决方案:让模型学会判断"我需要查外部资料吗?"
FLARE(第8篇精读)的机制:
生成: "巴黎是法国的首都,人口约..."
→ 模型生成下一个词时,概率很低(不确定)
→ 触发检索:"巴黎人口"
→ 检索到"约220万(市区)"
→ 继续生成,填入准确数字
Self-RAG(第9篇精读)的机制:
训练阶段:用特殊 token 标注训练数据
- [Retrieve]:此处应该检索
- [Relevant]:检索到的文档相关
- [Supported]:答案有文档支持
- [No Support]:答案无文档支持
- [No Retrieve]:此处无需检索
推理阶段:模型自主输出这些 token,实现自我控制
七、评估体系(Evaluation)
7.1 评估目标
"The main evaluation objectives include: Retrieval Quality... Generation Quality."
翻译:主要评估目标包括:检索质量……生成质量。
| 评估维度 | 评估什么 | 常用指标 |
|---|---|---|
| 检索质量 | 检索器找到相关文档的能力 | Hit Rate(命中率)、MRR(平均倒数排名)、NDCG |
| 生成质量 | 生成器产出高质量答案的能力 | EM(精确匹配)、F1、BLEU、ROUGE |
7.2 三大质量分数
"Quality scores include context relevance, answer faithfulness, and answer relevance."
| 质量分数 | 含义 | 评估视角 |
|---|---|---|
| 上下文相关性(Context Relevance) | 检索到的上下文是否与问题相关? | 评估检索质量 |
| 答案忠实度(Answer Faithfulness) | 生成的答案是否忠实于检索到的上下文? | 评估有无幻觉 |
| 答案相关性(Answer Relevance) | 生成的答案是否切题? | 评估答案直接性 |
7.3 四项必需能力
"RAG evaluation also encompasses four abilities indicative of its adaptability and efficiency: noise robustness, negative rejection, information integration, and counterfactual robustness."
| 能力 | 测试什么 | 为什么重要 |
|---|---|---|
| 抗噪声(Noise Robustness) | 能否忽略问题相关但信息量低的文档 | 真实场景中的文档质量参差不齐 |
| 拒绝无关(Negative Rejection) | 当检索文档不含答案时,是否能说"不知道" | 防止模型强行编造答案 |
| 信息整合(Information Integration) | 能否整合多个文档中的信息 | 复杂问题需要综合多源信息 |
| 反事实稳健性(Counterfactual Robustness) | 当文档包含错误信息时,能否识别并忽略 | 防止被错误文档误导 |
新手讲解
这四项能力对应了 RAG 的四大"敌人":
1. 噪声文档(Noise):和问题话题相关但实际上没用的文档
2. 知识盲区(Unknown unknowns):知识库里根本没有答案
3. 分散信息(Scattered Information):答案分散在多个文档里
4. 错误信息(Misinformation):文档本身包含错误的事实
7.4 评估基准和工具
"Prominent benchmarks such as RGB, RECALL and CRUD focus on appraising the essential abilities of RAG models. Concurrently, state-of-the-art automated tools like RAGAS, ARES, and TruLens employ LLMs to adjudicate the quality scores."
| 工具 | 类型 | 评估目标 | 特点 |
|---|---|---|---|
| RGB | 基准(Benchmark) | 四项基本能力 | 标准测试集 |
| RECALL | 基准 | 反事实稳健性 | 专项测试 |
| CRUD | 基准 | 四大任务(创建/读取/更新/删除) | 全面任务覆盖 |
| RAGAS | 自动化工具 | 三大质量分数 | 用 LLM 自动评分 |
| ARES | 自动化工具 | 三大质量分数 | 精度更高 |
| TruLens | 自动化工具 | 三大质量分数 | 工程友好 |
新手讲解
RAGAS(Retrieval Augmented Generation Assessment)是目前最流行的自动评估工具:用 LLM 充当"评分官",自动计算上下文相关性、答案忠实度、答案相关性三个分数。工程师可以直接集成到 RAG 系统中实现持续监控。
八、未来方向(Future Prospects)
综述提出了六个重要的未来研究方向:
8.1 RAG vs 长上下文(Long Context)
"RAG vs Long Context"
背景:LLM 的上下文窗口正在快速扩展(GPT-4 Turbo 支持 128K token,Claude 支持 200K+ token)。当上下文足够长时,是否还需要 RAG?
结论:两者各有优势——长上下文方便但成本高;RAG 可以查询动态更新的知识,且可精确定位信息来源。未来可能是混合方案。
8.2 RAG 稳健性(RAG Robustness)
问题:噪声文档、矛盾文档、知识库过时时,RAG 系统如何保持可靠?
现有方案:CRAG(第10篇精读)已给出初步解法,但需要更系统的解决方案。
8.3 混合方法(Hybrid Approaches)
方向:RAG + 微调的最优组合策略。
例子:用 RAG 提供最新知识,用微调调整风格和格式——两者协同比各自单独工作效果更好(Atlas 已证明这一点)。
8.4 多模态 RAG(Multi-modal RAG)
方向:将 RAG 扩展到图像、音频、视频、代码等多模态数据。
挑战:跨模态的语义对齐(文本问题 → 图像检索),以及多模态内容的向量化表示。
8.5 生产级 RAG(Production-Ready RAG)
核心挑战:
- 检索效率:大规模知识库(亿级文档)的检索速度
- 文档召回:长尾问题的低召回率
- 数据安全:涉及敏感信息的 RAG 系统隐私保护
九、前 10 篇精读论文与综述框架的对应关系
| # | 论文简称 | 综述分类 | 发表时间 | 核心技术贡献 |
|---|---|---|---|---|
| 1 | RAG 原论文 | Naive RAG 奠基 | 2020.05 | 首次提出 RAG 框架,Retriever+Generator 联合训练 |
| 2 | REALM | Naive RAG(预训练) | 2020.02 | 将检索嵌入 MLM 预训练,知识检索器可微分 |
| 3 | DPR | Retrieval → 嵌入优化 | 2020.04 | 密集段落检索,双塔架构 + 对比学习 |
| 4 | FiD | Generation → 上下文整理 | 2020.07 | 独立编码多文档片段 + Decoder 融合生成 |
| 5 | RETRO | Naive RAG(预训练,超大规模) | 2021.12 | 2 万亿 token 数据库,块级检索嵌入 Transformer |
| 6 | Atlas | Advanced/Modular(联合微调) | 2022.08 | 检索器+生成器端到端联合微调,少样本高效 |
| 7 | HyDE | Retrieval → 查询转换 | 2022.12 | 假设文档嵌入,用假想答案向量检索真实文档 |
| 8 | FLARE | Adaptive Retrieval | 2023.05 | 按置信度主动触发检索,动态确定检索时机 |
| 9 | Self-RAG | Adaptive Retrieval | 2023.10 | 反思标记自主控制检索决策,批评式自我评估 |
| 10 | CRAG | Advanced RAG(后处理) | 2024.01 | 轻量评估器打分,触发不同检索动作(纠错) |
演进逻辑串联:
RAG 的演进线索:
(2020) RAG原论文 → Naive RAG 基本形态确立
(2020) REALM/DPR → 检索器技术突破(密集检索)
(2020) FiD → 生成侧突破(多文档融合)
(2021) RETRO → 扩展到超大规模数据
(2022) Atlas → 检索+生成联合优化
(2022) HyDE → 查询侧创新(不直接用问题检索)
(2023) FLARE/Self-RAG → 自适应检索突破(按需检索)
(2024) CRAG → 检索质量评估与纠错
综述(2023.12)→ 系统整理以上所有工作,提出三范式框架
十、核心概念索引
| 术语 | 中文 | 首次定义位置 | 一句话解释 |
|---|---|---|---|
| RAG | 检索增强生成 | Abstract A-2 | 回答前先从外部知识库检索相关资料 |
| Hallucination | 幻觉 | Abstract A-1 | 大模型自信地生成不实信息 |
| Knowledge Cutoff | 知识截止 | Abstract A-1 | 训练数据截止后的事不知道 |
| Embedding | 嵌入/向量化 | 索引步骤 | 把文本转成数字向量,支持语义搜索 |
| Chunk | 文档片段 | 索引步骤 | 文档被切分成的小段落 |
| Top-K Retrieval | 前K检索 | 检索步骤 | 找出语义相似度最高的 K 个片段 |
| Cosine Similarity | 余弦相似度 | 检索步骤 | 衡量两个向量夹角的相似度指标 |
| Naive RAG | 朴素RAG | Section II-A | 索引-检索-生成三步基础框架 |
| Advanced RAG | 进阶RAG | Section II-B | 加了前处理+后处理的改进版 |
| Modular RAG | 模块化RAG | Section II-C | 积木式可插拔架构,支持灵活组合 |
| Query Rewrite | 查询重写 | Section III-C2 | 用LLM改写用户问题使之更适合检索 |
| HyDE | 假设文档嵌入 | Section III-C2 | 先生成假答案再用假答案检索 |
| Reranking | 重排序 | Section IV-A1 | 粗检索后用更强模型精选最相关文档 |
| Lost in the Middle | 迷失在中间 | Section IV-A | LLM对过长上下文中间部分注意力下降 |
| Iterative Retrieval | 迭代检索 | Section V-A | 多轮交替执行检索和生成 |
| Recursive Retrieval | 递归检索 | Section V-B | 分解子问题逐层递归检索 |
| Adaptive Retrieval | 自适应检索 | Section V-C | 模型自主判断何时需要检索 |
| Context Relevance | 上下文相关性 | Section VI-C1 | 评估检索内容与问题的相关程度 |
| Answer Faithfulness | 答案忠实度 | Section VI-C1 | 评估答案是否忠于检索到的内容 |
| RAGAS | RAG自动评估工具 | Section VI-D | 用LLM自动打分的RAG评估框架 |
| Noise Robustness | 抗噪声能力 | Section VI-C2 | 面对无关文档时不被干扰的能力 |
十一、总结:RAG 为什么重要?
这篇综述揭示了一个大趋势:RAG 已经从一个"补丁"变成了一个完整的技术体系。
三个关键洞察:
-
RAG 不是替代训练,而是赋能推理:LLM 的参数化知识是"长期记忆",RAG 的检索是"工作记忆"。人类大脑需要两种记忆协同工作,LLM 也一样。
-
三范式的演进不是替代关系:Modular RAG 包含并超越了 Naive 和 Advanced RAG——在简单场景下它可以退化为三步流程,在复杂场景下展现完整的模块化能力。
-
评估是 RAG 的软肋:与 LLM 本身有 MMLU 等成熟基准不同,RAG 的评估体系仍在发展中。三大质量分数 + 四项能力提供了一个初步框架,但标准化程度不够。
RAG 的未来核心矛盾:
动态性(Dynamic)vs 效率(Efficiency)
↕
知识越新 → 需要检索的频率越高 → 延迟越大 → 用户体验越差
解决思路:
- 缓存热门检索结果
- 训练模型判断"这个知识是否稳定不变"(不变的知识不需要检索)
- 异步检索(在 LLM 生成的同时并行检索)
这正是综述最后呼吁的研究方向:更智能的自适应检索 + 更高效的生产级 RAG 系统。
精读完成。本笔记覆盖:Abstract(全部精译)、Introduction(核心段落)、三大范式(全部详解)、三大组件(逐块讲解)、评估体系(框架梳理)、与前10篇精读论文的对应关系。字数约 13,000 字。