ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

RAG与模型微调怎么选?从核心差异、幻觉控制到落地成本一次讲清

RAG与模型微调怎么选?从核心差异、幻觉控制到落地成本一次讲清

别人问我“RAG 和模型微调到底有什么区别”时,我一般不会直接甩定义,而是先反问一句:你想让模型“学会”东西,还是想让模型“查到”东西?这个问题的答案,基本就决定了你该走哪条路。

我做过不少企业知识库的项目,最常被问到的一个选择就是:同样是想让大模型懂业务、答得准,我到底是做微调,还是上 RAG?这两种方案价格差不少,实施周期也差不少,选错了轻则浪费几个星期,重则上线后被业务方追着问“为什么还是答不对”。这篇就以我自己的项目经验,把 RAG 和模型微调的差异、适用场景、取舍逻辑讲透,适合正在做大模型应用、准备做知识库问答,或者刚接触大模型落地的人。

1. RAG 与模型微调的本质定位差异

很多人把 RAG 和微调放在一起比较,觉得它们都是“让模型更懂我的业务”。方向没错,但机制上完全不同。理解机制差异,是后面所有决策的基础。

1.1 微调是“改变模型本身”,RAG 是“给模型加外挂”

模型微调的本质,是通过在特定数据集上继续训练,修改模型内部的权重参数。你用一批“问题-答句式”的数据喂进去,模型学到的不是某段文字,而是问和答之间的分布规律。微调之后,模型在行为风格、输出格式、特定任务的遵循能力上会有明显变化,它本身的“知识底子”也被局部强化或改变了。

RAG 则完全不动模型参数。它是在推理阶段先做一个检索步骤:根据用户问题,从外部知识库(向量库里存的文档切片)中找到最相关的片段,插进 Prompt 上下文里,把“资料”递到模型面前,让模型基于这些资料生成回答。模型还是那个模型,但每次回答前都先“翻资料”。

用生活化类比来说:微调像是把新员工送去封闭培训,把他脑子里的知识结构改一遍,让他以后遇到相关问题,天然知道该怎么答;RAG 则是给员工配了一个资料柜,他每次回答问题前都要去柜子里翻一下相关文件,照着文件内容给你回复。前者改变的是人本身,后者改变的是工作方式。

1.2 知识更新速度:微调要重新训练,RAG 换资料就行

这一点在实际项目里影响极大。微调完成之后,如果业务资料更新了、政策调整了,你需要重新准备数据集、重新跑训练、重新做评估,整个流程通常以天甚至周为单位。而 RAG 的更新,本质上是把新的文档切片、向量化、写入向量库。这个过程可以做到分钟级甚至准实时,只要资料准备好了,当天就能让模型回答出新政策的内容。

我做过一个制造业的售后服务项目,售后手册每个月都有版本更新。如果用微调,相当于每个月都要重来一轮训练、评估、发布流程,人力成本扛不住。后来转成 RAG 方案,运营部门直接把新手册丢进知识库,系统自动跑一遍切片和向量化,第二天问答结果就是基于新版本的。这种场景下,RAG 的更新成本优势是压倒性的。

1.3 幻觉控制:RAG 天然有“依据”,微调只能靠“记忆”

企业做问答最怕什么?怕模型一本正经地编造答案。从幻觉控制角度看,两者逻辑完全不同。RAG 的生成过程带着检索到的上下文,模型输出会被资料片段约束,就算它想编,也得先对着资料编,出错的模式大多是“理解偏了”而不是“凭空造了”。更关键的是,RAG 有可解释性——你可以告诉用户答案来自哪份文档、哪一段,方便做引用溯源。

微调则完全不同。微调后模型回答问题,靠的是参数里存下来的规律。遇到未见过的数据、或者训练数据没覆盖到的边缘情形,模型大概率会用自己的“通用知识”去补全,这就会产生幻觉。我见过一个法律咨询项目,微调后的模型在回答常见问题时表现很好,但只要涉及新出的司法解释,模型没学过,就开始一本正经地引用不存在的条款。这就是纯微调的固有风险:模型以为自己会,其实不会。

