概述

Agentic RAG代表检索增强生成(RAG)系统的根本性范式转变:从静态的”检索→生成”管道演变为自主智能体驱动的动态决策系统。本专题系统梳理Agentic RAG的理论基础、架构模式、评估方法与前沿挑战。


1. 从RAG到Agentic RAG的演进

1.1 RAG技术演进图谱

RAG技术演进阶段:

┌─────────────────────────────────────────────────────────────────────────┐
│  传统RAG                    高级RAG                   Agentic RAG       │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────┐              ┌─────────────┐              ┌────────────┐  │
│  │ Naive   │              │ Advanced    │              │  Multi-    │  │
│  │ RAG     │      →       │ RAG         │       →      │  Agent     │  │
│  │         │              │             │              │  RAG       │  │
│  ├─────────┤              ├─────────────┤              ├────────────┤  │
│  │单次检索 │              │ 混合检索    │              │ 动态决策   │  │
│  │固定流程 │              │ 重排序      │              │ 迭代推理   │  │
│  │开环系统 │              │ 迭代优化    │              │ 闭环控制   │  │
│  └─────────┘              └─────────────┘              └────────────┘  │
│       │                        │                           │            │
│       ▼                        ▼                           ▼            │
│  ┌─────────┐              ┌─────────────┐              ┌────────────┐  │
│  │ 简单    │              │ GraphRAG    │              │ Tool-      │  │
│  │ 问答    │              │             │              │ augmented  │  │
│  │         │              │ 知识图谱    │              │ RAG        │  │
│  └─────────┘              └─────────────┘              └────────────┘  │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

1.2 各阶段特征对比

特征传统RAG高级RAGAgentic RAG
检索触发单次固定阈值驱动迭代策略驱动动态
上下文管理追加式选择性追加读写剪枝
决策机制启发式规则LLM策略网络
工具使用有限工具自主工具编排
反馈回路简单重查完整反思循环
记忆系统无状态短期会话多层次记忆

2. Agentic RAG分类体系

2.1 四维分析框架

SoK论文提出从四个维度理解Agentic RAG系统:

┌─────────────────────────────────────────────────────────────────────────┐
│                      Agentic RAG 四维分析框架                            │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│   ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐   │
│   │   规划机制      │    │   检索编排      │    │   记忆范式      │   │
│   │   Planning      │    │   Retrieval     │    │   Memory        │   │
│   │                 │    │   Orchestration │    │   Paradigms     │   │
│   ├─────────────────┤    ├─────────────────┤    ├─────────────────┤   │
│   │ · 任务分解      │    │ · 检索时机      │    │ · 工作记忆      │   │
│   │ · 子任务排序    │    │ · 检索源选择    │    │ · 语义记忆      │   │
│   │ · 条件分支      │    │ · 检索粒度      │    │ · 情景记忆      │   │
│   │ · 回溯策略      │    │ · 结果融合      │    │ · 程序记忆      │   │
│   └─────────────────┘    └─────────────────┘    └─────────────────┘   │
│                                                                         │
│   ┌─────────────────────────────────────────────────────────────────┐   │
│   │                    工具调用行为 Tool-Invocation                    │   │
│   ├─────────────────────────────────────────────────────────────────┤   │
│   │ · ReAct风格循环     · 规划驱动的工具链     · 条件触发工具        │   │
│   │ · 多工具并行调用     · 工具选择策略        · 回退机制             │   │
│   └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

2.2 规划机制详解

规划能力层次

层次能力实现方式
L1: 无规划固定流程执行顺序管道
L2: 简单规划预定义分支条件判断
L3: 层级规划任务分解递归规划器
L4: 动态规划自适应重规划在线学习策略
L5: 元认知规划自我监控调整元学习控制器

规划算法分类

  1. 任务分解型: 将复杂查询分解为可执行的子任务

    • 例: “分析公司财报” → 收入分析 + 成本分析 + 风险评估
  2. 链式推理型: 顺序执行推理步骤,保留中间状态

    • 例: CoT (Chain-of-Thought) 模式
  3. 树搜索型: 探索多条推理路径,选择最优

    • 例: ReAct、Tree-of-Thoughts
  4. 规划-执行分离型: 先规划后执行,支持重规划

    • 例: Plan-and-Execute模式

