本页目录
L07 — Agentic RAG:Agent + RAG
本课目标:把你学过的 RAG 和 Agent 两大体系连起来。把 RAG 包装成一个"工具",让 Agent 自主决定什么时候检索、检索什么。这是知识闭环的一课。
传统 RAG(你前 9 课学的)每次都检索,不管问题需不需要。Agentic RAG 让 Agent 按需检索——更聪明、更省钱。
1. 传统 RAG 的局限:无脑检索
回顾你在 RAG 课程学的标准流程:
用户问题 → 【必定检索】→ 拼接上下文 → 生成答案
问题在于"必定检索"。考虑这些场景:
| 用户问题 | 传统 RAG 的做法 | 问题 |
|---|---|---|
| "你好,你是谁?" | 去知识库检索一堆无关内容 | 🚫 浪费(不需要检索) |
| "1+1 等于几?" | 检索出"年假制度"等无关内容 | 🚫 浪费 + 干扰 |
| "帮我查北京天气" | 在内部知识库里找(找不到) | 🚫 应该调天气工具而非 RAG |
| "张三的年假和病假分别怎么请?" | 检索一次,可能召回不全 | ⚠️ 需要多次检索 |
核心问题:传统 RAG 没有"判断力"——不管什么问题都去翻文档。有些问题根本不需要翻文档,有些需要翻多次。
2. Agentic RAG:让 Agent 自主决定
Agentic RAG 的思路:把"检索知识库"变成 Agent 的一个工具,让 Agent 自己判断:
用户问题 → Agent 思考:
├─ 这个问题需要查知识库吗?
│ ├─ 不需要(如"1+1")→ 直接回答 / 调别的工具
│ └─ 需要 → 调用 search_knowledge_base 工具
│ └─ 查一次够吗?
│ ├─ 够了 → 基于结果回答
│ └─ 不够 → 换关键词再查(多轮检索)
传统 RAG vs Agentic RAG
| 传统 RAG | Agentic RAG | |
|---|---|---|
| 检索时机 | 每次都检索 | Agent 自主决定 |
| 不需要检索的问题 | 也去检索(浪费) | 跳过检索直接答 |
| 检索不够时 | 只查一次 | 多轮检索(换关键词再查) |
| 能调其他工具吗 | 不能 | 能(天气、计算器等一起配) |
| 成本 | 每次都检索(贵) | 按需检索(省) |
🎯 核心认知:Agentic RAG 不是替代传统 RAG,而是把 RAG 升级成 Agent 的一个能力。RAG 变成了 Agent 工具箱里的一把"扳手"——需要时拿出来,不需要时收起来。
3. 多轮检索:查不到就换关键词
这是 Agentic RAG 最有价值的能力。传统 RAG 查一次就结束,如果召回不准,答案就错了。Agentic RAG 可以:
用户:"张三的审批流程是什么?"
Agent 第1轮:检索 "张三 审批流程" → 没找到相关内容
Agent 第2轮:换个关键词检索 "审批流程" → 找到了!
Agent:基于结果回答
Agent 能根据第一次检索的结果判断够不够,不够就自动调整。这模拟了人类查资料的行为——找不到就换个搜法。
4. 怎么把 RAG 包装成工具
技术上很简单——你在 RAG 课程写过的检索逻辑,包装成一个函数 + tools 定义:
def search_knowledge_base(query: str) -> str:
"""检索知识库。直接复用你 RAG 课的代码!"""
# 1. 向量化 query(embedding)
# 2. Chroma 检索 top-k
# 3. 返回相关文档片段
...
# 然后注册成 Agent 的一个工具
TOOLS_SPEC = [
{"type": "function", "function": {
"name": "search_knowledge_base",
"description": "在公司知识库里搜索相关信息。当用户问公司制度、流程、政策等问题时使用。",
...
}},
# 还可以配其他工具(天气、计算器等)
]
💡 看,RAG 课程的 embedding + Chroma 检索代码,原封不动变成 Agent 的一个工具。这就是知识的复用和闭环。
5. 本课代码会做什么
code.py 实现一个 Agentic RAG 系统:
① RAG 工具化
把你 RAG 课的 employee_handbook + it_policy 文档建库,包装成 search_knowledge_base 工具。同时配 get_weather、calculator 工具。
② Agentic RAG Agent
Agent 面对不同问题自主决策: - "年假有几天?" → 调 search_knowledge_base - "1+1 等于几?" → 调 calculator(不碰知识库) - "你好" → 直接回答(不调任何工具)
③ 对比传统 RAG
同样的问题,传统 RAG 无脑检索 vs Agentic RAG 按需检索——看哪个更聪明、更省。
6. 跑起来
python agent-lessons/07_agentic_rag/code.py
终端会打印 Agent 面对不同问题的工具选择。重点看:简单问题(如"你好")Agent 跳过检索,只有真正需要查文档时才检索。
下一课 L08 — 多智能体协作 会讲:多个 Agent 怎么分工合作。