大模型与智能体协同 / RAG 与 Agent 的深度结合
CHAPTER 08 · TOPIC 03

RAG 与 Agent 的深度结合

RAG(检索增强生成)和 Agent 是 LLM 应用的两大核心范式。当两者深度结合时,Agent 不仅能检索知识,还能主动规划检索策略、评估结果质量、动态调整检索方案——实现从"被动检索"到"主动知识探索"的跃迁。

一句话理解

RAG(检索增强生成)和 Agent 是 LLM 应用的两大核心范式。当两者深度结合时,Agent 不仅能检索知识,还能主动规划检索策略、评估结果质量、动态调整检索方案——实现从"被动检索"到"主动知识探索"的跃迁。

阅读前置

建议完成第 04、05 章

本文关注

从 RAG 到 Agentic RAG、Agentic RAG 架构、多数据源路由

所在知识层

系统协同 · 大模型与智能体协同

文章导航
主教学视觉RAG 与 Agent 的深度结合 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

RAG(检索增强生成)Agent 是 LLM 应用的两大核心范式。当两者深度结合时,Agent 不仅能检索知识,还能主动规划检索策略、评估结果质量、动态调整检索方案——实现从"被动检索"到"主动知识探索"的跃迁。


1. 从 RAG 到 Agentic RAG

1.1 演进路线

语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Level 1: 朴素 RAG查询检索生成问题:一次检索,质量不稳定
查看原文结构
Level 1: 朴素 RAG
  查询 → 检索 → 生成
  问题:一次检索,质量不稳定
语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Level 2: 高级 RAG查询改写检索重排生成改进:优化检索质量
查看原文结构
Level 2: 高级 RAG
  查询改写 → 检索 → 重排 → 生成
  改进:优化检索质量
语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文Level 3: 模块化 RAG系统核心查询分析选择检索策略检索工具、结果与反馈后处理生成
查看原文结构
Level 3: 模块化 RAG
  查询分析 → 选择检索策略 → 检索 → 后处理 → 生成
  改进:根据查询类型选择最优策略

1.2 Agentic RAG 的核心优势

对比维度传统 RAGAgentic RAG
检索决策每次都检索Agent 判断是否需要检索
查询处理原始查询直接检索Agent 分解和改写查询
检索策略固定策略Agent 动态选择策略
结果评估不评估Agent 评估结果充分性
多源检索单一知识库Agent 在多个数据源间路由
迭代能力一次性Agent 可多次迭代检索

2. Agentic RAG 架构

2.1 核心架构

语义 SVG 重绘RAG 与 Agent 的深度结合

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查询分析 Agent · 理解用户意图…补充检索 · (调整策略)
查看原文结构
用户查询
    ↓
┌──────────────────────┐
│   查询分析 Agent      │
│   - 理解用户意图      │
│   - 判断是否需要检索   │
│   - 分解复杂查询      │
└──────────┬───────────┘
           ↓
┌──────────────────────┐
│   检索规划 Agent      │
│   - 选择数据源        │
│   - 生成检索查询      │
│   - 确定检索策略      │
└──────────┬───────────┘
           ↓
┌──────────────────────┐
│   检索执行            │
│   - 向量检索          │
│   - 关键词检索        │
│   - 结构化查询        │
│   - API 调用          │
└──────────┬───────────┘
           ↓
┌──────────────────────┐
│   结果评估 Agent      │
│   - 评估充分性        │
│   - 检查一致性        │
│   - 决定是否需要补充   │
└──────────┬───────────┘
       ┌───┴───┐
    充分 ↓     ↓ 不充分
  ┌──────┐  ┌──────────┐
  │ 生成  │  │ 补充检索  │ → 回到检索规划
  │ 回答  │  │ (调整策略) │
  └──────┘  └──────────┘

2.2 代码实现

语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