2.3 检索编排策略

检索决策矩阵

策略触发条件检索源粒度
主动检索显式知识缺口检测多源自适应
被动检索固定位置插入单源固定
预测检索下一跳预测图谱+向量实体级
验证检索答案置信度低搜索引擎文档级

多粒度检索接口

A-RAG框架提出三层检索接口:

┌─────────────────────────────────────────────────────────────────────────┐
│                      A-RAG 多粒度检索接口                               │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│                        用户查询: "苹果公司2024年财报分析"               │
│                                   │                                      │
│                                   ▼                                      │
│   ┌─────────────────────────────────────────────────────────────────┐  │
│   │                    工具选择层 (Tool Selection)                    │  │
│   │                                                                  │  │
│   │   ┌──────────────┐  ┌──────────────┐  ┌──────────────┐        │  │
│   │   │ 关键词检索    │  │ 语义检索     │  │ 知识图谱检索 │        │  │
│   │   │ (BM25)       │  │ (Vector)     │  │ (Entity)     │        │  │
│   │   └──────┬───────┘  └──────┬───────┘  └──────┬───────┘        │  │
│   └──────────┼──────────────────┼─────────────────┼────────────────┘  │
│              │                  │                 │                    │
│              ▼                  ▼                 ▼                    │
│   ┌─────────────────────────────────────────────────────────────────┐  │
│   │                    粒度选择层 (Granularity Selection)            │  │
│   │                                                                  │  │
│   │   ┌────────────┐  ┌────────────┐  ┌────────────┐              │  │
│   │   │ 文档级     │  │ 段落级     │  │ 实体级     │              │  │
│   │   │ (Document) │  │ (Chunk)    │  │ (Entity)   │              │  │
│   │   └────────────┘  └────────────┘  └────────────┘              │  │
│   └──────────────────────────────────────────────────────────────────┘  │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

3. 核心架构模式

3.1 四种基础设计模式

根据Agentic RAG综述,四种基础模式组合形成复杂系统:

Pattern 1: Reflection (反思)

class ReflectionAgent:
    """反思模式:评估检索质量和生成结果"""
    
    def reflect(self, context, response):
        """
        反思机制核心流程
        
        1. 评估当前响应是否满足要求
        2. 识别知识缺口或不确定区域
        3. 决定是否需要额外检索
        """
        quality_score = self.evaluate_quality(context, response)
        
        if quality_score < self.threshold:
            gaps = self.identify_gaps(context, response)
            return {
                "needs_retrieval": True,
                "gaps": gaps,
                "reflection": self.generate_reflection(gaps)
            }
        return {"needs_retrieval": False}
    
    def evaluate_quality(self, context, response):
        """评估生成质量"""
        # 事实一致性检查
        factual_score = self.check_facts(response)
        
        # 完整性检查
        completeness_score = self.check_completeness(context, response)
        
        # 置信度评估
        confidence_score = self.estimate_confidence(response)
        
        return (factual_score + completeness_score + confidence_score) / 3

Pattern 2: Planning (规划)

class PlanningAgent:
    """规划模式:任务分解与执行调度"""
    
    def plan(self, query):
        """
        规划流程
        
        1. 理解用户意图
        2. 分解为子任务
        3. 确定执行顺序
        4. 分配工具资源
        """
        intent = self.understand_intent(query)
        subtasks = self.decompose(intent)
        execution_order = self.topological_sort(subtasks)
        
        return {
            "intent": intent,
            "subtasks": subtasks,
            "execution_order": execution_order,
            "estimated_steps": len(subtasks)
        }
    
    def decompose(self, intent):
        """将意图分解为可执行子任务"""
        # 使用LLM进行任务分解
        prompt = f"""
        将以下任务分解为可执行的子任务:
        任务: {intent}
        
        要求:
        - 每个子任务应原子化
        - 明确子任务之间的依赖关系
        - 指定每个子任务需要的工具
        """
        return self.llm.generate(prompt)

