RAG 技术的进化:从朴素检索到 Agentic RAG

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 技术的进化远未结束。我观察到几个值得关注的方向:

  1. 多模态 RAG:不仅检索文本,还能检索图像、表格、代码、音视频。多模态 Embedding 模型的成熟将推动这一方向。

  2. 流式 RAG:Agent 一边检索一边流式输出,用户不需要等待完整的检索-生成周期就能看到初步回答,类似 Deep Research 的效果。

  3. Graph RAG:将知识图谱与向量检索结合,利用实体关系来增强检索质量。微软的 GraphRAG 项目已经展示了这种方向的潜力。

  4. 端侧 RAG:在手机或边缘设备上运行 RAG 系统,离线也能根据本地知识回答问题。随着端侧模型性能提升,这个场景正在成为现实。

总结

从朴素 RAG 到 Agentic RAG,我们见证了检索增强生成技术的三次跨越。朴素 RAG 证明了"检索 + 生成"这个范式可行,高级 RAG 证明了这个范式可以优化得很深,Agentic RAG 则证明了大模型自主决策能力可以彻底改变信息检索的方式。

对于 AI 应用开发者来说,理解这条进化路径的意义在于:RAG 不是终点,它更像是一个起点。未来的 AI 系统不会只有一种固定的检索模式,而是会根据场景和任务动态调整检索策略,真正做到"因时制宜、因事制宜"。

如果你的团队还在用朴素 RAG,可以先从高级 RAG 的优化点入手------添加重排序、优化文档切分、引入混合检索。如果你的系统已经比较成熟,Agentic RAG 值得认真考虑------它可能会让你的 AI 应用能力上一个台阶。

技术演进永无止境,RAG 的故事才刚刚开始。

相关推荐
Codebee1 小时前
做一款 AI-IDE 有多难 —— 从 OODER Studio 的现有实现谈起
人工智能
傅科摆 _ py1 小时前
AI Ping 平台使用教程
java·前端·人工智能
weixin_307779131 小时前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
Johnstons1 小时前
网页加载到一半卡住?视频看到关键处花屏?可能是丢包在作祟
开发语言·php·音视频·弱网测试·网络损伤
hoiii1871 小时前
C# Txt/Excel/Access 导入导出工具
开发语言·c#·excel
代码中介商1 小时前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++
苏州邦恩精密1 小时前
江苏三维扫描仪定制:制造企业如何提升检测效率?
人工智能·科技·机器学习·自动化·制造
jinglong.zha1 小时前
AI视频全流程实战:广告/动画/短剧都适用,解决角色一致性+后期合成难题
人工智能·ai·音视频·光照贴图·叙事照片
2401_832298101 小时前
适配工业互联网场景,OpenClaw落地工厂智能运维,加速工业4.0无人化转型
大数据·人工智能