微调、RAG、提示词工程怎么选?一把尺子讲清
模型总答不对,会议室里分成三派:"写好提示词就行""上 RAG""微调一下"。到底听谁的?先把多数对比文章不肯直说的话说清楚:这三派通常都对了一部分,因为它们修的是不同的东西。提示词工程、RAG、微调不是同一个问题的三个竞争方案,而是三层逐级加码的台阶。选对的关键不在背功能对比表,而在回答一个问题:你要改的是模型知道什么,还是模型怎么表现?
这篇文章给你这把尺子、一个三问快筛,以及流行说法靠不住的几种情况。
升级阶梯:便宜的那层先试
把适配一个大模型想成带一个新员工上手,四层台阶一目了然。
提示词工程是岗位说明书。你把指令写清楚:语气、格式、约束。一个能力合格的员工第一天就能照做。成本约等于零,因为你只是在改文字。说明书管用,这事就完了,不用往下看任何厂商页面。
少样本示例(few-shot)是给他看两个做好的样例。你在提示词里贴两三个输入输出对,模型照着样子模仿。还是便宜,还是随时能撤。Meta 自己的指导写得很直白:任何微调之前先做少样本实验,它甚至能预判微调能带来多少提升。
RAG 是给他配一个资料库。模型回答问题时先查文档,而不是凭记忆。知识从此可以每天更新,答案还能标出处。成本从这一层开始(向量数据库、入库管道),详细机制我们写过一篇 RAG 全解,要动手的可以过去读。
微调是送他去做正式培训。模型的权重被你精心准备的样本永久地重塑。效果最强,成本最高,周期最长,而且最不可逆。
(还有一条常被忘掉的岔路:长上下文窗口,把材料全部直接贴进去。单份长文档这么干没问题,但按 token 计费,而且再大的窗口也装不下百万份文档的库。)
我自己在帮团队做选型时的规矩是:便宜的那层没榨干,不付下一层的钱。不是因为贵不好,而是跳层之后你根本说不清贵的那层有没有起作用。第一天就直接微调的团队,手里没有任何基线可对比。我见过有团队跳过前两层直接开训,结果一段提示词就能修好的输出格式问题,被一轮训练"教会"了——白忙一场。
一把尺子:改行为,还是补知识
Databricks 把核心取舍讲得很干净:RAG 是推理时注入知识,微调是部署前把专长烤进权重。落到选型上,这个区分准得出奇:
- 知识问题(模型不知道你的产品手册、这个季度的政策、你们的合同)指向 RAG。IBM 说得明确:微调通常无法注入新知识,而且微调后的知识冻结在训练那一刻。新季度新法规?要么重训,要么……更新一下检索索引就行。
- 行为问题(语气不对、格式不对、术语不专业、边缘情况不听话)指向 微调。你在教一种风格或一门手艺,不是在补一条事实。
提示词工程垫在两者底下:它是任一方向的廉价第一次尝试。IBM 的指南里有句话值得钉在墙上:再多的训练和再多的数据接入,都补偿不了糟糕的提示词。指令写得含糊,修它只要一个下午;跳过这一步,你永远不知道 RAG 和微调到底是不是真有必要。
提示词工程:天花板在哪
怎么判断提示词这条路走到头了?三个信号:
- 缺的是事实,不是指令。无论怎么措辞,都不可能让它"知道"你的私有文档,这是知识缺口,再多形容词也补不上。
- 格式稳不下来。你要每次都是严格 JSON,它十次里有九次照做、一次自由发挥。指令能帮你走到 90%,但让行为在高负载下依然稳定是微调的主场。
- 示例多到提示词装不下。当你贴了十几个少样本、模型开始忽略其中一半(Meta 特别点名了这个现象),你就已经超出了提示词的承载力——而且有意思的是,这恰恰是 RAG 登场的时刻:按问题检索相关示例,本来就是检索的另一种说法。
RAG:补知识的赛道
诊断是缺知识,标准答案就是 RAG:把模型接上你的文档,提问时检索,带引用回答。机制值得单独一篇讲,我们已经写了,这里只说跟决策有关的部分:事实常变、答案要标出处、私有数据要留在可管权限可审计的一层里,这三样是 RAG 的主场。
什么时候 RAG 不是答案?当你的抱怨是"它答得对,但说话的方式/格式/耐心不对"。检索教不会模型你们的行文风格。那是行为问题,阶梯告诉你行为归哪层。
还有一点要如实说:把两者混着用、让微调过的模型更会利用检索到的资料,是被验证过的模式,Meta 在用例清单里明确列了"微调模型以更好地使用检索器给出的上下文"。赛道帮你起步,但赛道不是墙。
微调:改行为的赛道
大模型微调是在预训练模型上继续训练:用标注好的输入输出对演示你要的行为,永久更新它的权重。这是监督学习,你的数据质量就是效果上限。Databricks 把数据准备称为整个流程最关键的一步,因为坏样本不会安静地失效——它会把错误直接写进参数。
下手之前值得知道三件事:
成本的账已经变了。全量微调更新所有参数,要正经的 GPU 阵容。参数高效方法(代表是 LoRA 低秩适应,只训练一小撮新增权重)社区基准给出口径:不到 1% 的可训练参数,能拿到全量微调 90% 以上的效果。以前是数据中心项目,现在一张强力单卡就能开工。
需要的数据比你想的少——有时候。Meta 团队报过数字:ChatGPT 在 Reddit 评论情感分析上的准确率从 48% 提到 73%,只用了一百个样本;一个 Phi-2 模型做金融情感分析从 34% 提到 85%。他们的经验法则:基线准确率低于 50% 时,几百个样本常带来大幅提升;基线高了,回报变平,功夫要花在数据质量上。
它会忘事。社区管这叫灾难性遗忘:在某个领域猛训一通的模型,可能把原本会的通用本事练丢。另外有个违反直觉的隐私问题:微调是把数据烤进权重,而权重里的东西能被部分提取出来——受监管行业请注意,Databricks 的口径是把敏感文档放在有权限控制的检索层(也就是 RAG)才是更好治理的设计,不是更差。
三问快筛
Meta 的完整框架有八个问题。实际用起来,三个就能干大部分的活:
| 先问什么 | 答案 | 去哪层 |
|---|---|---|
| 坏的是什么:事实还是行为? | 事实/时效/要引用 | RAG(提示词先行) |
| 语气/格式/稳定性 | 微调(提示词+少样本先行) | |
| 手里有多少标注数据? | 不到几百对 | 提示词+RAG;微调大概率饿死 |
| 几百对以上、任务稳定 | 微调开始可行 | |
| 知识多久变一次? | 每天/每周 | RAG,重训永远在追移动靶 |
| 很少变 | 都行;微调的稳定性开始值钱 |
如果你只从这篇文章带走一个习惯,带第一行:选技术之前,先用一句话说清抱怨——"它不知道 X"还是"它表现得不对"。这句话会替你选好赛道。
组合拳:两边都值才一起上
Meta 和 Databricks 在这点上口径一致:生产环境里,混合方案常常优于单用任何一个。经典管线拿医疗助手举例:先用医学文献微调,让它说行话;再叠 RAG,让它检索最新的诊疗指南。行为来自权重,知识来自索引,引用来自检索。
但账也要算清楚:两套系统意味着两倍的管道、评测和故障面。给工程时间有限的团队的排序建议:提示词和少样本用到吱呀作响,剩下的知识缺口交给 RAG,等量出来的行为缺口熬过了前两层,再上微调。"混合最优"是真的,它也是项目维护费悄悄翻倍的经典路径——两边各自挣到饭钱才组合,别因为架构图上画着就组合。
常见问题快答
微调和 RAG 哪个好? 微调和RAG的区别一句话:RAG 管知识(新鲜、可引用、私有),微调管行为(语气、格式、稳定性)。流行的"先 RAG 不行再微调"是不错的默认顺序,但如 Meta 所说太简化,RAG和微调的区别更多是分工而非替代——最强的生产系统常常两个都在跑。
微调之后还需要 RAG 吗? 通常需要,只要你的事实会变。微调不能可靠地注入新知识,它的知识冻结在训练时刻;检索让答案保持最新、可溯源。
LoRA微调一句话是什么? 参数高效微调方法:只训练一小撮新增权重而不是全部参数,大约千分之一到百分之一 trainable 参数,拿到典型任务 90% 以上的收益。
微调需要多少数据? 基线弱的时候比想象中少——Meta 报过 100 个样本提升 25 个百分点;几百对是合理起点。比数量更重要的:样本要反映生产环境的真实流量长什么样。
微调对私有数据更安全吗? 违反直觉,恰恰相反。微调把数据烤进权重,权重内容可能被提取出来;RAG 把文档留在你能控制和审计的权限层里。受监管行业一般更偏好检索方案。
下次会议室再分成三派,先问那个藏在争论底下的问题:输出到底哪里不对?说出问题,阶梯——提示词、示例、检索、训练——会告诉你该站在哪一级。从低处开始,量着走,数据说话了再往上爬。