rag与agent的区别

接入与开发

用大白话讲清 RAG 和 Agent 各自解决什么问题、什么时候该用哪个、怎么把检索塞进 Agent 的工具循环里配合使用。

刚上手 AI 应用,很容易把 RAG 和 Agent 混着用:明明只要答一份内部文档,却去搭一套多步工具循环;或者该让模型自己查资料动手做,却硬塞一段长上下文。这篇不堆概念,只讲两者的分工边界:谁负责把资料找进来,谁负责决定下一步做什么,以及两者拼在一起时那条链路长什么样。

刚上手 AI 应用,很容易把 RAG 和 Agent 混着用:明明只要答一份内部文档,却去搭一套多步工具循环;或者该让模型自己查资料动手做,却硬塞一段长上下文。结果就是钱花了、活没干成,排查起来还不知道从哪下手。

这篇不堆概念,只讲两者的分工边界:谁负责把资料找进来,谁负责决定下一步做什么。看完你至少能判断手头这个需求该走哪条路,以及两者拼在一起时那条链路长什么样。

先分清:一个解决「知道什么」,一个解决「做什么」

RAG 的本质是给模型外挂一份资料库。提问时先把相关资料捞出来拼进上下文,模型基于这些内容回答,主要解决知识过时、私有数据答不准的问题。它不改变模型的行为方式,只是把「参考书」摆在它面前。

Agent 的本质是把模型放进一个循环。它能自己决定调用哪个工具、看结果、再决定下一步,主要解决需要多步操作和外部动作的任务。区别在于它不只是「回答」,而是「推进一件事」。

  • 任务是「基于给定资料给答案」——偏 RAG,链路稳、可控;
  • 任务是「自己找资料、算数、调接口、改文件」——偏 Agent,需要循环和工具;
  • 任务既要知道又要动手——两者组合,检索退化成 Agent 的一个工具;
  • 资料量很小、直接塞进上下文就够——两者都可以不用,别为了架构好看硬上。

把两条链路画出来,差别一眼就清楚

典型 RAG 链路是固定的单向流水线:文档清洗切块、向量化入库、提问时召回、重排、拼进提示词、模型作答。步骤基本写死,每次跑法一样,跑一次花多少钱心里有数。

典型 Agent 链路是不固定的循环:模型看当前状态、选工具、执行、把结果塞回上下文、再判断是否继续,直到它认为任务完成或撞到步数上限。调用次数会漂,成本和延迟也跟着漂。

对比维度RAGAgent
链路形状单向流水线,步骤固定循环,步数随任务变
出错先看哪召回的内容对不对选错工具还是循环没收住
成本可预测性相对稳定随任务波动大
适合的判断标准答得准不准事办没办成

所以排查顺序也不一样:RAG 答错先看召回段落是不是本来就没捞到;Agent 跑错先看这一步是工具选错了,还是它一直在原地打转。想对照不同接入方式的延迟表现,可以到 /tools/speed-test 量基线再下结论。

选型对照:按任务形状挑,而不是按热度挑

选型最忌讳看别人用什么就跟着上。先把任务拆成「只要答案」还是「要有动作」,答案基本就出来了。下面这张对照表可以直接拿去跟需求方对。

任务形状建议路线理由
文档问答、客服知识库、内部规章查询RAG接入和维护成本更低
查完还要下单、改配置、跑脚本、跨系统取数Agent工具调用是刚需
客户报障后先翻手册再决定怎么处理组合检索封装成 Agent 的工具
只想让模型说得更贴合业务语气都不用提示词和示例就够了

注意工具不是越多越好。叠加太多工具会让模型选择变难,工具清单和循环上限要提前定死。具体能接哪些工具入口,可以到 /stacks/agent-apis 看目录再动手。

什么时候这条建议不适用

如果一上来就要求「答案必须有出处、能点开原文」,那纯 Agent 循环反而不好控,检索这一环得单独留出可追溯的接口。反过来,如果任务天然就是一问一答、没有工具可用,硬套 Agent 只会多花调用次数。

配合方式:把检索当成 Agent 手里的一个工具

最常用的做法是把检索包装成一个函数,Agent 判断需要资料时自己调。好处是按需检索,不会每次都给模型塞一堆无关内容,也就省了上下文和费用。

另一种是先检索再交给 Agent,适合资料范围明确、第一次就要把上下文喂足的场景。混合做法要设边界:单次任务最多查几次、每次返回几条、检索不到时怎么回退,都得写清楚,否则循环容易空转烧钱。

  1. 先定触发条件写清什么情况下允许调检索工具,比如问题里出现专有名词或引用了某份文档时才调;验证办法是跑一批「明显不需要查」的样例,看它会不会乱调。
  2. 再定返回规模规定单次返回的段落条数和总长度上限;验证办法是拿长文档跑一遍,看拼进上下文后有没有超出模型窗口。
  3. 最后定回退路径检索为空或结果明显不相关时,让它明确地说「没查到」并停手,而不是继续猜;验证办法是故意问一个库里没有的问题,看它是否老实收手。

如果你还在纠结官方接口和中转站怎么选,站内 /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 对照当时的数字。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。