Pattern 3: Tool Use (工具使用)

class ToolUseAgent:
    """工具使用模式:动态工具编排"""
    
    def __init__(self):
        self.tool_registry = {
            "search": SearchTool(),
            "vector_retrieve": VectorRetrievalTool(),
            "kg_query": KnowledgeGraphTool(),
            "calculate": CalculatorTool(),
            "code_execute": CodeExecutionTool()
        }
    
    def select_tools(self, task_context):
        """基于任务上下文选择工具"""
        # 工具选择策略
        tool_scores = {}
        
        for tool_name, tool in self.tool_registry.items():
            relevance = tool.estimate_relevance(task_context)
            cost = tool.estimate_cost(task_context)
            quality = tool.estimate_quality(task_context)
            
            # 多目标优化:平衡相关性、成本和质量
            tool_scores[tool_name] = (
                0.5 * relevance + 
                0.3 * quality - 
                0.2 * cost
            )
        
        # 选择得分最高的工具组合
        selected = sorted(
            tool_scores.items(), 
            key=lambda x: x[1], 
            reverse=True
        )[:self.max_parallel_tools]
        
        return [t[0] for t in selected]
    
    def execute_tool_chain(self, tools, context):
        """执行工具链"""
        results = []
        
        for tool_name in tools:
            tool = self.tool_registry[tool_name]
            result = tool.execute(context)
            results.append(result)
            
            # 基于结果更新上下文
            context = self.update_context(context, result)
            
            # 检查是否提前终止
            if self.should_terminate(context):
                break
        
        return results

Pattern 4: Multi-Agent Collaboration (多智能体协作)

┌─────────────────────────────────────────────────────────────────────────┐
│                     多智能体协作架构                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│                          ┌─────────────────┐                            │
│                          │   协调器 Agent   │                            │
│                          │   (Coordinator) │                            │
│                          └────────┬────────┘                            │
│                                   │                                      │
│          ┌───────────────────────┼───────────────────────┐             │
│          │                       │                       │             │
│          ▼                       ▼                       ▼             │
│   ┌─────────────┐        ┌─────────────┐        ┌─────────────┐       │
│   │ 检索 Agent  │        │ 生成 Agent   │        │ 验证 Agent  │       │
│   │             │        │             │        │             │       │
│   │ - 向量检索   │        │ - 草稿生成   │        │ - 事实核查   │       │
│   │ - 图谱检索   │        │ - 答案修订   │        │ - 一致性检查 │       │
│   │ - 混合检索   │        │ - 质量评估   │        │ - 风险识别   │       │
│   └──────┬──────┘        └──────┬──────┘        └──────┬──────┘       │
│          │                       │                       │              │
│          └───────────────────────┼───────────────────────┘              │
│                                  │                                        │
│                                  ▼                                        │
│                          ┌─────────────┐                                  │
│                          │   结果整合   │                                  │
│                          │             │                                  │
│                          └─────────────┘                                  │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

3.2 组合模式示例

class FullAgenticRAG:
    """
    完整Agentic RAG系统:组合四种基础模式
    """
    
    def __init__(self):
        self.planner = PlanningAgent()
        self.retriever = RetrievalAgent()
        self.generator = GenerationAgent()
        self.reflector = ReflectionAgent()
        self.tools = ToolUseAgent()
    
    def query(self, user_query):
        """
        完整的Agentic RAG流程
        """
        # Phase 1: 规划
        plan = self.planner.plan(user_query)
        
        # Phase 2: 迭代执行
        context = []
        for subtask in plan["subtasks"]:
            # 工具选择
            tools = self.tools.select_tools(subtask)
            
            # 执行检索
            retrieved = self.retriever.search(
                query=subtask,
                tools=tools,
                context=context
            )
            
            # 生成
            generated = self.generator.generate(
                context=context + retrieved
            )
            
            # 反思
            reflection = self.reflector.reflect(
                context=context,
                response=generated
            )
            
            if reflection["needs_retrieval"]:
                # 补充检索
                additional = self.retriever.search(
                    query=reflection["gaps"],
                    context=context
                )
                context.extend(additional)
                
                # 重新生成
                generated = self.generator.generate(context)
            
            context.append({
                "subtask": subtask,
                "result": generated
            })
        
        # Phase 3: 结果整合
        final_response = self.integrate(context, plan)
        
        return final_response

