RAG 技术演进全景:从朴素检索到智能体驱动
引言
大语言模型(LLM)拥有惊人的知识和推理能力,但面临三个根本性限制:知识截止日期(训练数据的时间边界)、幻觉问题(对不确定的事实信口开河)、私有知识盲区(无法访问企业内部文档)。
检索增强生成(Retrieval-Augmented Generation,RAG)是解决这三个问题的最主流范式。它的核心思想简洁而深刻:在 LLM 生成答案之前,先从外部知识库中检索相关信息,将检索结果作为上下文注入生成过程[1]。
自 2020 年 Meta AI 正式提出 RAG 概念以来[1],这项技术经历了一条从学术原型到产业级基础设施的快速演进路径。到 2026 年,RAG 已经从单一的”检索-阅读”流水线发展为涵盖混合检索、智能体重排、知识图谱增强、多步推理的完整技术栈。
本文将系统梳理 RAG 技术的完整演进脉络,帮助你理解每个阶段要解决的核心问题和技术突破。
graph LR
A[前RAG时代<br/>2017-2019<br/>TF-IDF/BM25] -->|密集检索突破| B[Naive RAG<br/>2020-2022<br/>向量检索+生成]
B -->|质量与忠实度问题| C[Advanced RAG<br/>2023<br/>混合检索+重排序]
C -->|灵活性与可扩展| D[Modular RAG<br/>2023-2024<br/>可插拔组件]
D -->|自主决策与推理| E[Agentic RAG<br/>2024-2026<br/>智能体驱动]
style A fill:#2d3748,stroke:#718096,color:#cbd5e0
style B fill:#1a237e,stroke:#4299e1,color:#e8edf5
style C fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style D fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style E fill:#1a2a1a,stroke:#48bb78,color:#e8edf5
前 RAG 时代:信息检索的演变
在 RAG 出现之前,”检索-阅读”范式已经在问答系统中有了相当成熟的发展。
2017 年,DrQA(Chen et al.)提出了一个经典的开放域问答流水线:TF-IDF 检索器从 Wikipedia 中召回相关段落,然后一个 RNN 阅读器从这些段落中提取答案[2]。这个工作的意义在于建立了”先检索、后阅读”的架构模式,但检索和阅读是独立训练的。
2018 年的 R³ 系统(Reinforced Reader-Ranker)引入了一个关键概念:用强化学习来优化检索器与阅读器之间的协同[3]。检索不再是独立的黑盒——系统学会了检索那些”阅读器能看懂”的文档。
2019 年是关键的转折年。ORQA(Lee et al.)提出了隐式检索的概念,用密集向量代替稀疏关键词进行文档匹配,并首次将检索器与阅读器端到端训练[4]。同年,Wizard of Wikipedia 将检索增强引入对话系统,证明了这个范式在对话场景中的有效性。
| 年份 | 关键系统 | 核心贡献 |
|---|---|---|
| 2017 | DrQA | “检索-阅读”流水线雏形 |
| 2018 | R³ | 强化学习优化检索-阅读协同 |
| 2019 | ORQA | 密集检索 + 端到端训练 |
| 2019 | Wizard of Wikipedia | 检索增强对话 |
这些工作共同为 RAG 的诞生铺平了道路:它们证明了外部知识对生成质量的增益,积累了密集检索的技术储备,并验证了端到端训练检索器与阅读器的可行性。
RAG 的诞生 (2020):一场范式革命
2020 年,Meta AI 的 Lewis 等人发表了里程碑论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,正式命名并定义了 RAG 范式[1]。
核心架构
原始 RAG 的架构由三个组件构成:
graph LR
Q[用户查询 x] --> Encoder[查询编码器]
Encoder --> Retriever[DPR 检索器]
Index[(Wikipedia<br/>密集向量索引)] --> Retriever
Retriever -->|top-k 文档| Generator[BART 生成器]
Q --> Generator
Generator --> Answer[生成答案 y]
style Encoder fill:#1a237e,stroke:#4299e1,color:#e8edf5
style Retriever fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Index fill:#2d3748,stroke:#718096,color:#cbd5e0
style Generator fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style Answer fill:#1a2a1a,stroke:#48bb78,color:#e8edf5
检索器使用 DPR(Dense Passage Retrieval)——一种双编码器架构,用 BERT 分别编码查询和文档,通过向量内积计算相似度[5]。相比于 BM25 等传统稀疏检索方法,DPR 在 Top-20 召回率上提升了 9-19 个百分点。
生成器使用 BART-large——一个 4 亿参数的序列到序列模型。关键设计是检索到的文档与原始查询拼接后,一起送入生成器的编码器,让模型同时关注查询和检索结果。
两种解码策略
RAG 论文提出了两种变体,揭示了检索与生成的两种耦合方式:
RAG-Sequence:同一套检索文档用于生成整个输出序列:
\[P(y|x) \approx \sum_{z \in \text{top-}k} P(z|x) \cdot P(y|x,z)\]其中 $z$ 是检索到的文档,模型对 top-k 篇文档的输出做加权求和。
RAG-Token:每个输出 token 可以基于不同的检索文档生成:
\[P(y|x) = \prod_{i} \sum_{z} P(z|x) \cdot P(y_i \mid x, z, y_{1:i-1})\]这允许第 $i$ 个 token 关注与第 $i-1$ 个 token 不同的知识源,理论上更灵活。
关键意义
RAG 论文揭示了一个反直觉的结论:一个 4 亿参数的 RAG 模型(BART + DPR),在知识密集型任务上的表现可以超越 110 亿参数的纯生成模型。这意味着:
\[\text{参数记忆} + \text{非参数知识库} > \text{更大的参数记忆}\]这个公式奠定了 RAG 的经济学基础:用廉价的向量存储替代昂贵的模型参数来记忆知识。
同年,REALM(Guu et al.)更进一步,将检索增强引入预训练阶段——模型在掩码语言建模任务中学习同时优化检索器和编码器参数[6]。FiD(Fusion-in-Decoder)则提出了让生成器同时关注多篇检索文档的架构模式[7]。
Naive RAG 时代 (2021-2022):快速普及与瓶颈暴露
早期成果
2021 年是 RAG 研究的爆发期。FiD 架构在 Natural Questions 和 TriviaQA 上达到新的 SOTA[7]。EMDR² 提出用 EM 算法迭代训练检索器,无需人工标注的检索标签[8]。RAG 的应用边界从开放域 QA 扩展到对话、事实核查、代码生成等多个领域。
ChatGPT 带来的范式转移
2022 年 12 月,ChatGPT 发布,成为 RAG 研究的真正分水岭。
在此之前,RAG 研究的主流路径是将检索器与一个中等规模的语言模型(如 BART、T5)进行联合微调。这条路径的问题在于微调成本高、泛化能力有限。
ChatGPT 的出现改变了游戏规则。LLM 本身已经足够强大,不需要为了使用检索而重新训练——只需要在推理时将检索结果拼接到提示词中即可。这种”外挂式 RAG”(off-the-shelf RAG)极大降低了 RAG 的门槛。
Naive RAG 的三大缺陷
然而,”检索 + 拼接 + 生成”的朴素实现很快暴露出三个核心问题[9]:
| 缺陷 | 描述 | 典型表现 |
|---|---|---|
| 检索质量不稳定 | 用户查询与文档语义不匹配 | 问”如何部署”却检索到”安装依赖” |
| 生成忠实度不可控 | 模型可能忽略检索结果或过度依赖 | 编造文档中不存在的信息 |
| 上下文窗口不足 | 检索文档总量超出模型输入限制 | 关键信息被截断或遗漏 |
这三个问题直接驱动了下一阶段的技术演进。
Advanced RAG (2023):预处理与后处理时代
2023 年,社区针对 Naive RAG 的缺陷发展出一套系统性的改进方案,形成了 Advanced RAG 的技术范式。
查询处理:让检索更准
查询改写(Query Rewriting) 解决用户查询与文档语义不匹配的问题。当用户问”这东西怎么跑起来”时,LLM 先将口语化查询改写为更精确的”部署配置步骤”,再送入检索器。
HyDE(Hypothetical Document Embeddings)则另辟蹊径——先让 LLM 想象一个理想答案文档,用这个”假设文档”的嵌入向量去检索真实文档[10]。这种”用生成引导检索”的策略在许多基准上取得了显著的召回率提升。
混合检索:取长补短
这是 Advanced RAG 最重要的技术突破之一。
graph LR
Q[用户查询] --> Dense[稠密检索<br/>向量语义相似度]
Q --> Sparse[稀疏检索<br/>BM25 关键词匹配]
Dense -->|top-k| Fusion[RRF 融合<br/>Reciprocal Rank Fusion]
Sparse -->|top-k| Fusion
Fusion -->|重排序后 top-k| Results[最终检索结果]
style Dense fill:#1a237e,stroke:#4299e1,color:#e8edf5
style Sparse fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Fusion fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style Results fill:#1a2a1a,stroke:#48bb78,color:#e8edf5
稠密检索擅长语义匹配——”汽车”和”轿车”的向量距离很近。稀疏检索(BM25)擅长精确关键词匹配——”Transformer 架构”必须包含 Transformer 这个词。两者互为补充。
融合策略通常采用 RRF(Reciprocal Rank Fusion):
\[\text{RRF}(d) = \sum_{r \in R} \frac{1}{k + \text{rank}_r(d)}\]其中 $k=60$ 是平滑常数,$R$ 是各检索器的结果集合。RRF 不依赖得分的绝对数值尺度(稀疏和稠密得分的量纲不同),只使用相对排名,因此天然适合多源融合。
重排序:善用算力换精度
重排序(Reranking)是 Advanced RAG 流水线的最后一环。从混合检索得到候选集后,用一个更精确(也更具计算成本)的模型对候选文档重新打分。
典型方案是 Cross-Encoder 重排序——将查询和候选文档拼接后送入一个预训练的交叉编码器(如 BAAI/bge-reranker-v2-m3),输出相关性分数[11]。与双编码器不同,交叉编码器能看到查询和文档的完整交互,因此判断更加准确。
成本权衡:双编码器(嵌入模型)处理 1 万篇文档毫秒级完成;交叉编码器重排 100 篇候选需要数百毫秒。可行的策略是”先粗筛、后精排”——用嵌入检索粗筛 50-100 篇,重排序挑出前 5-8 篇。
上下文压缩
当检索到的文档总量超出 LLM 的上下文窗口时,需要进行压缩。常见的做法包括:用小型 LLM 对每篇文档摘取与查询相关的句子(Extractive Compression),或直接以摘要方式重写(Abstractive Compression)。
Modular RAG (2023-2024):从流水线到可组合架构
2023 年下半年,LangChain 和 LlamaIndex 等框架的崛起推动了 RAG 的模块化。核心洞察是:检索、生成、记忆、路由、搜索等功能应该是独立可插拔的模块,而不是硬编码的固定流程[12]。
模块化架构
graph LR
Q[用户查询] --> Router[查询路由器]
Router -->|事实性问答| Vector[向量检索模块]
Router -->|结构化查询| SQL[数据库查询模块]
Router -->|实时信息| Web[网络搜索模块]
Router -->|多跳推理| Graph[知识图谱模块]
Vector --> Fusion[结果融合与重排序]
SQL --> Fusion
Web --> Fusion
Graph --> Fusion
Fusion --> Generator[LLM 生成器]
style Router fill:#1a237e,stroke:#4299e1,color:#e8edf5
style Vector fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style SQL fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Web fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Graph fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Fusion fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style Generator fill:#1a2a1a,stroke:#48bb78,color:#e8edf5
Self-RAG:让模型学会反思
Self-RAG(Asai et al.)是 Modular RAG 时代最具代表性的工作之一[13]。它让 LLM 在生成过程中插入特殊的反思 token:
<Retrieve>:是否需要检索<Relevant>:检索结果是否与查询相关<Supported>:生成的答案是否有检索文档的支持<Useful>:生成的答案是否解决了用户的问题
这种”自我反思”的能力使 RAG 从被动的流水线转变为主动的质量控制过程。
CRAG:检索失败时的纠错机制
CRAG(Corrective RAG)专门处理检索质量不佳的情况[14]。当检索器评估自身检索结果质量低于阈值时,自动触发网络搜索作为补充知识源。这种”检索评估 → 结果纠错”的闭环机制,使系统在知识库不完整时也能保证回答质量。
Agentic RAG (2024-2026):让 RAG 学会思考和决策
2024 年起,AI Agent 的思想开始与 RAG 深度融合,催生了 Agentic RAG 范式。本质变化是:检索不再是一个固定的流水线,而是一个由 Agent 自主决策的认知过程。
从流水线到认知循环
graph LR
Q[用户查询] --> Plan[任务规划]
Plan --> Decide{需要检索?}
Decide -->|是| Tool[工具选择]
Tool -->|向量检索| V[语义搜索]
Tool -->|关键词| K[BM25搜索]
Tool -->|结构化| S[数据库查询]
Tool -->|网络| W[Web搜索]
V --> Merge[结果评估]
K --> Merge
S --> Merge
W --> Merge
Merge --> Reflect{信息充分?}
Reflect -->|否| Decide
Reflect -->|是| Answer[生成答案]
Decide -->|否| Answer
style Plan fill:#1a237e,stroke:#4299e1,color:#e8edf5
style Decide fill:#2a1a2e,stroke:#ed64a6,color:#e8edf5
style Tool fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Merge fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style Reflect fill:#2a1a2e,stroke:#ed64a6,color:#e8edf5
style Answer fill:#1a2a1a,stroke:#48bb78,color:#e8edf5
Agentic RAG 引入了三个核心能力:
- 规划:将复杂查询分解为子问题,制定检索计划
- 反思:评估检索结果质量,决定是否需要改进查询或切换策略
- 工具使用:自主选择最合适的检索工具——向量数据库、SQL 查询、API 调用或网络搜索
ReAct 框架
ReAct(Reason + Act)是 Agentic RAG 的基础框架[15]。它将推理和行动交替执行:
Thought: 用户想知道公司 Q3 的销售额,我需要查数据库。
Action: query_database("SELECT revenue FROM quarterly WHERE quarter='Q3'")
Observation: 结果为空,数据库只有月份粒度。
Thought: 需要改为按月份查询,然后汇总。
Action: query_database("SELECT SUM(revenue) FROM monthly WHERE month IN (7,8,9)")
Observation: 总营收为 1,250 万。
Thought: 现在有数据了,可以回答用户。
Answer: 公司 Q3 的总销售额为 1,250 万。
这种迭代修正的能力让 Agentic RAG 能够处理传统流水线无法应对的复杂多跳推理问题。
GraphRAG (2024-2025):知识图谱与向量检索的融合
Microsoft 在 2024 年 7 月开源的 GraphRAG 是近年来 RAG 领域最重要的进展之一[16]。
为什么要用图
传统向量检索擅长语义相似性匹配,但在多跳推理和全局总结时表现不佳。比如问”这个领域中所有方法的共同局限性是什么”,需要遍历多篇文档、抽取各自局限性、找出交集——这超出了向量检索的能力范围。
GraphRAG 的解决方案:用 LLM 将文档中的实体(人物、组织、概念)和关系抽取为知识图谱,然后用图遍历算法进行检索。
两阶段架构
graph LR
subgraph 离线索引
Docs[文档集] --> Extract[实体/关系抽取]
Extract --> Graph[知识图谱构建]
Graph --> Community[社区发现<br/>Leiden 算法]
Community --> Summarize[层级摘要生成]
end
subgraph 在线检索
Q2[用户查询] --> Mode{检索模式}
Mode -->|局部搜索| Local[实体邻域遍历]
Mode -->|全局搜索| Global[社区摘要聚合]
end
Summarize -.->|索引供给| Mode
style Docs fill:#2d3748,stroke:#718096,color:#cbd5e0
style Graph fill:#1b2d3a,stroke:#667eea,color:#e8edf5
style Community fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style Summarize fill:#1a1f3a,stroke:#7c3aed,color:#e8edf5
style Mode fill:#1a237e,stroke:#4299e1,color:#e8edf5
style Local fill:#1a237e,stroke:#4299e1,color:#e8edf5
style Global fill:#1b2d3a,stroke:#667eea,color:#e8edf5
GraphRAG 提供两种查询模式:
- 局部搜索:从与查询相关的实体出发,遍历其邻居关系,适合具体事实查询
- 全局搜索:利用 Leiden 社区发现算法将图划分为语义社区,每个社区生成层级摘要,适合”总结全貌”类问题
在跨文档推理任务上,GraphRAG 的幻觉率比朴素向量 RAG 低约 40%。
权衡与适用边界
GraphRAG 的成本是一个重要权衡。索引阶段:每个文档块需要 4-6 次 LLM 调用进行实体抽取和关系提取,使用 Llama 3.1 70B 模型时,每 100 万 token 的索引成本约 $2.5-3.6。相比之下,纯向量索引的成本几乎是零。
适用判断:
| 场景特征 | 推荐方案 |
|---|---|
| 单篇文档内的事实查找 | 向量 RAG 足够 |
| 跨文档的实体关系查询 | GraphRAG 优势明显 |
| 需要对整个知识库做全局总结 | GraphRAG 的全局搜索独有优势 |
| 实时更新的知识库 | 向量 RAG,GraphRAG 索引太慢 |
当前前沿 (2025-2026):自适应与系统化
自适应 RAG
进入 2025-2026 年,RAG 的研究重点正在转向自适应——让系统根据查询类型、用户历史、检索质量自动调整检索策略[17]。
关键方向包括:
- 策略路由:简单事实查询走快速向量检索,复杂推理查询走 Agentic 多步检索
- 动态阈值:根据检索结果的质量分数自动决定是否需要重试、改写查询或触发网络搜索
- 用户反馈闭环:利用用户的隐式反馈(点击、追问、修正)持续优化检索器和排序器参数
神经符号融合
知识图谱的结构化推理与向量语义检索正在走向深度融合。Microsoft Fabric 在 2026 年发布的 Graph-Powered AI Reasoning 就是这一趋势的代表——将 NL2GQL(自然语言转图查询语言)与向量检索并行使用,结果通过确定性图遍历进行验证,兼顾语义理解的灵活性和符号推理的可解释性。
隐私保护 RAG
随着 RAG 在企业场景的广泛部署,联邦检索(Federated Retrieval)和差分隐私技术成为新的研究热点。核心挑战是在不暴露敏感文档内容的前提下完成语义检索——检索器需要知道文档与查询的相关性,但不应能还原文档内容。
总结
回顾 RAG 从 2020 年到 2026 年的发展历程,我们可以看到一条清晰的演进主线:
| 阶段 | 核心问题 | 解决方案 | 典型系统 |
|---|---|---|---|
| Naive RAG | LLM 知识不完备 | 检索 + 拼接 + 生成 | 原始 RAG, REALM |
| Advanced RAG | 检索质量和忠实度 | 混合检索 + 重排序 + 压缩 | HyDE, BGE Reranker |
| Modular RAG | 灵活性不足 | 可插拔组件 + 路由 | LangChain, LlamaIndex |
| Agentic RAG | 复杂多跳推理 | 规划 + 反思 + 工具使用 | Self-RAG, ReAct RAG |
| GraphRAG | 跨文档推理 | 知识图谱 + 图遍历 | Microsoft GraphRAG |
| Adaptive RAG | 策略最优性 | 动态路由 + 反馈闭环 | 2025+ 前沿 |
RAG 的发展本质上是在回答一个核心问题:如何以最低成本让 LLM 获得最相关的知识。从朴素流水线到 Agentic 智能体,控制权逐步从开发者定义的固定规则,转移到模型自身的动态决策。
在后续文章中,我们将深入技术细节——包括分块策略的实现原理、混合检索的工程细节、以及如何将这些技术整合为一个可部署的生产级系统。
参考文献
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. Lewis P, et al. NeurIPS, 2020.
https://arxiv.org/abs/2005.11401 - Reading Wikipedia to Answer Open-Domain Questions. Chen D, et al. ACL, 2017.
https://arxiv.org/abs/1704.00051 - R³: Reinforced Ranker-Reader for Open-Domain Question Answering. Wang S, et al. AAAI, 2018.
https://arxiv.org/abs/1709.00023 - Latent Retrieval for Weakly Supervised Open Domain Question Answering. Lee K, et al. ACL, 2019.
https://arxiv.org/abs/1906.00300 - Dense Passage Retrieval for Open-Domain Question Answering. Karpukhin V, et al. EMNLP, 2020.
https://arxiv.org/abs/2004.04906 - REALM: Retrieval-Augmented Language Model Pre-Training. Guu K, et al. ICML, 2020.
https://arxiv.org/abs/2002.08909 - Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering. Izacard G, Grave E. EACL, 2021.
https://arxiv.org/abs/2007.01282 - End-to-End Training of Multi-Document Reader and Retriever. Sachan D S, et al. NeurIPS, 2021.
https://arxiv.org/abs/2106.05346 - Retrieval-Augmented Generation for Large Language Models: A Survey. Gao Y, et al. arXiv, 2023.
https://arxiv.org/abs/2312.10997 - Precise Zero-Shot Dense Retrieval without Relevance Labels. Gao L, et al. ACL, 2023.
https://arxiv.org/abs/2212.10496 - BGE: C-Pack — Packaged Resources to Advance Chinese Embedding. Xiao S, et al. arXiv, 2023.
https://arxiv.org/abs/2309.07597 - A Survey on RAG: Progress, Gaps, and Future Directions. Chen J, et al. arXiv, 2025.
https://arxiv.org/abs/2507.18910 - Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection. Asai A, et al. ICLR, 2024.
https://arxiv.org/abs/2310.11511 - Corrective Retrieval Augmented Generation. Yan S Q, et al. arXiv, 2024.
https://arxiv.org/abs/2401.15884 - ReAct: Synergizing Reasoning and Acting in Language Models. Yao S, et al. ICLR, 2023.
https://arxiv.org/abs/2210.03629 - GraphRAG: Unlocking LLM Discovery on Narrative Private Data. Edge D, et al. Microsoft Research, 2024.
https://arxiv.org/abs/2404.16130 · 代码仓库:https://github.com/microsoft/graphrag - Adaptive-RAG: Learning to Adapt Retrieval-Augmented LLMs. Jeong S, et al. EMNLP, 2024.
https://arxiv.org/abs/2403.14403