跳到正文

RAG 为何比 SFT 更优?

知识更新、事实准确性、推理能力三方面对比

原题:为何要引入检索增强生成(RAG)方法?在哪些具体场景下,RAG相比仅使用监督微调(SFT)的大模型具有更优的表现?请结合知识更新、事实准确性和推理能力进行说明。

模型微调 · 美团真题

回答与解析

为何引入RAG

核心动机:弥补纯参数化知识的三大缺陷

问题 说明
知识截止 模型权重冻结后无法感知新信息
幻觉风险 参数记忆模糊时"自信编造"
训练成本 SFT更新知识需重训,代价高昂

RAG将知识外置到可动态更新的检索库,实现非参数化知识扩展


RAG vs SFT:三维度对比

1. 知识更新

  • SFT:需重新训练/LoRA微调,周期长,难以追平实时信息
  • RAG:更新文档库即可,分钟级生效,适合新闻、股价、政策等动态场景

2. 事实准确性

  • SFT:依赖训练数据覆盖,长尾事实易遗漏或混淆
  • RAG:检索结果作为上下文约束生成,可溯源验证,降低幻觉

3. 推理能力

  • SFT:复杂推理需内化到参数,需大量高质量标注数据
  • RAG:检索提供中间证据(如多跳推理的桥梁文档),降低推理难度

RAG更优的具体场景

  • 实时信息查询:天气、股价、赛事结果
  • 专业/垂直领域:医疗指南、法律条文、企业内部知识(数据隐私+快速迭代)
  • 长尾事实问答:冷门实体、最新产品规格
  • 需可溯源的场景:客服回复、金融咨询(必须给出参考来源)

关键认知

RAG不是SFT的替代,而是互补:SFT负责语言能力和基础推理,RAG负责动态知识注入。复杂推理任务仍需SFT强化,纯RAG对检索质量极度敏感,需配套重排序、查询改写等优化。

学习建议

掌握排序模型基本架构,学习权重初始化常用方法,结合实际业务理解A/B测试与线上反馈机制。

口语版讲法(约4分钟)

  • 本质是参数化知识局限性
  • 边界划分:RAG适合动态、长尾、需溯源场景
  • 具体场景举例:客服退款政策
  • 落地风险:检索质量是关键
  • 延伸可延伸点:Self-RAG

这道题其实问的是大模型落地时的一个核心矛盾:到底该把知识塞进模型参数里,还是挂在外面随时查。本质上,纯参数化的大模型有三个硬伤:知识有截止日期,容易自信地胡说八道,而且更新一次成本太高。所以引入RAG,就是把知识外挂到可动态更新的检索库,让模型在生成时实时查资料,说白了就是给模型配了个实时更新的外脑。

但落地的时候,边界很重要。RAG和SFT不是谁替代谁,而是各有各的适用场景。SFT负责训练语言能力和基础推理,比如让模型学会怎么组织句子、怎么多步推理,这些是RAG给不了的。而RAG负责动态知识注入,比如新闻、股价、政策这类实时变化的信息。真正上线的时候,通常都是两者一起上,模型先靠SFT打好底子,遇到需要最新知识的提问,才去触发检索。

我举个例子,比如电商客服场景。用户问‘我昨天买的商品降价了,能退差价吗?’这个问题的答案涉及两个东西:一是退款政策的文本,二是当前促销活动的具体规则。政策文本可能一个月才改一次,但促销规则每周都在变。如果只靠SFT,模型需要重新训练才能知道本周的满减规则,周期长还容易出错。用RAG的话,我只需要把最新的促销文档扔进知识库,模型就能实时检索到‘满200减30’这种信息,再结合它通过SFT学会的退款逻辑,给出准确回答。而且客服场景要求可溯源,RAG能直接引用政策原文,用户和客服都能验证,这点SFT做不到。

不过RAG不是上了就万事大吉,有几个前提必须注意。首先是检索质量,如果召回的内容是错的,那模型再聪明也没用。常见失败场景是,用户问‘订单号12345为什么显示异常’,结果检索出来一堆不相关的日志,模型就可能乱说。所以上线时我会特别关注Rerank和查询改写,比如把‘订单异常’改写成‘订单状态:异常’,提高召回准确率。另外,RAG对长尾事实特别有效,比如问‘某款手机在2024年3月的最新固件版本是多少’,这种冷门信息SFT几乎不可能覆盖,但RAG只要文档库里有就行。

还有一个有意思的延伸,就是怎么让模型自己判断什么时候该查、什么时候不该查。比如简单问候语就没必要走检索,否则浪费算力。现在有Self-RAG这类方案,让模型生成时动态决定是否触发检索,甚至能自我反思检索结果是否可靠。这个方向我觉得是RAG下一步的关键。

所以整体上,我更倾向于把RAG看作一个插件,而不是银弹。它解决的是知识更新和事实准确性这两个痛点,但推理能力还得靠SFT打底。落地的时候,我会先评估业务场景对实时性和可溯源的要求有多高,再决定RAG和SFT的比例。

关键一句:Self-RAG让模型动态决定是否检索,并能自我反思结果可靠性

面试官还可能这样问

  1. 问法 1 · 场景切入

    我看你做过电商客服项目,假设用户问“这个商品现在还有货吗”,如果模型刚训完一周,突然缺货了,模型还按旧知识回答,这不就出事了?你怎么解决这种实时性要求高的场景?

  2. 问法 2 · 层层追问

    大模型的知识更新你一般怎么处理……如果只靠SFT更新权重,遇到冷门实体或者最新政策,模型容易胡编乱造吧?……那有没有办法不重训模型,又能保证事实准确还能随时更新?

  3. 问法 3 · 直球架构

    直接聊RAG和SFT的对比。为什么需要引入RAG?在知识更新、事实准确性、推理能力这三个维度上,什么场景下RAG明显优于纯SFT模型?

同模块相关题目