2. 核心差异拆解:数据、成本与效果

机制差异讲完了,落到实际选型,大家最关心的还是数据要求、投入成本和最终效果。这三块我用表格和实测案例来拆。

2.1 数据要求完全不同

微调的数据是“标答数据”。典型形式是成对的“用户问题-理想回答”。你要准备几百到上千条高质量样本,每条回取得专业、准确、风格统一,最好还覆盖边界情况和坏案例。数据质量差的话,模型学到的是错误答案的分布,越练越偏。准备微调数据的时间成本,往往比训练本身的算力成本高得多。

RAG 的数据是“参考资料”。你要做的是把业务文档(Word、PDF、Markdown、网页等)清洗、切片、向量化。不需要构造问答对,只需要保证文档内容准确、切片粒度合理。相对微调,数据准备门槛低了不少。当然,切片好坏直接影响检索质量,里面有很多细节,我在后面实操部分展开。

两类数据可以这样对比:

维度模型微调RAG
数据形式问题-答案标注样本业务文档切片
数据量要求通常几百条起,质量优先取决于知识覆盖范围,可多可少
更新方式重新训练重新切片入库
构建成本高(依赖人工标注)中(依赖文档处理)
数据质量风险错答被模型记住差切片导致检索不到

2.2 效果差异:风格改变 vs 知识问答

我自己的项目体会是:微调在“改变行为模式”上效果突出,RAG 在“回答具体事实”上更可靠。

如果你的诉求是让模型用特定口吻说话、按特定格式输出、在某个任务上遵循特定流程,那微调是正解。例如把一个通用模型微调成客服话务风格,或者让模型每次回答都先给结论再给分析,这种“行为习惯”层面的调整,RAG 做不到——因为底层模型能力没变,你塞再多资料它还是按原来的方式说话。

如果你的诉求是让模型回答企业内部的、经常变动的、有明确来源的事实类问题,那 RAG 效果更好。比如员工问“报销标准是多少”“某设备故障代码含义是什么”,这种问题答案就在文档里,RAG 检索到对应段落,生成的回答既准又稳,还能附上出处。

我做过一个真实对比测试,用的是同一个开源底座模型,分别做了微调版本和 RAG 版本,用同一组真实用户问题打分。事实类问题(“XX型号产品的质保期是多久”),RAG 版本的准确率明显高于微调版本;而风格类问题(“请用一句话介绍这个产品,语气不要太官方”),微调版本的输出更符合预期。两者的优势区间非常清楚。

2.3 成本对比:训练成本、推理成本与维护成本

很多团队只盯着训练成本,忽略运维成本,导致项目后期陷入被动。我把三类成本拆开讲:

  • 训练成本:微调需要准备训练环境,租用或自建 GPU 资源。哪怕做 LoRA 这类参数高效微调,也要经过训练、验证、实验迭代,一轮完整流程的算力开销和时间成本都不小。RAG 几乎不需要训练,主要成本在向量化(这个很便宜)、向量库存储(取决于文档量)和检索服务的开发上。
  • 推理成本:微调后的模型在推理时和普通模型一样,Prompt 短,输入 token 消耗低。RAG 每次请求都要把检索到的文档片段塞进 Prompt,输入 token 数会增加。文档多、切块长的话,token 开销会明显上涨。这是 RAG 隐藏的成本,预算时要提前算进去。
  • 维护成本:微调重新训练周期长,遇到资料变动就得整体重来;RAG 只需要维护知识库文档的新增、更新和清理。从长期看,RAG 的维护成本明显更低。

从综合成本看,微调适合那种需求稳定、频率高、风格要求明确的任务;RAG 适合知识更新频繁、事实类问题为主、需要引用的场景。两者不是替代关系,更多是分工关系。

3. 选型判断方法:用决策框架代替拍脑袋

