什么时候该微调,什么时候不该
微调听起来像是让模型"学会"你的业务的正道,但它往往不是第一选择。这一课对比提示词、RAG 和微调各自能改变什么、要花多少代价,给出一个判断的顺序。
- 约 25 分钟
- 难度:进阶
- 实测:2026-09-15 结论引用本课程前面模块的实验结果
很多人第一次想做自己的 AI 应用时,第一个念头是:"我要用公司的资料微调一个模型。"
这个念头往往是错的。这一课讲清楚微调能做什么、不能做什么,以及在动手之前应该先试什么。后面几课会亲手做微调,但你应该带着"是否真的需要"的判断去学。
三种办法各改变什么
到这里,你已经学过三种让模型更适合自己需求的办法:
改变的是 代价 改起来
提示词 这一次对话的指令 几乎为零,但每次都占词元 改一行字,马上生效
RAG 模型能看到的资料 要建检索系统,要维护 更新文档,马上生效
微调 模型本身的参数 要准备数据、训练、评估 重新训练,重新部署
它们解决的问题不一样:
- 提示词告诉模型"这次要怎么做"。第 02 模块用它控制了输出格式、语气、步骤。
- RAG 告诉模型"这里有你需要的资料"。第 04 模块的答疑助手,就是靠它回答 httpx 文档里的问题,而且能给出引用。
- 微调改变模型"平时的习惯"。它不需要每次都提醒,因为已经刻进了参数里。
一个常见的误解:用微调灌知识
"把公司文档拿去微调,模型就知道了",这是最常见的误解。
微调确实能让模型记住一些内容,但它是一个很差的知识库:
- 记不准。模型会把学到的内容和原有的知识混在一起,照样编造细节。你没法知道它的回答来自你的文档,还是来自它自己的想象。
- 没有出处。RAG 可以告诉你答案来自哪份文档的哪一段(第 04 模块第 5 课),微调做不到。
- 更新麻烦。文档改了一个字,RAG 只要重新建一下索引;微调要重新训练、重新评估、重新部署。
- 会有副作用。第 3 课会亲眼看到:只是教模型换一个自我介绍,它回答普通问题的方式也变了,还多了一个原来没有的错误。
所以,需要模型"知道"某些资料时,先用 RAG。
微调适合做什么
微调擅长的是改变行为,特别是那些很难用几句提示词说清楚、或者每次都说太浪费的行为:
- 稳定的格式和风格。比如总是按公司的格式写报告,总是用某种语气。第 2 课在小 GPT 上用 LoRA 微调,它就从"什么诗都写"变成了几乎只写五言绝句,而它写诗的"水平"(损失)几乎没变,变的是习惯。
- 特定的任务。比如把用户的话分成固定的几十个类别,或者从合同里抽取固定的字段。有几千条标注好的例子时,微调一个小模型,常常能做得和大模型差不多好,而且便宜、快得多。
- 把大模型的能力"蒸馏"到小模型上。用大模型生成大量高质量的回答,拿去微调一个小模型,让它在这类任务上接近大模型的水平。推理的成本可以降很多。
- 缩短提示词。如果每次请求都要带一大段固定的指令和例子,微调之后可以省掉它们,减少每次的词元和延迟。
判断的顺序
1. 先把提示词写好(第 02 模块),并准备评估集(第 06 模块)
↓ 效果还是不够?
2. 是缺资料吗?→ 用 RAG(第 04 模块)
↓ 不缺资料,是行为、格式、风格不稳定?
3. 在提示词里加几个例子(少样本)
↓ 还不行,或者例子太长、太贵?
4. 考虑微调。先准备几百到几千条高质量的数据
几点说明:
评估集是前提。没有评估集,你没法知道微调是让模型变好了还是变坏了。第 3 课的实验里,只看几个例子,就能发现一个原来答对、微调后答错的问题;没有系统的评估,这类问题会悄悄溜进产品里。
数据是最大的成本。训练本身很便宜,第 3 课在 CPU 上只用了十几秒。难的是准备几百上千条质量好、覆盖全面的数据。数据里的错误和偏差,模型会原样学去。
模型会更新。你今天花一个月微调了一个模型,三个月后新出的通用模型,可能不微调就比它好。提示词和 RAG 可以直接搬到新模型上,微调要从头再来一次。
先问服务商。截至 2026 年 9 月,有些 API 服务商提供在线的微调服务,有些没有,价格和支持的模型也常变。自己部署开源模型再微调,就要考虑第 4、5 课讲的运行成本。
回头看 RepoBot 的选择
这门课第一部分做的 RepoBot,每一个需求其实都在做这个判断,而且一次都没有用到微调:
- 要它回答 httpx 文档里的问题:缺的是资料,所以第 04 模块加了 RAG。文档更新了,重新建一下索引就行,回答还能带上出处。
- 要它先查源码再回答:这是多步操作的行为,用提示词加工具就能做到,所以第 05 模块做成了智能体。
- 要它拦下不相关或恶意的问题:第 06 模块用一个写好的分类提示词加评估集来做护栏,而不是专门训练一个分类模型。先用提示词做到"够用",有了评估集证明它的准确率,再决定值不值得花力气训练。
第 3 课会给 RepoBot 做一次微调,改的只是它的自我介绍。那是为了演示微调怎么做、会有什么副作用,而不是因为 RepoBot 真的需要它。
如果确实要微调
大部分情况下,你不需要训练模型的全部参数。第 2 课会讲 LoRA:冻结原来的参数,只训练一小部分新加的参数。在我们的实验里,小 GPT 只训练了 1.5% 的参数,Qwen2.5-0.5B 只训练了 0.22%,就达到了目的。它省显存、训练快,存下来的文件也小,是目前最常用的微调方法。
练习
- 回想第 03~06 模块的 RepoBot。下面这些需求,你会用提示词、RAG 还是微调来实现?为什么?
- 让它回答 httpx 新版本的新功能。
- 让它每个回答都以"来源:"结尾,列出引用的文档。
- 让它把用户的问题分成"安装""用法""报错""其他"四类,每天要处理十万条。
- 找一个你想用 AI 解决的实际问题,按本课"判断的顺序"走一遍,写下每一步的结论。
自测
1. 为什么不建议用微调让模型"记住"公司的文档?
微调后的模型记不准,会把学到的内容和原有知识混在一起继续编造;回答没有出处,没法核对;文档一更新就要重新训练;还可能带来副作用。需要模型使用资料时,RAG 更合适。
2. 微调最适合解决哪类问题?
改变模型的行为:稳定的格式和风格、有大量标注数据的特定任务、把大模型的能力蒸馏到便宜的小模型上、省掉每次都要带的长提示词。
3. 在决定微调之前,为什么一定要先有评估集?
没有评估集,就无法判断微调是否真的带来了提升,也发现不了微调带来的副作用,比如原来答对的问题现在答错了。评估集也是比较提示词、RAG 和微调几种方案的共同标准。