【系统学AI】13 Agentic RAG(2026版):让AI自己决定怎么检索
传统RAG是"单次检索→生成",把决策权交给开发者。Agentic RAG让Agent自己决定:要不要检索?检索什么?检索几次?检索失败怎么办?这是2026年RAG最重要的演进方向——从"模块"变成"循环",从"工具"变成"智能"。
一句话总结
Agentic RAG = RAG + Agent循环。Agent来决定何时检索、检索什么、如何评估检索质量、何时停止。代表方案:Self-RAG(自反思)、CRAG(修正式)、Adaptive RAG(自适应)、HyDE(假设嵌入)。代价是延迟和成本变高,但复杂任务的准确率显著提升。
1. 为什么需要Agentic RAG?
1.1 传统RAG的硬伤
传统RAG 流程:
用户问题 → 向量检索 → 取Top-K → 拼接Prompt → LLM生成
问题:
1. 不一定需要检索("你叫什么名字"也走了一遍检索)
2. 检索失败无法补救(Top-K都不相关 → 直接生成幻觉)
3. 单次检索处理不了复杂问题
4. 检索质量无评估
5. 复杂多跳问题无法解决
1.2 Agentic RAG的解法
把RAG从"模块"升级为"循环":
传统RAG: 一次检索 → 生成
Agentic RAG: 思考 → 决定是否检索 → 检索 → 评估质量 → 思考 → 再检索? → 生成
核心变化:
- ✅ Agent判断要不要检索(避免过度检索)
- ✅ Agent评估检索结果(质量不行就重新检索)
- ✅ Agent能多轮检索(多跳问题)
- ✅ Agent能自我纠错(检索失败时改写查询)
2. Agentic RAG的四大代表方案
2.1 Self-RAG(自反思RAG)⭐ Asai et al. 2023
💡 Self-RAG:Asai et al. 2023年提出,Self-Reflective Retrieval-Augmented Generation。让模型用特殊Token(reflection tokens)自我评估每个步骤。
核心机制:训练LLM输出特殊的反思Token:
| 反思Token | 作用 |
|---|---|
[Retrieve] | 决定是否需要检索 |
[IsRel] | 评估检索文档是否相关 |
[IsSup] | 评估生成是否被文档支持 |
[IsUse] | 评估答案对用户是否有用 |
工作流程:
用户问题
↓
LLM生成 [Retrieve=Yes/No]
├── No → 直接回答
└── Yes → 检索Top-K
↓
对每个文档生成 [IsRel=Yes/No]
↓
基于相关文档生成回答 + [IsSup] + [IsUse]
↓
按质量评分选最佳答案
效果:在事实问答和长文本生成上全面超越普通RAG。
2.2 CRAG(Corrective RAG,修正式RAG)⭐ Yan et al. 2024
💡 CRAG:Yan et al. 2024年提出,Corrective Retrieval-Augmented Generation。引入"检索质量评估器",质量差时触发纠错。
核心机制:在检索后加一个Retrieval Evaluator(轻量级判别器):
检索结果 → Evaluator评分
├── 高分(Correct)→ 直接用
├── 低分(Incorrect)→ 触发Web搜索补充
└── 中等(Ambiguous)→ Web搜索 + 原检索 一起用
关键创新:
- 不是黑盒检索 → 生成
- 主动评估检索质量
- 检索失败时用Web搜索兜底(突破私有知识库限制)
适用场景:知识库可能不完整、需要时效性信息的场景。
2.3 Adaptive RAG(自适应RAG)
💡 Adaptive RAG:根据问题复杂度动态选择RAG策略。简单问题→直接回答,中等→单次RAG,复杂→多步Agentic RAG。
核心机制:在RAG入口加一个Query Classifier:
用户问题 → Classifier
├── A级(简单)→ 直接LLM回答(不检索)
├── B级(中等)→ Single-step RAG
└── C级(复杂)→ Multi-step Agentic RAG
Classifier训练:用历史数据标注问题难度,训练一个小模型做分类。
效果:
- 简单问题响应速度提升5-10倍
- 复杂问题准确率提升15-25%
- 平均成本降低30-40%——大量简单问题不再走完整RAG流程
2.4 HyDE(假设文档嵌入)⭐ Gao et al. 2022
💡 HyDE(Hypothetical Document Embeddings,假设文档嵌入):Gao et al. 2022年提出。先让LLM生成一个假设答案,再用这个假设答案的向量去检索(而不是用原始问题)。
核心问题:
用户问题: "什么是注意力机制?"
原始问题向量 ≠ 真实答案文档向量
(因为问题是"问",文档是"答",语言风格差异大)
HyDE的解法:
Step 1: LLM根据问题生成假设答案
"注意力机制是Transformer的核心组件,它通过Q、K、V三个矩阵..."
Step 2: 把假设答案向量化
embedding(假设答案) → 向量A
Step 3: 用向量A去检索
找和向量A相似的真实文档(假设答案虽然可能有错,但向量已经在"答案空间"了)
效果:在零样本检索上提升20-30%。特别适合训练数据少的领域。
2.5 四大方案对比
| 方案 | 核心创新 | 适用场景 | 复杂度 |
|---|---|---|---|
| Self-RAG | 反思Token自评估 | 事实问答、长文生成 | 高(需训练) |
| CRAG | 检索质量评估+Web兜底 | 知识不完整场景 | 中 |
| Adaptive RAG | 按复杂度动态路由 | 高并发场景 | 中 |
| HyDE | 假设答案做检索 | 零样本/低资源领域 | 低(即插即用) |
3. 2026年的Agentic RAG新趋势
3.1 趋势1:从单循环到多Agent协作
2026年的Agentic RAG不再是单个Agent循环,而是多Agent协作:
Researcher Agent: 决定检索什么
↓
Retriever Agent: 执行检索(向量+关键词+图)
↓
Evaluator Agent: 评估检索质量
↓
Synthesizer Agent: 综合多源信息生成
代表实现:LlamaIndex AgentWorkflow、LangGraph Agentic RAG。
3.2 趋势2:和长期记忆融合
2026年Agentic RAG开始和Memory系统融合:
传统Agentic RAG: 每次任务独立检索
2026方向: 历史检索结果存入Memory,下次任务可复用
代表方案:Mem0 + LlamaIndex、Zep + LangGraph。
3.3 趋势3:Pinecone Nexus的"编译时RAG"
向量数据库厂商Pinecone 2026年推出Nexus——把推理时间的检索工作前置到编译时间:
传统RAG: 每次query都重新理解数据
Nexus: 数据预先编译为"知识工件"(Knowledge Artifacts)
Agent直接消费工件,不需要再解释原始数据
实测:金融分析任务从280万Token降到4000 Token,98%降本。
3.4 趋势4:RAG vs 长上下文的博弈
2026年争议:
长上下文派: "1M context + 强推理 = 不需要RAG"
RAG派: "私有数据 + 实时性 + 可追溯 = RAG不可替代"
实际共识:
- 文档<100页:长上下文胜出
- 100页-10万页:Agentic RAG胜出
-
10万页或频繁更新:Graph-RAG / 分层RAG
4. 实战示例:用LangGraph实现Self-CRAG
把Self-RAG和CRAG的思想结合,实现一个2026级别的Agentic RAG:
from langgraph.graph import StateGraph, END
from typing import TypedDict, List
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-opus-4.7")
class AgenticRAGState(TypedDict):
question: str
documents: List[str]
quality_score: float
answer: str
retrieve_count: int
# Step 1: 判断是否需要检索(Self-RAG)
def should_retrieve(state):
prompt = f"问题:{state['question']}\n这个问题需要检索外部知识吗?回答yes/no"
decision = llm.invoke(prompt)
return "retrieve" if "yes" in decision.content.lower() else "direct_answer"
# Step 2: 执行检索
def retrieve_node(state):
docs = vector_store.similarity_search(state['question'], k=5)
return {"documents": docs, "retrieve_count": state.get("retrieve_count", 0) + 1}
# Step 3: 评估检索质量(CRAG)
def evaluate_node(state):
prompt = f"""问题:{state['question']}
检索到的文档:{state['documents']}
评估检索质量:High/Medium/Low"""
score = llm.invoke(prompt).content
return {"quality_score": score}
# Step 4: 决定下一步
def quality_router(state):
if state['retrieve_count'] >= 3:
return "generate" # 防死循环
if "High" in state['quality_score']:
return "generate"
elif "Low" in state['quality_score']:
return "web_search" # CRAG的Web兜底
else:
return "rewrite_query" # 改写查询重新检索
# Step 5: 改写查询(HyDE思想)
def rewrite_node(state):
prompt = f"""原问题:{state['question']}
生成一个假设答案,用于改进检索:"""
hypothesis = llm.invoke(prompt).content
return {"question": hypothesis}
# Step 6: Web搜索兜底
def web_search_node(state):
web_results = web_search(state['question'])
return {"documents": state['documents'] + web_results}
# Step 7: 生成最终答案
def generate_node(state):
prompt = f"""基于以下文档回答问题:
问题:{state['question']}
文档:{state['documents']}"""
answer = llm.invoke(prompt).content
return {"answer": answer}
# 构建Agentic RAG图
graph = StateGraph(AgenticRAGState)
graph.add_node("retrieve", retrieve_node)
graph.add_node("evaluate", evaluate_node)
graph.add_node("rewrite", rewrite_node)
graph.add_node("web_search", web_search_node)
graph.add_node("generate", generate_node)
# 入口路由
graph.add_conditional_edges(
"__start__", should_retrieve,
{"retrieve": "retrieve", "direct_answer": "generate"}
)
graph.add_edge("retrieve", "evaluate")
graph.add_conditional_edges(
"evaluate", quality_router,
{"generate": "generate", "rewrite_query": "rewrite", "web_search": "web_search"}
)
graph.add_edge("rewrite", "retrieve") # 重新检索
graph.add_edge("web_search", "generate")
graph.add_edge("generate", END)
app = graph.compile()
# 运行
result = app.invoke({"question": "GLM-5.1的8小时长任务是怎么实现的?"})
print(result["answer"])
这个流程包含了:
- ✅ Self-RAG的"是否需要检索"判断
- ✅ CRAG的"质量评估+Web兜底"
- ✅ HyDE的"改写查询"机制
- ✅ Agent循环的"多次重试+死循环保护"
5. Agentic RAG vs 传统RAG的工程取舍 ⚠️
5.1 优势
| 维度 | Agentic RAG优势 |
|---|---|
| 准确率 | 复杂问题提升20-40% |
| 灵活性 | 处理多跳/不完整知识场景 |
| 容错性 | 检索失败有兜底机制 |
| 智能路由 | 简单问题不浪费 |
5.2 代价
| 维度 | 代价 |
|---|---|
| 延迟 | 多次LLM调用,从100ms到3-10秒 |
| 成本 | LLM调用次数3-10倍 |
| 复杂度 | 调试难度成倍上升 |
| 可解释性 | 决策路径动态,难追溯 |
| 可观测性 | 必须配合Trace工具(LangSmith/Langfuse) |
5.3 选型决策
你的场景...
├── 简单FAQ + 高并发 → 传统RAG(Adaptive RAG做路由)
├── 复杂问答 + 准确率优先 → Self-RAG / CRAG
├── 知识库不完整 → CRAG(Web兜底)
├── 零样本/低资源 → HyDE
├── 多跳推理 → Self-CRAG混合 + Graph-RAG
└── 需要持续学习 → Agentic RAG + Memory系统
6. 主流框架的Agentic RAG支持
| 框架 | Agentic RAG实现 | 特点 |
|---|---|---|
| LangGraph | StateGraph + 条件路由 | 最灵活,2026首选 |
| LlamaIndex | AgentWorkflow + Query Engine | RAG优先 |
| Haystack | Pipeline + Branch | 企业级 |
| Dify | 低代码Agentic RAG | 快速原型 |
| Verba | Weaviate原生集成 | 一站式 |
7. 面试高频问题
Q1:Agentic RAG和传统RAG的本质区别?
传统RAG是"单次检索→生成"的固定模块;Agentic RAG是"思考→检索→评估→再检索"的Agent循环。Agent决定何时检索、检索什么、如何评估。代价是延迟和成本变高,但复杂任务准确率显著提升。
Q2:HyDE为什么有效?
向量空间中,“问题"和"答案"的距离远——用户问"什么是X”,文档是"X是…",语言风格差异大。HyDE让LLM先生成假设答案,再用假设答案向量检索——假设答案虽然可能有错,但向量已经在"答案空间"了,召回率提升20-30%。
Q3:Self-RAG和CRAG的差异?
Self-RAG用反思Token让模型自评估每一步(需要训练);CRAG用独立的检索评估器判断检索质量(即插即用)。Self-RAG更优雅但训练成本高,CRAG更工程化但需要额外评估器。
Q4:什么场景必须用Agentic RAG?
(1) 多跳问答(A→C→B);(2) 知识库不完整(需要Web补充);(3) 高准确率优先(金融/医疗/法律);(4) 复杂任务(需要多次检索+综合)。简单FAQ场景没必要——会增加延迟和成本。
Q5:Adaptive RAG怎么节省成本?
在RAG入口加一个Query Classifier——简单问题直接LLM回答(不检索),中等单次RAG,复杂多步Agentic RAG。简单问题占80%流量,跳过检索后总成本降30-40%。
Q6:2026年Agentic RAG的新趋势?
(1) 多Agent协作(Researcher/Retriever/Evaluator分工);(2) 和Memory系统融合(历史检索可复用);(3) Pinecone Nexus的"编译时RAG"(数据预先编译为知识工件);(4) 长上下文+RAG的混合架构。
总结
| 维度 | 要点 |
|---|---|
| 本质 | RAG从模块升级为Agent循环 |
| 四大方案 | Self-RAG / CRAG / Adaptive RAG / HyDE |
| 核心能力 | 自评估 / 自纠错 / 自适应 / 假设嵌入 |
| 2026趋势 | 多Agent协作 / Memory融合 / 编译时RAG |
| 适合场景 | 复杂多跳、不完整知识、高准确率需求 |
| 不适合 | 简单FAQ、高并发、低延迟要求 |
| 代价 | 延迟3-10倍、成本3-10倍、调试复杂 |
Agentic RAG是2026年RAG演进的核心方向——让AI自己决定怎么检索。但它不是"RAG的下一代",而是**“RAG的智能化升级”——在合适的场景下用,不要overkill。最佳实践是Adaptive路由+Agentic循环+Memory融合**的混合架构。
路易乔布斯 © 2026 | AI Agent & RAG学习计划 · 模块02-RAG · 第三篇
参考文献:
- Asai et al., “Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection”, 2023
- Yan et al., “Corrective Retrieval Augmented Generation”, 2024
- Gao et al., “Precise Zero-Shot Dense Retrieval without Relevance Labels (HyDE)”, 2022
- Pinecone, “Nexus: Knowledge Engine for Agentic AI”, 2026.05
更多推荐



所有评论(0)