RAG 技术的进化:从朴素检索到 Agentic RAG
自从 ChatGPT 引爆大语言模型浪潮以来,一个关键问题始终困扰着开发者:大模型的知识截止日期怎么办?私有数据怎么接入? RAG(Retrieval-Augmented Generation,检索增强生成)技术正是在这个背景下诞生的。
从 2023 年的朴素检索,到 2024 年的高级 RAG 范式,再到 2025-2026 年兴起的 Agentic RAG,这项技术经历了一条清晰的进化路径。本文带你完整回顾这条路线,并展望未来方向。
朴素 RAG:一个简单的起点
朴素 RAG 的逻辑很直观:用户提问 → 在知识库中搜索相关内容 → 把搜索结果拼到 prompt 里 → 让大模型据此回答。
用户提问 → 向量化查询 → 向量数据库检索 → 拼接 prompt → LLM 生成回答
这个 pipeline 的每个环节都有各自的挑战:
文档切分是第一个坑。切得太碎,语义片段不完整;切得太大,超过 LLM 上下文窗口。早期常用的固定长度切分(256/512 tokens)经常把一段完整的论述从中间切断,导致信息丢失。
向量检索是第二个瓶颈。单纯依赖 semantic similarity 的 top-k 检索往往不够精确------有时相关文档排不到前面,有时不相关的文档却因为向量距离近混了进来。
Prompt 拼接是第三个问题。当检索到的文档超过 5 段时,prompt 中可能混入噪声,反而干扰模型推理。
朴素 RAG 最大的问题是:它只有一轮检索,一次生成。如果检索到的内容不够好,生成结果就不可能好。没有机会修正、追问或补全。
高级 RAG:各环节的精细优化
2024 年初,社区开始对 RAG 的各个环节做精细优化,形成了"高级 RAG"范式。主要改进集中在以下几个方面。
索引优化
从简单的固定长度切分,进化到语义切分(Semantic Chunking) 。利用 embedding 模型检测语义边界,确保每个 chunk 都是相对完整的语义单元。同时还引入了滑动窗口重叠策略,防止关键信息正好落在切分边界上。
检索策略升级
出现了多种检索增强策略:
- HyDE(Hypothetical Document Embeddings):先让 LLM 根据问题生成一段假设答案,再用这段假设答案去向量库检索。这种方法在问题与文档的表达方式差异较大时特别有效。
- Multi-Query 检索:将一个用户问题扩展成多个角度的问题去并行检索,汇总结果。比如用户问"Transformer 的优缺点",可以扩展出"Transformer 的计算复杂度"、"Transformer 相比 RNN 的优势"、"Transformer 的注意力机制原理"三个子问题。
- Reranking(重排序):先用高效的 embedding 模型粗筛出 top-50,再用更精确的 cross-encoder 模型对结果重排序,选出 top-5 提供给 LLM。这样既保证了召回率,又保证了精度。
检索后处理
引入了上下文压缩 和结果去重。检索到的文档片段可能包含大量冗余信息,通过 LLM 或专门的压缩模型提取关键内容摘要,再拼入 prompt。
模块化 RAG:可插拔的架构设计
随着高级 RAG 的实践积累,社区逐渐意识到:没有一种固定的 RAG 配置适合所有场景。于是模块化 RAG应运而生。
模块化 RAG 将整个流程拆解为可独立替换的模块:
| 模块 | 可选方案 |
|-----------|-----------------------------------------------|
| 文档解析 | PDF 解析、HTML 解析、Markdown 解析、OCR |
| 切分策略 | 固定切分、语义切分、递归字符切分、基于 token 切分 |
| Embedding | text-embedding-3-small、bge-m3、jina-embeddings |
| 向量数据库 | Chroma、Milvus、Pinecone、Weaviate、Qdrant |
| 检索策略 | 单路检索、多路检索、HyDE、混合检索(向量+BM25) |
| 重排序 | Cohere Rerank、BGE Reranker、cross-encoder |
| 生成 | GPT-4、Claude、DeepSeek、本地开源模型 |
这种架构的优势在于:开发者可以根据自己的场景选择最合适的组件组合。对准确性要求高的场景可以用重排序 + 多路检索,对实时性要求高的场景可以用轻量级 embedding + 单路检索。
代表性的模块化 RAG 框架包括 LangChain、LlamaIndex、Haystack 等。其中 LlamaIndex 的路由查询引擎(RouterQueryEngine)可以自动根据问题类型选择不同的检索策略,堪称模块化思想的集大成者。
Agentic RAG:让 AI Agent 来主导检索
到了 2025-2026 年,RAG 技术迎来了最具革命性的进化------Agentic RAG。它的核心思想是:用 Agent 的自主决策能力来替代固定的 RAG pipeline。
传统的 RAG 是"先检索、后生成"的直线流程。Agentic RAG 则是让大模型以 Agent 的形式自主决定何时检索、检索什么、怎么检索、检索结果是否需要补充搜索。
核心能力一:工具自主选择
Agentic RAG 不再局限于一个向量数据库。Agent 可以根据问题类型,自主选择不同的知识源工具:
python
# 伪代码:Agent 自主选择工具
tools = [
VectorSearchTool("技术文档库"),
SQLQueryTool("内部数据库"),
WebSearchTool("实时搜索"),
CodeExecutionTool("代码运行结果"),
]
# Agent 根据问题自主决定调用哪些工具、按什么顺序
比如用户问"我的订单为什么还没发货",Agent 会先查询订单数据库,确认物流状态,如果数据异常再搜索知识库中的售后流程,最后给出完整回答。
核心能力二:多轮检索和追问
Agentic RAG 的另一个关键特征是多轮交互。Agent 可以进行多步推理:
第一轮:检索"什么是 Transformer" → 发现不够具体
第二轮:检索"Transformer 多头注意力机制详解"
第三轮:检索"Transformer vs Mamba 对比"
合成回答
这种逐步深入的能力是朴素 RAG 完全不具备的。
核心能力三:自我评估与修正
Agentic RAG 可以对自己的回答质量进行评估。如果发现检索结果不足以支撑高质量回答,Agent 可以自动调整检索策略并重新生成。这种反思机制大大提升了回答的可靠性。
实际案例:用 Agentic RAG 搭建一个技术问答系统
下面是一个用 LangGraph 搭建 Agentic RAG 的简化示例:
python
from langgraph.graph import StateGraph
# 定义 Agent 的状态
class RAGState:
question: str
retrieved_docs: list
search_queries: list
answer: str
confidence: float
# 定义 Agent 节点
nodes = {
"analyze": analyze_question,
"retrieve": retrieve_docs,
"evaluate": evaluate_retrieval_quality,
"refine_query": generate_better_queries,
"generate": generate_answer,
}
# 条件边:如果检索质量不达标,重新检索
edges = [
("analyze", "retrieve"),
("retrieve", "evaluate"),
("evaluate", "refine_query", condition_is_retrieval_inadequate),
("evaluate", "generate", condition_is_retrieval_adequate),
("refine_query", "retrieve"),
]
这个例子展示了几种高级模式:
- Query Rewriting:Agent 会对用户提问进行重写,生成更有利于检索的表达
- 信息颗粒度自适应:对宽泛问题做广度覆盖,对具体问题做深度挖掘
- 结果质量自检:Agent 对检索结果进行完整性检查,缺失关键信息时自动补充检索
Agentic RAG 的挑战
当然,Agentic RAG 不是万能的,它面临几个关键挑战:
延迟增加。Agent 多轮决策意味着多次 LLM 调用,端到端延时从秒级增长到几十秒甚至分钟级。在实际生产环境中需要引入缓存、预检索等优化手段。
成本上升。更多的 LLM 调用意味着更高的 API 成本。需要精心设计 Agent 的决策逻辑,避免不必要的重复检索。
可解释性下降。Agent 的自主决策路径比固定 pipeline 复杂得多,调试和排查问题变得更加困难。完善的日志和链路追踪是 Agentic RAG 系统的必备基础设施。
幻觉放大风险。Agent 在检索结果不理想时可能被诱导生成带有推测性的内容。需要引入事实核查机制和置信度阈值。
未来展望
RAG 技术的进化远未结束。我观察到几个值得关注的方向:
-
多模态 RAG:不仅检索文本,还能检索图像、表格、代码、音视频。多模态 Embedding 模型的成熟将推动这一方向。
-
流式 RAG:Agent 一边检索一边流式输出,用户不需要等待完整的检索-生成周期就能看到初步回答,类似 Deep Research 的效果。
-
Graph RAG:将知识图谱与向量检索结合,利用实体关系来增强检索质量。微软的 GraphRAG 项目已经展示了这种方向的潜力。
-
端侧 RAG:在手机或边缘设备上运行 RAG 系统,离线也能根据本地知识回答问题。随着端侧模型性能提升,这个场景正在成为现实。
总结
从朴素 RAG 到 Agentic RAG,我们见证了检索增强生成技术的三次跨越。朴素 RAG 证明了"检索 + 生成"这个范式可行,高级 RAG 证明了这个范式可以优化得很深,Agentic RAG 则证明了大模型自主决策能力可以彻底改变信息检索的方式。
对于 AI 应用开发者来说,理解这条进化路径的意义在于:RAG 不是终点,它更像是一个起点。未来的 AI 系统不会只有一种固定的检索模式,而是会根据场景和任务动态调整检索策略,真正做到"因时制宜、因事制宜"。
如果你的团队还在用朴素 RAG,可以先从高级 RAG 的优化点入手------添加重排序、优化文档切分、引入混合检索。如果你的系统已经比较成熟,Agentic RAG 值得认真考虑------它可能会让你的 AI 应用能力上一个台阶。
技术演进永无止境,RAG 的故事才刚刚开始。