光知道区别还不够,很多团队是“半懂不懂选了微调,做一半发现不行”,再切 RAG 又浪费了前面的时间。我自己沉淀了一套判断逻辑,项目启动时先走一遍,基本能避开大坑。

3.1 四个问题帮你判断

拿到项目需求,先别急着讨论技术方案,先去问业务方四个问题:

  • 答案内容是不是经常变?如果手册、规则、产品信息一个月内会变几次,优先 RAG;如果半年甚至一年都不太变,微调也能接受。
  • 回答是否需要引用出处?业务方要是明确说“回答得告诉我依据是什么”,那基本只能选 RAG,微调给不了可靠的引用。
  • 是否要模型改变说话风格或操作流程?比如做一个特定角色的 AI 助手,要求说话方式高度定制,微调更合适;RAG 可以借助 Prompt 做轻度风格控制,但深度定制不如微调。
  • 已有的数据是什么形式?有大量标注好的问答对,微调可以直接开跑;只有一篇篇的文档资料,那 RAG 的启动成本更低。

这四个问题不是孤立看的,要综合起来判断。比如某知识库不仅更新频繁,还要求给出来源,那答案就很明确:RAG。再比如某 AI 写作助手,只要把文风改成小说风格,资料更新不频繁,那微调更合适。

3.2 混合方案:先微调再 RAG 是常见实战做法

实际项目里,最稳的方案往往不是二选一,而是两者叠加。我现在的习惯做法是:用微调解决“模型懂不懂规矩”的问题,再用 RAG 解决“模型知不知道新知识”的问题。

举个例子:做一个企业内部助手,我先把底座模型做了轻量微调,让模型熟悉企业的术语体系、语气风格、回答格式(比如先结论后解释、用列表组织要点)。微调之后,模型像一个“懂企业规矩”的接待员,但它脑子里还没有最新的业务数据。然后我再接上 RAG,每次用户提问时先检索企业知识库,把相关文档片段放入上下文。底层模型负责组织语言、按风格输出;检索系统负责给信息。两个环节各司其职,效果实测比单独用任何一个都要好。

这种方案的成本会高一些,因为既要做一次微调,又要搭检索链路。但换来的是回答的专业度和可控度的双重提升。对生产级项目来说,这个投入是值得的。

3.3 最小验证:先花三天跑一个实验

如果实在判断不了,不要纠结理论,直接做一个最小实验。我常用的方法是:选 10 到 20 条最有代表性的真实用户问题,分别走两条路——一条是接好知识库的 RAG 流程,另一条是拿少量标注数据快速微调一个版本——然后把两部分回答放在一起人工对比,重点关注准确率、格式、引用完整性三项。这个实验三到五天就能出结论,比盲猜一个月要划算得多。

我踩过的一次坑就是:某项目侧重点在“回答风格统一”,却选了 RAG,结果业务方觉得回答“太散、没调性”;后来补做了轻量微调,核心痛点才解决。反过来,另一项目想快速上线知识问答,却选了全量微调,数据准备耗时不说,模型还越学越偏,最后不得不回退到 RAG 方案。这两种方案我都有过实际的教训。

4. 实操细节与常见问题排查

确定方向后,执行过程也有很多细节。我把自己在两类项目里积累的实操要点整理出来,重点是那些文档里不写、但实操中一定会遇到的坑。

4.1 RAG 实操的关键:切片、Embedding、召回测试

RAG 效果好不好,很多时候不是模型的问题,而是检索链路的问题。我在实操中最常遇到的三个环节是:

  • 切片粒度。切片太短,语义不完整,检索出来的片段经常半截话;切片太长,模糊内容过多,模型容易被无关信息带偏。我通常按章节标题做结构化切片,先按文档结构切,再对长段落按固定长度二次切,交叉位置保留少量重叠,避免切断关键语义。这是基础配置,却直接影响问答效果。
  • Embedding 模型选型。通用领域的 Embedding 模型处理专业术语时,召回率会明显下滑。如果预算允许,可以采用领域微调的 Embedding 模型,或者考虑用相对更大的通用 Embedding 模型做候选召回,再用重排序模型精排。后者在真实项目里效果提升很显著,但会多一层开发工作。
  • 召回测试。很多人只测“最终回答对不对”,其实应该单独测检索召回。我习惯的做法是:把测试问题跑一遍检索,只看 Top-K 的片段里有没有包含正确答案。如果检索阶段就没召回到正确片段,那不管模型多强,生成的回答都不会对。这个排查步骤能快速定位问题到底出在检索还是生成环节。

