rag和agent和llm到底是什么关系

接入与开发

用搭积木的比喻讲清 LLM、RAG、Agent 各管哪一段,并给出判断自己该上哪一层的清单和最小验证步骤。

很多人第一次同时听到 LLM、RAG、Agent 三个词,脑子里是一团糊的:到底是三个并列的东西,还是一个套一个?结果要么把 Agent 当成更强的模型去买,要么把 RAG 当成可有可无的插件,做了一半才发现方向错了。这篇不讲原理细节,只做一件事:把三者的位置摆清楚,再给你一套「我这活儿到底需要哪一层」的判断顺序,以及先花半天验证再决定要不要动工的做法。

很多人第一次同时听到 LLM、RAG、Agent 三个词,脑子里是一团糊的:到底是三个并列的东西,还是一个套一个?结果要么把 Agent 当成更强的模型去买,要么把 RAG 当成可有可无的插件,做了一半才发现方向错了。这篇不讲原理细节,只做一件事:把三者的位置摆清楚,再给你一套「我这活儿到底需要哪一层」的判断顺序,以及先花半天验证再决定要不要动工的做法。

先把结论压成一句:LLM 是底座,负责生成;RAG 是给底座临时补资料的一段流程;Agent 是让底座决定下一步干什么的调度层。三者不是三选一,而是「地基 + 两种不同加法」。下面逐层拆开,每一层都配一个可执行的判断动作,你对着自己的场景走一遍就能定位。

一句话定位:谁负责想,谁负责查,谁负责动手

LLM
只会接着往下写的底座,不知道你公司的文档,也不会自己去点按钮
RAG
先检索、再塞进上下文、最后生成的补资料流程,模型本身没变
Agent
让 LLM 决定下一步做什么的调度层,能调工具、能循环,检索只是它可能调的工具之一

把这三层想成搭积木:LLM 是那块最大的底板,所有输出都从它出来;RAG 是在底板旁边接了一根「查资料」的管子,管子里的内容被临时放到桌面上给它看;Agent 则是在底板上装了一个小控制台,控制台自己决定什么时候去接哪根管子、要不要再跑一轮。所以 Agent 里面常常包含 RAG,反过来则不成立。

层回答什么问题典型误判
LLM怎么说出一段通顺的话以为换个模型就能知道公司内部资料
RAG把哪几段资料摆到模型面前以为检索没命中是模型不够聪明
Agent下一步该做什么、调哪个工具以为循环失控是模型档次不够

判断顺序:先问自己缺的是知识还是动作

别一上来就选技术栈,先用两个问句定位:问题是不是出在「模型不知道我的资料」?需不需要「多步操作、调外部接口、按结果决定下一步」?前者指向 RAG,后者指向 Agent。两个都缺,通常先做 RAG 再做 Agent,因为检索结果本身就是 Agent 最好用的一个工具。

  • 只在缺资料:上 RAG,不用碰 Agent,链路短、出错面小、排查简单
  • 只在缺动作:需要多步执行和调接口,才考虑 Agent 那一层
  • 两者都缺:先把 RAG 跑通,把检索做成一个稳定工具,再接调度循环
  • 只是要固定格式输出:两层都不需要,写好提示词加结构化输出就够,多一层就多一个故障点

什么情况下上面的判断不适用?如果你的问题本身不稳定、同一句话每次期望的答案都不一样,那先别谈分层,先把需求收敛成可验收的标准,否则无论加哪一层都是在流沙上盖楼。

先花半天验证,别直接开工

下面这三步总共花不到一天,但能挡掉大半返工。核心思路是:先用最小成本确认问题到底出在哪一层,再决定要不要动工。

  1. 直接问模型拿 20 到 30 条真实问题直接抛给模型,看它错在哪、错得有没有规律。错在知识缺失才轮到 RAG,错在格式或语气是提示词的事
  2. 手工喂原文把正确答案所在的原文段落手动贴进提示词再问一遍。贴了就对、不贴就错,说明问题确实在检索这一环,这就是 RAG 要解决的
  3. 数一下步数判断这类问题要不要多步:需要先查再算再比对的才考虑加调度循环,单步能答完的别硬上 Agent

各层常见翻车点,别把账算错

最常见的浪费,是在错误的层上反复加预算。判断口径只有一条:先定位错在哪一层,再改那一层,跨层乱试是这类项目最费钱的做法。

现象大概率在哪一层别做什么
答得很流畅但事实是错的检索没召回到,属于 RAG先别改提示词,去看切分和召回
资料明明在里面,回答反而变差上下文塞太多被稀释,属于 RAG别急着换更贵的模型
反复重试、循环停不下来调度层,属于 Agent换模型通常解决不了
格式忽好忽坏提示词与输出约束跟 RAG、Agent 关系不大

落地时要盯的几件事

确认要做之后,先把「刹车」装好再谈效果。没有上限的系统,出问题的时候你连从哪查都不知道。

  • 给每一步设上限:检索条数、循环轮次、单次超时、整体超时,都要有明确数字,别全用默认值
  • 把每次请求的输入输出、命中的资料片段、工具调用记录都落到日志,出问题能复盘
  • 降级顺序想好:检索失败就退回纯模型回答并标注,工具失败就转人工,别让整条链路一起挂
  • 上线前用同一批问题跑一遍基线,改一次配置再跑一遍,前后对比才算验证

涉及具体单价、模型清单这类会变的数字,别抄别人文章里的,去站内 官方 API 价格(/official-api) 和 嵌入模型(/embeddings) 页面核对当时的口径,再算自己的成本。

下一步把上面三步验证做完,再决定要不要动手;然后到站内对照各家官方与中转口径,把成本也算进去,结论才完整

常见问题

学了 RAG 还需要学 Agent 吗?

看你要解决的问题。只做资料问答,RAG 够用,Agent 会白白增加复杂度和失败面。但只要出现「需要先查再算」「要根据中间结果决定下一步」「要调外部系统」这类需求,就绕不开调度那一层。建议顺序是先做通 RAG,再把它当作 Agent 的一个工具接进去,而不是同时上。

Agent 是不是比 RAG 更高级?

不是升级关系,是两件事。RAG 解决的是「模型不知道你的资料」,Agent 解决的是「模型只能被动回答、不能主动做事」。一个 Agent 内部完全可以包含 RAG;反过来,只调接口不做检索的 Agent 也很常见。判断标准永远是你的问题缺的是知识还是动作。

小团队怎么起步最不容易翻车?

先做一个只覆盖单一场景的最小版本:一批整理好的文档、几十条真实问题、人工看过一遍的答案。跑通之后再考虑加工具、加循环。别一上来就上多 Agent 或复杂编排,问题会散落在好几个环节里,定位成本远高于收益。

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