async def answer(se…str:Step 1: 查询分析analysis = await se…
查看原文结构
async def answer(self, query: str) -> str:
        # Step 1: 查询分析
        analysis = await self.analyze_query(query)
语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

async def analyzequ…dict:"""分析查询意图和检索需求"""return await self.l…分析以下查询: query
查看原文结构
async def analyze_query(self, query: str) -> dict:
        """分析查询意图和检索需求"""
        return await self.llm.generate_structured(f"""
            分析以下查询:{query}

3. 多数据源路由

3.1 智能路由

语义 SVG 重绘RAG 与 Agent 的深度结合

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

async def route(sel…list:"""返回应该查询的数据源列表和查询方…
查看原文结构
async def route(self, query: str) -> list:
        """返回应该查询的数据源列表和查询方式"""

3.2 多源融合

PYTHON
async def multi_source_retrieval(query: str, router: DataSourceRouter):
    """多数据源并行检索并融合"""
    
    # 获取路由计划
    routes = await router.route(query)
    
    # 并行检索
    tasks = []
    for route in routes:
        if route["source"] == "vector_store":
            tasks.append(vector_store.search(route["query"], route["top_k"]))
        elif route["source"] == "web_search":
            tasks.append(web_search.search(route["query"]))
        elif route["source"] == "sql_database":
            tasks.append(db.execute(route["query"]))
    
    results = await asyncio.gather(*tasks)
    
    # 结果融合和去重
    merged = merge_and_deduplicate(results)
    
    # 重排序
    reranked = await reranker.rerank(query, merged)
    
    return reranked

4. 自适应检索策略

4.1 Corrective RAG(CRAG)

语义 SVG 重绘RAG 与 Agent 的深度结合

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

用户查询初始检索质量评估高质量 中等质量 低质量直接使用 精化检索 换策略检索生成回答 再次检索 (如换数据源)
查看原文结构
用户查询 → 初始检索 → 质量评估
                          ↓
                  ┌───────┼───────┐
                高质量   中等质量   低质量
                  ↓       ↓        ↓
              直接使用  精化检索  换策略检索
              生成回答  再次检索  (如换数据源)

4.2 Self-RAG

语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文训练模型输出特殊 token:系统核心Retrieve触发检索ISREL:yes工具、结果与反馈检索结果相关ISREL:no
查看原文结构
训练模型输出特殊 token:
  [Retrieve]   → 触发检索
  [ISREL:yes]  → 检索结果相关
  [ISREL:no]   → 检索结果不相关
  [ISSUP:yes]  → 回答有检索结果支持
  [ISSUP:no]   → 回答缺乏检索支持
  [ISUSE:yes]  → 回答有用
  [ISUSE:no]   → 回答无用
语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

流程:用户查询模型判断是否需要检索需要则 Retrieve检索评估结果
查看原文结构
流程:
  用户查询 → 模型判断是否需要检索 → 需要则 [Retrieve] → 检索 → 评估结果 → 生成

5. Graph RAG 与 Agent

5.1 知识图谱增强的 RAG

语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

传统 RAG:查询向量相似度返回文档片段问题:无法理解实体间的关系
查看原文结构
传统 RAG:
  查询 → 向量相似度 → 返回文档片段
  问题:无法理解实体间的关系
语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Graph RAG:查询知识图谱检索实体关系推理返回结构化知识
查看原文结构
Graph RAG:
  查询 → 知识图谱检索 → 实体关系推理 → 返回结构化知识
语义 SVG 重绘RAG 与 Agent 的深度结合 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

图谱检索路径:张三就职于A公司竞争对手B公司、C公司、D公
查看原文结构
图谱检索路径:
    张三 → 就职于 → A公司
    A公司 → 竞争对手 → B公司、C公司、D公司

5.2 Graph RAG + Agent

PYTHON
class GraphRAGAgent:
    """知识图谱增强的 RAG Agent"""
    
    async def answer(self, query: str):
        # 1. 从查询中提取实体
        entities = await self.extract_entities(query)
        
        # 2. 在知识图谱中查找相关实体和关系
        graph_results = await self.knowledge_graph.query(entities)
        
        # 3. 同时做向量检索
        vector_results = await self.vector_store.search(query)
        
        # 4. Agent 综合两种结果
        answer = await self.llm.generate(f"""
            用户问题: {query}
            
            知识图谱结果:
            {format_graph_results(graph_results)}
            
            文档检索结果:
            {format_vector_results(vector_results)}
            
            请综合两种信息源回答问题。
            如果两种来源有冲突,请指出并给出你的判断。
        """)
        
        return answer

6. RAG Agent 的评估与优化

6.1 评估指标

指标说明评估方法
检索相关性检索到的内容与查询是否相关人工评分 / 自动评估
回答忠实度回答是否基于检索结果,不编造Faithfulness 评估
回答完整性是否回答了用户的所有问题Coverage 评估
检索效率是否用最少的检索轮次获得足够信息平均检索轮次
路由准确率是否选择了正确的数据源路由决策准确率

6.2 优化策略

语义 SVG 重绘RAG 与 Agent 的深度结合

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

1. 查询分解复杂查询分解为多个简单子查询分别检索合并
查看原文结构
1. 查询分解
   复杂查询 → 分解为多个简单子查询 → 分别检索 → 合并

7. 本章小结

维度要点
演进朴素 RAG → 高级 RAG → 模块化 RAG → Agentic RAG
核心Agent 自主决策检索策略、评估结果、迭代优化
多源向量库 + 网页 + 数据库 + 知识图谱,智能路由
质量CRAG(修正检索)/ Self-RAG(自主决定检索时机)
评估相关性 + 忠实度 + 完整性 + 效率

相关章节


延伸阅读

  • Edge, D. et al. (2024). "From Local to Global: A Graph RAG Approach to Query-Focused Summarization". arXiv
  • Asai, A. et al. (2024). "Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection". ICLR
  • Yan, S.Z. et al. (2024). "Corrective Retrieval Augmented Generation". arXiv