Skip to content

第 03 课 · RAG 够了吗?什么时候才需要工具

RAG 负责「答」,工具负责「办」。 分不清这条线,要么把答疑做成一堆没必要的工具调用,要么让模型「一本正经地编」本该去查的数据。


本课要解决的问题

第 02 课选完了 Workflow 的结构。到了答疑 / 办事这类功能,最纠结的一步是:

光靠 检索教材(RAG) 够不够?什么时候必须 调工具(Function Calling) 才能完成?

本课给你:

  • 一条清晰的 「答」与「办」分界线
  • RAG 能覆盖 vs 必须上工具的 对照表
  • Function Calling 的 最小落地(不引入完整 Agent)
  • 三种常见 RAG / 工具误用 及纠正

一句话分界线:信息是「已存在的」还是「要现算 / 现查 / 现改」的?

RAG(检索增强)工具(Function Calling)
解决什么回答「资料里 已经写着 的东西」获取 / 改变「此刻 才有的状态」
数据来源教材、讲义、题库等 静态知识数据库、后台 API、实时系统
典型动作检索 → 拼 prompt → 生成带出处的答案查进度、算分、写错题本、调组卷接口
能不能编检不到就 拒答,不该编必须真调用,绝不能让模型「猜」结果

口诀: 问「书里怎么说」→ RAG;问「我的数据现在是什么 / 帮我改一下」→ 工具。


先把 RAG 做对(大多数答疑到这里就够)

很多「答疑不准」的锅,不在没上工具,而在 RAG 本身没做对:

RAG 常见问题表现纠正
章节直灌代替检索token 爆、易截断、答非所问切块 + 语义检索,只塞相关 chunk
切块太大 / 太小太大不精准,太小丢上下文常见 300~800 字,按内容调
检索不到却硬答幻觉、编造出处无依据则拒答 或提示问老师
不给出处用户无法核对答案附「依据第 X 节」

判断法: 如果用户的问题 答案就写在教材里,你要做的几乎总是 把 RAG 做扎实,而不是加工具。


什么时候 RAG 不够、必须上工具

当问题的答案 不在任何静态资料里,而在「运行时状态」里,RAG 无论怎么调都答不了 —— 这时才需要工具。

用户问 / 要RAG 能答吗需要什么
「这个知识点讲了啥?」✅ 能RAG
「我这门课学到第几章了?」❌ 不能(个人实时进度)查进度工具
「我上次这道题错在哪?」❌ 不能(个人历史)查错题记录工具
「帮我把这题加进错题本」❌ 不能(要写数据)写库工具 + 审批
「按我薄弱点出 5 道题」⚠️ 部分(出题可 RAG,但要先知道薄弱点)查数据 + 生成组合

关键信号: 出现「我的」「现在」「帮我改 / 记 / 发」这类词,基本就越过了 RAG 的边界。


工具的最小落地:一次 Function Calling,不是完整 Agent

需要工具 ≠ 要上自主 Agent 循环。先用「单次固定工具调用」,这仍属于 Workflow:

用户问

路由判断:这是「查/办」类问题吗?
   ├─ 否 → RAG 答疑(第 02 课那条主干)
   └─ 是 → 单次 Function Calling
             ├─ 模型产出「调用 getProgress(userId)」
             ├─ 后端真正执行该函数(带权限校验)
             ├─ 把结果拼回 → LLM 组织成自然语言
             └─ 高风险写操作 → 先弹人工确认

和自主 Agent 的区别:

单次 Function Calling自主 Agent 循环
调几次工具1 次,固定多次,模型自己决定
路径你写死模型临时规划
成本 / 延迟可预测不可控
适用「查一下 / 改一下」这类明确动作「自己想办法搞定」的开放任务

绝大多数「要动手」的教材 / 网校功能,一次 Function Calling 就够。 别一看到「工具」就跳到 ReAct。


工具设计的三条底线(教材场景)

  1. 只读优先,写操作必审批:查进度可直接调;改成绩 / 删记录 / 发通知必须人工确认。
  2. 参数由后端校验:模型给的 userId、题目 ID 等 不可信,后端要校验权限(不能查到别人的数据)。
  3. 失败要能兜底:工具超时 / 报错时,给「暂时查不到,请稍后再试」,而不是让模型编一个结果。

三种常见误用

误用症状纠正
该 RAG 却调工具把「概念讲解」做成查数据库,慢且无意义退回 纯 RAG 答疑
该工具却让模型编问「我的进度」,模型不查库直接瞎说一个百分比强制走 Function Calling,查不到就拒答
一步到位上 Agent「查数据 + 出题」直接丢给自主循环,超时又难测拆成 查工具 → RAG 出题 的固定 Workflow

一张分界速查表(读完用这个)

问题特征方案
答案在教材 / 静态资料里RAG
要个人实时状态(进度 / 成绩 / 历史)RAG 无关,单次查询工具
要改数据 / 发通知 / 调后台单次工具 + 人工审批
查完还要基于结果再生成(如按薄弱点出题)工具 → RAG/生成 的固定链
路径不确定、要多步自主探索才上自主 Agent(第二篇细讲)

本课结论(可直接发给团队)

  1. RAG 答「书里写了什么」,工具办「我的数据 / 现在的状态」。
  2. 答疑不准,先怀疑 RAG 没做对,别急着加工具。
  3. 需要工具 ≠ 需要 Agent:优先「单次固定 Function Calling」。
  4. 写操作必审批,参数必校验,失败必兜底。
  5. 决策篇到此结束: 要不要上(01)→ 用什么结构(02)→ RAG 还是工具(03)。下一篇进入六种模式的落地。

课后自检(3 分钟)

  • [ ] 我能判断每个问题的答案是「在资料里」还是「在运行时状态里」
  • [ ] 我的 RAG 有切块 + 语义检索 + 出处 + 拒答策略
  • [ ] 我需要的工具能用「单次固定调用」表达,而非开放循环
  • [ ] 我的写操作都加了人工审批,参数都在后端校验
  • [ ] 我给工具失败设计了兜底话术

5 个都勾选 → 决策篇通关,进入模式篇。 还在「直灌 / 让模型编数据 / 一上来就 Agent」 → 回到本课分界表重看。


下一课预告

第 04 课 · 提示链与路由:网校最常见解法 —— 进入第二篇「模式篇」,把前五种 Workflow 模式落到真实网校代码结构。


延伸阅读


© 曹宇春

© 曹宇春 · 个人学习整理,欢迎交流