另外,RAG 的 Prompt 也要讲究。给模型的 Prompt 里要明确说明“请基于提供的资料回答,资料中没有的信息不要编造”。同时,要把检索到的片段按相关性先后排列,避免模型被最后一段无关内容干扰。实测下来,这些 Prompt 层面的细节对回答稳定性的影响很大。

4.2 微调实操的关键:数据清洗、避免遗忘、评估集设计

微调的坑主要集中在数据层和评估层:

  • 数据清洗是重中之重。微调数据不是“差不多能用”就行。数据里有错别字、格式不一致、答案过于详细或太简略,模型都会学到偏差。我通常会在训练前做一轮人工审查,重点看:回答是否真的正确、是否与业务口径一致、有没有低质量回复混进去。答案顺序、长度、用词也要尽量统一,否则模型学到的是“忽长忽短”的风格。
  • 遗忘问题。微调之后,模型可能丢掉部分通用能力。这是经典的“灾难性遗忘”问题——太专注于任务数据,忘记了本来会做的事。规避手段包括:混入一定比例通用数据;用 LoRA 这类低秩适配技术,冻结原模型大部分参数,只训练少量新参数;微调后跑一遍通用能力测试,确保基础能力没崩。
  • 评估集设计。评估集绝不能和训练集高度重合,否则测出来的效果虚高。我一般会专门留出一批“训练时没见过”的刁钻问题放进评估集,比如:问法绕弯的、答案在文档边角料里的、包含同义词替代的。只有这种评估集跑出来的通过率,才能反映真实上线表现。

4.3 使用中常见的选型错误与快速排障

结合我自己和其他开发者的实操反馈,我整理了一份速查表,重点关注选型错误和上线后的问题排查:

症状可能原因排查思路
RAG 回答总是引用错误文档切片有误或召回排序不准先单独测检索 Top-K,检查切片内容是否覆盖答案
RAG 回答像“复读机”,不综合回答片段太碎,模型只盯着单段增加切片长度或添加文档级摘要
微调后通用能力明显变差灾难性遗忘混入通用数据重训,或改用 LoRA
微调后风格对了但事实错误训练数据里本身有错重点审查训练数据中的事实错误,辅以 RAG 兜底
两个方案都上了,回答还是不行混合方式没配合好检查微调后模型是否过度自信,建议在 Prompt 中优先遵循检索资料

上线阶段,我自己还常做一轮“回归测试”:把已解决的历史问题整理成测试集,每次知识库更新或模型迭代后都跑一遍,防止旧问题复现。这比只看新问题靠谱很多,也是项目长期稳定运行的一个保障。

5. 个人实操体会

做了几个项目下来,我对 RAG 和微调的关系有了更深的体会:两者不是“谁替代谁”,而是“不同位置上的螺丝钉”。模型微调管的是模型的“行为习惯”和“表达方式”,RAG 管的是“知识来源”和“时效性”。做企业级应用时,我的默认方案是“轻量微调 + RAG 检索”,先让模型表现出来的风格符合业务预期,再让它基于知识库回答问题。

如果你还在犹豫怎么选,我的建议是先不要纠结理论学习,找两三条最核心的场景问题,分别拿两个方案快速跑一跑,看效果再定方向。按我的经验,跑完一轮小实验,判断会变得非常清楚。哪些场景微调更好,哪些场景 RAG 更稳,心里有底之后再投入资源做完整方案,项目推进会顺畅得多。实际做决定时,一定要结合更新频率、引用要求、风格要求这三个关键维度来评估,而不是抄别人的方案。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进