刚上手 AI 应用,很容易把 RAG 和 Agent 混着用:明明只要答一份内部文档,却去搭一套多步工具循环;或者该让模型自己查资料动手做,却硬塞一段长上下文。这篇不堆概念,只讲两者的分工边界:谁负责把资料找进来,谁负责决定下一步做什么,以及两者拼在一起时那条链路长什么样。
刚上手 AI 应用,很容易把 RAG 和 Agent 混着用:明明只要答一份内部文档,却去搭一套多步工具循环;或者该让模型自己查资料动手做,却硬塞一段长上下文。结果就是钱花了、活没干成,排查起来还不知道从哪下手。
这篇不堆概念,只讲两者的分工边界:谁负责把资料找进来,谁负责决定下一步做什么。看完你至少能判断手头这个需求该走哪条路,以及两者拼在一起时那条链路长什么样。
先分清:一个解决「知道什么」,一个解决「做什么」
RAG 的本质是给模型外挂一份资料库。提问时先把相关资料捞出来拼进上下文,模型基于这些内容回答,主要解决知识过时、私有数据答不准的问题。它不改变模型的行为方式,只是把「参考书」摆在它面前。
Agent 的本质是把模型放进一个循环。它能自己决定调用哪个工具、看结果、再决定下一步,主要解决需要多步操作和外部动作的任务。区别在于它不只是「回答」,而是「推进一件事」。
- 任务是「基于给定资料给答案」——偏 RAG,链路稳、可控;
- 任务是「自己找资料、算数、调接口、改文件」——偏 Agent,需要循环和工具;
- 任务既要知道又要动手——两者组合,检索退化成 Agent 的一个工具;
- 资料量很小、直接塞进上下文就够——两者都可以不用,别为了架构好看硬上。
把两条链路画出来,差别一眼就清楚
典型 RAG 链路是固定的单向流水线:文档清洗切块、向量化入库、提问时召回、重排、拼进提示词、模型作答。步骤基本写死,每次跑法一样,跑一次花多少钱心里有数。
典型 Agent 链路是不固定的循环:模型看当前状态、选工具、执行、把结果塞回上下文、再判断是否继续,直到它认为任务完成或撞到步数上限。调用次数会漂,成本和延迟也跟着漂。
| 对比维度 | RAG | Agent |
|---|---|---|
| 链路形状 | 单向流水线,步骤固定 | 循环,步数随任务变 |
| 出错先看哪 | 召回的内容对不对 | 选错工具还是循环没收住 |
| 成本可预测性 | 相对稳定 | 随任务波动大 |
| 适合的判断标准 | 答得准不准 | 事办没办成 |
所以排查顺序也不一样:RAG 答错先看召回段落是不是本来就没捞到;Agent 跑错先看这一步是工具选错了,还是它一直在原地打转。想对照不同接入方式的延迟表现,可以到 /tools/speed-test 量基线再下结论。
选型对照:按任务形状挑,而不是按热度挑
选型最忌讳看别人用什么就跟着上。先把任务拆成「只要答案」还是「要有动作」,答案基本就出来了。下面这张对照表可以直接拿去跟需求方对。
| 任务形状 | 建议路线 | 理由 |
|---|---|---|
| 文档问答、客服知识库、内部规章查询 | RAG | 接入和维护成本更低 |
| 查完还要下单、改配置、跑脚本、跨系统取数 | Agent | 工具调用是刚需 |
| 客户报障后先翻手册再决定怎么处理 | 组合 | 检索封装成 Agent 的工具 |
| 只想让模型说得更贴合业务语气 | 都不用 | 提示词和示例就够了 |
注意工具不是越多越好。叠加太多工具会让模型选择变难,工具清单和循环上限要提前定死。具体能接哪些工具入口,可以到 /stacks/agent-apis 看目录再动手。
什么时候这条建议不适用
如果一上来就要求「答案必须有出处、能点开原文」,那纯 Agent 循环反而不好控,检索这一环得单独留出可追溯的接口。反过来,如果任务天然就是一问一答、没有工具可用,硬套 Agent 只会多花调用次数。
配合方式:把检索当成 Agent 手里的一个工具
最常用的做法是把检索包装成一个函数,Agent 判断需要资料时自己调。好处是按需检索,不会每次都给模型塞一堆无关内容,也就省了上下文和费用。
另一种是先检索再交给 Agent,适合资料范围明确、第一次就要把上下文喂足的场景。混合做法要设边界:单次任务最多查几次、每次返回几条、检索不到时怎么回退,都得写清楚,否则循环容易空转烧钱。
- 先定触发条件写清什么情况下允许调检索工具,比如问题里出现专有名词或引用了某份文档时才调;验证办法是跑一批「明显不需要查」的样例,看它会不会乱调。
- 再定返回规模规定单次返回的段落条数和总长度上限;验证办法是拿长文档跑一遍,看拼进上下文后有没有超出模型窗口。
- 最后定回退路径检索为空或结果明显不相关时,让它明确地说「没查到」并停手,而不是继续猜;验证办法是故意问一个库里没有的问题,看它是否老实收手。
如果你还在纠结官方接口和中转站怎么选,站内 /rankings 和 /price-watch 有按当时数字整理的对比,模型与价格资料可以到 /sites 核对。这类数字会变,看页面上的当前值就行。
下一步先把你手头那个需求的「缺资料还是缺步骤」写在一行字里,再去 /stacks/agent-apis 挑工具体系、到 /tools/speed-test 测一遍延迟,基本就能定下走 RAG、走 Agent 还是两者组合。→常见问题
RAG 和 Agent 是同一个东西的不同叫法吗?
不是。RAG 是「检索 + 生成」的固定流程,核心是把外部资料喂给模型;Agent 是「模型自己决策 + 调工具」的循环,核心是自主选动作。一个管资料从哪来,一个管下一步干什么,可以单独用,也可以套在一起用。
刚入门应该先学哪个?
建议先做 RAG。链路是单向的,每一步都能单独验证,出错也好定位;等你能稳定把资料喂对、答案可用之后,再上 Agent 加工具循环。反过来先做 Agent,一旦答案不对,你很难分清是检索的问题还是决策的问题。
两者一起用会不会很贵?
会比单用更贵,因为 Agent 每多一轮循环就多一次模型调用。控制点在三个地方:限制循环步数、限制检索次数、给不同任务分配不同档位的模型。具体单价和用量换算可以到 /tools/model-cost-calculator 和 /official-api 对照当时的数字。