技术抉择:微调还是 RAG?——以春节祝福生成为例

19 阅读7分钟

这不是“用不用 RAG”,而是“RAG 能不能解决这个问题”

在过去一年里,几乎所有团队在遇到生成效果问题时,都会下意识问一句:

 

“是不是该加个 RAG?”

 

RAG 已经成为一种工程直觉

只要模型答得不好,就怀疑是“没看到资料”。

 

但春节祝福这个场景非常残酷地揭示了一件事:

 

**有些问题,

模型不是“不知道”,

而是“知道了也不该这么说”。**

 

这正是微调和 RAG 分道扬镳的地方。

 

这篇文章,不是要否定 RAG,而是借「码上拜年」这个案例,认真回答一个工程问题:

 

**在强风格、强分寸、强一致性的生成任务中,

微调和 RAG,各自到底解决什么,又解决不了什么?**

 

一、先把任务说清楚:春节祝福到底“难”在哪里

在讨论技术方案之前,必须先明确任务本身的性质。

 

春节祝福这个任务,看起来很轻,但它有几个非常明确的特征:

  • 模型本来就会写祝福

  • 不涉及事实查证

  • 不依赖外部知识库

  • 但用户对“语气是否合适”极其敏感

 

真正的难点在于:

  • 你对谁说

  • 在什么关系下说

  • 用什么风格说

  • 说到什么程度才不越界

 

这不是一个“信息不足”的问题,而是一个表达偏好和默认选择的问题。

 

换句话说:

 

**模型的知识是够的,

但它的“默认说法”不对。**

 

这是后面所有技术选择的前提。

 

二、RAG 天然擅长什么,又天然不擅长什么

要公平讨论,必须先承认:RAG 是一个非常成功、非常重要的工程范式。

 

RAG 擅长解决的问题是:

  • 信息确实存在,但模型不知道

  • 需要引用外部文档

  • 需要“查 → 用 → 解释”

  • 正确性比风格更重要

 

在这些场景里,RAG 的价值非常明确:

 

它改变的是“模型能看到什么”。

 

但春节祝福这种任务,恰恰不在这个集合里。

 

三、把 RAG 硬套进祝福生成,会发生什么

很多团队其实都会尝试一种直觉方案:

 

“我们是不是可以把‘好祝福语’放进知识库,

让模型参考着写?”

 

这听起来合理,但实际效果往往很快暴露问题。

 

1)RAG 解决不了“默认语气”

即使你检索到了一段非常好的祝福语,模型也不会自动学会:

  • 什么时候该轻松

  • 什么时候该克制

  • 什么时候不该玩梗

 

它只会把检索结果,当成可用素材

 

而素材 ≠ 偏好。

 

于是你会看到:

  • 有时像在“拼贴”祝福

  • 有时风格前后不一致

  • 有时突然变回通用模型语气

 

这不是实现问题,而是机制问题。

 

21.png RAG 拼贴式生成示意

 

2)RAG 会放大风格不一致的问题

春节祝福非常强调整体语气的一致性

 

但 RAG 的天然行为是:

  • 多段文本拼接

  • 多来源风格混合

  • TopK 召回本身就可能不一致

 

你会发现一个很常见的现象:

 

前两句很自然,

后一句突然变得像公文。

 

这不是模型“失误”,而是 RAG 的工作方式本来就不保证风格统一。

 

3)RAG 无法定义“什么是更值得被说的”

RAG 能告诉模型:

  • 有哪些内容可以用

 

但它无法告诉模型:

  • 哪些表达更值得被优先选出来

 

而春节祝福恰恰是一个“优先级问题”:

  • 哪些细节值得被提

  • 哪些词更自然

  • 哪些表达更有“人味”

 

这些判断,不存在于任何文档中。

 

四、微调改变的是什么层面的东西

相比之下,微调做的是一件完全不同的事。

 

如果用一句话概括:

 

