RAG 改上下文(信息缺失),微调改权重(行为漂移);两者选择看「是缺信息还是做不好」,混用是大多数失败架构的根源。
唯一重要的区别
检索改变的是上下文。在推理时,模型外部的某个东西找到相关文本并将其放入 prompt 中。权重纹丝不动,事实随最近一次索引刷新而保持更新,而且你能准确指出是哪个文档生成了答案。
微调改变的是权重。它将模型采样的分布朝着你的格式、你的语域、你的任务分解方式、你的标签词汇表方向转移。微调不附带来源,无法在不重新训练的情况下更新,而且对每个请求都统一应用。
所以:如果模型错了是因为缺少信息,那就用检索。如果模型错了是因为做正确的事做得不好,那就用微调。这个领域几乎所有糟糕的结果,都是团队把一个方法用在了另一个方法的问题上。
还有一个实践层面的推论,它比质量论据更能决定真实的架构:两者的更新延迟完全不同。修正检索系统中的一个事实,意味着编辑文档并重新索引,只需几分钟,非工程师也能完成。修正微调模型中的一个事实,意味着整理修正后的数据集、重新训练、重新跑四套评估并重新部署,需要数周且需要当初构建它的团队。如果你需要修正的东西经常变动,这个差距就是整个决策的关键。
错误一:训练来安装知识
推理过程是这样的:我们的文档有 40,000 页,我们在其上微调模型,然后它就会了解我们的产品。实际发生的事情是,模型学到的是你文档的风格——章节标题、节奏、修饰语——然后产出流畅、格式规范、自信满满的错误答案。
机制并不神秘。一个事实在 40,000 页的语料中只出现一次,对梯度信号的贡献微乎其微。而风格规律性出现在每一页,并参与每一个批次的计算。梯度下降是一台频率机器,它学到的是频繁出现的东西。
这种特征很明显且值得学会识别:经过知识驱动的微调后,答案看起来更好看了但准确率没有提升,而且模型变得更愿意回答它应该拒绝的问题。后者比前者更重要。
错误二:用检索来修复行为
镜像错误更加隐蔽。模型产出了正确的内容但格式不对——你需要 JSON 它给的是散文,你需要一行它给的是四段,品牌是美式英语但模型用的是英式英语。直觉反应是增加检索:在上下文中加入风格指南段落、加入范例、加入 schema。
这确实有效——在移动指标的意义上——然后累积成一个在每个请求上都要支付 3,000 token 的系统 prompt。这也很脆弱:埋在长 prompt 中的指令比权重编码的指令可靠性更低,而且每个新的边缘情况都会加入另一句话,与已有的句子形成竞争。
格式是微调真正擅长的东西。如果你的 prompt 里风格部分已经比实际任务描述还长了,那这个部分就是一个还没有写下来的微调数据集。
两篇发表的对比研究值得完整阅读,而不是被压缩成要点。
Ovadia 等人,2023——《Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs》(arXiv 2312.05934)。对比了无监督微调和检索在注入新事实知识方面的表现,报告称检索在所测试的知识密集型任务上领先——包括模型在预训练期间见过的那些事实。
Gekhman 等人,2024——《Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations?》(arXiv 2405.05904)。发现引入新知识的样本拟合得很慢,而且当模型确实拟合它们时,它在其他问题上的幻觉倾向会增加。这是上述"自信满满的错误,而且现在更愿意猜测"症状的最佳解释。
两篇论文都没有说微调没用。两者都说它不是注入知识的正确工具,而这正是本文讨论的分野。
它们可以组合,而且通常应该
成熟的配置是两者并存,各司其职。检索提供事实,微调教模型如何使用检索到的上下文:何时引用、如何说"提供的文档无法回答此问题"、如何调和两条相互矛盾的段落、当检索返回空时应该输出什么。
最后那个行为是一个真正的微调目标,而且是个好目标,因为弃答是一种行为而不是一个事实。训练模型在上下文不足时拒绝回答,这是在教它一种策略,而这正是权重更新善于编码的东西。
那个微调的数据集有一种特定的形态,值得详细说明因为它并不显而易见。每个样本都是一个完整的检索增强 prompt——相同的系统 prompt、相同顺序的检索段落、与你的生产流水线相同的格式——配以你想要的响应。关键的是,它必须包含负面案例:检索返回了无用内容或返回了矛盾段落的 prompt,以及目标响应是拒绝或标记冲突的样本。只包含成功检索的数据集教给模型的是:检索到的上下文总是足够的,而这恰恰相反。
四问选择
在两者之前,值得知道这个问题是否可以通过换一个模型来解决——相同的 prompt 在另一个模型家族上有时可以直接修复格式问题。在相同输入上对比两个模型是一个比构建任何一个系统都更便宜的实验。
Should You Fine-Tune? A Decision Tree
Fine-Tuning for Format vs Fine-Tuning for Knowledge
Building a Fine-Tuning Dataset From Production Logs
For further actions, you may consider blocking this person and/or reporting abuse