4. 评估框架

4.1 评估维度

维度指标描述
准确性EM, F1, RAGAS最终答案的正确性
召回率Recall@K关键信息被检索的比例
效率检索次数, Token使用计算资源消耗
轨迹质量工具使用准确率, 步骤数中间过程质量
鲁棒性噪声容忍, 对抗攻击系统的健壮性

4.2 评估方法分类

层级评估视角

┌─────────────────────────────────────┐
│     轨迹级评估 (Trajectory)          │  ← 完整执行路径评估
├─────────────────────────────────────┤
│     决策质量 (Decision Quality)       │  ← 工具选择、策略决策
├─────────────────────────────────────┤
│     检索质量 (Retrieval Quality)      │  ← 精度、召回、多样性
├─────────────────────────────────────┤
│     生成质量 (Generation Quality)     │  ← 答案准确性、相关性
└─────────────────────────────────────┘

4.3 评估基准

基准特点适用场景
HotpotQA多跳问答迭代检索能力
2WikiMultiHopQA多跳推理跨文档推理
PopQA长尾知识知识覆盖
MuSiQue组合问题多步推理
Bamboogle动态知识最新信息检索

5. 开放问题与前沿挑战

5.1 关键挑战

5.1.1 幻觉传播问题

┌─────────────────────────────────────────────────────────────────────────┐
│                        幻觉传播链                                        │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│   检索错误 ──→ 生成误信 ──→ 错误输出 ──→ 再次检索错误信息               │
│       │                                                      ↑          │
│       └────────────────────────────────────────────────────────┘          │
│                                                                         │
│   问题:迭代过程中错误会累积放大,难以检测和纠正                          │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

应对策略

  • 置信度感知的检索触发
  • 多源交叉验证
  • 证据充分性评估

5.1.2 记忆污染攻击

攻击类型描述风险
Query注入在查询中植入恶意指令知识库被恶意修改
上下文污染注入虚假信息检索结果被污染
长期记忆攻击持久化恶意知识持续的错误输出

5.1.3 检索-推理对齐

  • LLM的推理偏好与检索系统的能力可能不匹配
  • 检索结果可能无法支持推理所需的精确信息
  • 语义鸿沟:查询意图与实际检索内容的差异

5.2 前沿研究方向

方向描述潜力
稳定自适应检索可靠的停止标准和证据充分性指标
成本感知编排平衡质量与计算成本
形式化轨迹评估数学化的推理质量框架
安全监控机制人类在环、治理框架
跨模态Agentic RAG图像、视频等多模态检索

6. 实践指南

6.1 架构选择决策树

选择Agentic RAG架构?

├── 任务复杂度:单跳问答
│   └── 推荐:传统RAG + 简单反思
│
├── 任务复杂度:多跳推理
│   ├── 数据结构化程度:高
│   │   └── 推荐:GraphRAG + 规划模块
│   └── 数据结构化程度:低
│       └── 推荐:Agentic RAG + 层次化检索
│
├── 任务复杂度:开放式研究
│   ├── 实时性要求:高
│   │   └── 推荐:多Agent协作 + 异步检索
│   └── 实时性要求:低
│       └── 推荐:全量Agentic RAG + 完整反思循环
│
└── 任务复杂度:安全关键场景
    └── 推荐:Human-in-the-loop + 验证Agent

6.2 实现建议

  1. 渐进式实现:从简单模式开始,逐步增加复杂性
  2. 模块化设计:各组件独立,便于调试和优化
  3. 可观测性:完整的日志和追踪机制
  4. 容错机制:优雅降级和错误恢复
  5. 安全第一:严格的权限控制和审计日志

7. 参考文献


相关文档