**RAG 在扩展“可用信息空间”,

微调在重排“表达选择的概率分布”。**

 

在春节祝福这个场景里,微调并没有教模型新知识,而是:

  • 把“合适的表达方式”整体抬高概率

  • 把“套话式、安全但疏离的表达”压低

  • 让某种风格成为默认,而不是偶发

 

这正是强风格生成最需要的能力。

 

22.png RAG vs 微调——作用层面对比

 

五、为什么“风格一致性”是关键分水岭

在强风格生成任务中,有一个指标比“内容对不对”更重要:

 

整体风格是否稳定。

 

春节祝福如果出现以下情况,用户感知会非常强烈:

  • 前后语气不统一

  • 情绪突然跳变

  • 玩笑和正式混杂

 

而风格一致性,正是 RAG 最难保证、却是微调最容易做到的。

 

原因很简单:

  • RAG 是“事后拼接”

  • 微调是“事前塑形”

 

微调是在模型决定怎么说之前,就已经改变了它的倾向。

 

六、从「码上拜年」的选型,看一次真实的工程判断

回到具体案例。

 

在「码上拜年」这个项目中,技术选型并不是“先有微调,再找场景”,而是反过来的:

  • 任务明确是表达型

  • 不需要外部知识

  • 用户输入高度结构化

  • 风格一致性是第一优先级

 

在这样的前提下,RAG 的价值非常有限:

  • 它解决不了默认语气问题

  • 反而可能引入风格噪声

 

而微调的优势则非常集中:

  • 数据可以严格控制风格

  • LoRA 成本低、可快速验证

  • 30 分钟就能看到明显体验差异

 

这不是“微调更高级”,而是更匹配任务本身

 

七、可控性:工程上谁更容易“稳住”

从工程视角看,还有一个非常现实的问题:

 

哪个方案,更容易长期维护?

 

在祝福生成这种场景中:

  • RAG 的可控性来自于“文档质量”

  • 微调的可控性来自于“数据风格一致性”

 

而祝福这种内容:

  • 不存在权威文档

  • 很难定义“标准答案”

 

反而更适合:

  • 用一小批高质量样本

  • 明确告诉模型“什么是我们想要的表达”

 

从长期维护角度看,这比维护一个“祝福语知识库”要简单得多。

 

八、什么时候这个结论会反过来?

必须说清楚的是:这不是一个普适结论

 

如果任务发生变化,比如:

  • 祝福里必须引用最新政策

  • 祝福需要根据企业公告自动生成

  • 内容正确性高于情绪价值

 

那么 RAG 立刻会重新变得有价值。

 

这也是一个很重要的工程判断能力:

 

**不是“我们更擅长用什么技术”,

而是“这个问题,到底缺的是什么”。**

 

九、一个非常实用的判断问题(强烈建议)

在你面对“微调 vs RAG”的选择时,可以问自己一句话:

 

**模型现在的问题,是

“没看到该看的东西”,

还是

“看到之后,还是不知道该怎么说”?**

 

  • 前者 → 优先考虑 RAG

  • 后者 → 微调往往更直接

 

春节祝福这个场景,答案非常明显。

 

在「码上拜年」这样的强风格生成任务中,微调的价值在于快速验证“表达偏好是否真的被模型学会”。像LLaMA-Factory Online这样支持快速 LoRA 微调的平台,更适合用来做这种技术抉择:先跑通、先对比,再决定是否值得进一步投入,而不是一开始就押注复杂架构。

 

总结:技术选择,本质上是对问题的尊重

我用一句话收住全文:

 

**微调还是 RAG,

不是技术信仰之争,

而是你是否真正理解了问题本身。**

 

春节祝福这个案例之所以有价值,正是因为它足够具体,也足够“反直觉”:

  • 模型并不缺知识

  • 系统并不缺信息

  • 缺的是一种稳定、默认、合适的表达方式

 

而微调,恰好擅长解决这一类问题。