跳到正文

RAG/蒸馏/微调怎么选?

检索增强、知识蒸馏、微调策略与推理干预详解

原题:列举并解释当前主流的缓解大语言模型幻觉问题的技术方法,如检索增强、知识蒸馏、微调策略或推理时干预等。

模型微调 · 联通真题

回答与解析

幻觉问题的分类

先区分两类幻觉:

  • 事实性幻觉:模型编造不存在的事实(如错误的人物关系)
  • 忠实性幻觉:输出与输入/上下文不一致(如摘要偏离原文)

缓解方法需针对性选择。


主流技术方法

1. 检索增强(RAG)

核心思路:外接知识库,将生成约束在检索到的证据上

  • 标准流程:查询改写 → 向量检索 → 重排序 → 上下文增强生成
  • 关键优化:多路召回、HyDE(假设文档嵌入)、Self-RAG(反思token)
  • 局限:检索失败时幻觉反而加重,需配合置信度校准

2. 微调策略

  • 事实性SFT:用高质量QA对训练,强化"不知道就拒绝"
  • 偏好对齐:RLHF/DPO中引入事实性奖励,惩罚幻觉输出
  • 知识蒸馏:从大模型蒸馏事实性强的推理链到小模型

3. 推理时干预(Inference-Time Intervention)

不修改模型,在生成过程中干预:

方法 机制 代表工作
对比解码 对比大模型与浅层输出,抑制幻觉 DoLa
注意力引导 强制关注输入上下文 ITI
自我验证 生成后让模型自检,迭代修正 Self-Check

4. 知识编辑(Model Editing)

直接修改模型参数中的特定事实:

  • 定位-编辑:ROME、MEMIT定位MLP层中的知识神经元
  • 适用场景:单条事实修正,不适合大规模更新

工程实践建议

  • 分层防御:检索优先 → 推理干预兜底 → 事后事实核查
  • 幻觉检测:NLI模型判断生成与证据的蕴含关系,或采样一致性检验
  • 产品策略:高风险场景强制引用溯源,低置信度触发人工审核

学习建议

建议系统学习该知识点

口语版讲法(约4分钟)

  • 一句话定位:幻觉本质是模型自信与不确定性之间的失衡
  • 边界划分:RAG适合事实性幻觉,微调适合风格/格式,推理干预做兜底
  • 业务场景:客服退款政策查询的落地案例
  • 落地风险:检索失败反而加重幻觉,需置信度校准
  • 工程师取舍:分层防御,优先RAG,辅以推理干预和事后检测

面试官好,这道题问的是幻觉缓解,其实我觉得本质是在问:怎么让模型在不确定的时候学会说不知道,而不是强撑着编答案。因为大模型天生就是个接龙游戏,它不知道什么是对的,它只知道什么最像真的。所以所有方法,往根上说,都是在给模型画一条边界,告诉它哪里可以自由发挥,哪里必须守规矩。

我按适用场景把主流方法分成三个梯队。先说第一梯队,RAG,也就是检索增强。它的核心思路特别简单:模型别自己瞎编,先去查资料。比如在客服场景,用户问退款政策,你不能让模型背一个过时的版本,而是先从一个知识库里把最新的政策文档搜出来,然后让模型照着写。这个思路对事实性幻觉效果特别好,因为事实是外挂的,不是模型记的。但这里有个坑:检索失败的时候,幻觉反而比不用RAG更严重,因为模型会强行把检索来的无关信息也编进去。所以落地时我特别关注两件事,一个是检索质量,比如用 Hybrid Search 把关键词和向量两条路结合起来,再一个是对检索结果做置信度过滤,分太低的直接丢掉。

第二梯队是微调。微调适合的场景和RAG不一样,RAG管事实,微调更多管风格和逻辑。比如你要模型在不确定时说“我不确定”,或者让它的推理链更忠实于上下文,那微调就更直接。具体做法分两种,一种是用高质量QA对做 SFT,叫它学会拒绝;另一种是用 RLHF 或者 DPO,在偏好对齐里加入事实性奖励,惩罚幻觉输出。但微调的局限也很明显,它改的是模型的内部参数,改完以后新知识进来,要么忘了旧的,要么学歪了,所以不适合高频更新的场景。

第三梯队是推理时干预,就是不改模型,在生成过程中加限制。比如 对比解码,拿大模型和小模型的输出对比,如果小模型觉得概率大的词,大模型却觉得概率小,那往往是幻觉信号,就把它压下去。还有 Self-RAG,让模型生成的时候自己反思,输出一个反思token,比如“我有没有依据”,然后根据这个token决定要不要引用来源。这个方法的好处是灵活,不依赖外部知识库,但坏处是推理成本高,而且对模型自身能力有要求,不是所有模型都反思得好。

其实还有一个方向,就是知识编辑,直接修改模型参数里某个具体事实。比如公司改了某个产品的价格,你不想重新训练,就定位到模型MLP层里存这个价格的神经元,直接改。但这方法风险很大,因为模型的知识是分布式存储的,你改一个点可能连带影响别的事实。所以我对它的看法是,适合做紧急热修复,但绝对不能当常规方案。

所以总结一下,我的倾向是分层防御:先用RAG解决大部分事实性问题,推理时干预做兜底,最后再加一道事后检测,比如用 NLI 模型判断生成内容和检索证据的蕴含关系,或者做采样一致性检验。真正上线的时候,我宁可让模型回复“我不知道”,也比它编一个看起来合理但错误的信息强。

关键一句:知识编辑(Model Editing)作为紧急热修复可行,但风险大,不能做常规方案

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做电商客服机器人,用户问“这个手机多少钱”,模型答了2999,但实际是3999。这种编造事实的幻觉,你平时怎么防?从实际业务出发聊聊吧。

  2. 问法 2 · 层层追问

    大模型生成内容有时会胡说八道,你了解吧?……一般怎么缓解这类问题?……那如果微调不够,还有什么办法?比如生成时能不能干预?

  3. 问法 3 · 直球架构

    列举目前主流的缓解LLM幻觉的技术方法,包括检索增强、微调、推理时干预等,各自的核心思路和典型做法是什么?

同模块相关题目