幻觉大概是 AI 落地被问最多的问题:「你们怎么解决幻觉?」——问法暴露了误区:幻觉不是「能修好的 bug」,是概率性模型的固有属性。你没法消灭它,只能治理它:让它发生的概率更低、发生了能被发现、被发现了损失可控。这就是本篇的三层模型:防、拦、兜。
先认清幻觉的三个来源(对症才能下药)
- 没检索到:库里没答案,模型「硬答」——最常见的来源。治理核心是让它承认不知道。
- 检索到但拼错:多份材料冲突、引用了错的版本——治理核心是引用可验证。
- 过度生成:模型「自由发挥」补细节——治理核心是约束输出。
第一层:防(输入与上下文,把幻觉扼杀在源头)
- 检索质量是第一道闸:召回不到,生成必然靠编——混合检索、重排、切分质量,先照RAG 生产落地把检索链路做扎实。
- 上下文只给可信内容:检索结果标注来源可信度;低可信内容(网页抓取)要么不引用,要么提示模型「仅作参考,不作为事实依据」。
- 让模型有「退路」:系统提示明确「知识库里没有的就明说没有」,给「不知道」一个正当出口——模型不拒绝,往往是因为你没给它拒绝的许可。
- 任务边界前置:超出能力声明范围的问题,在入口就转人工或走规则(任务分流),根本不让模型接。
第二层:拦(生成与校验,让幻觉在出口被拦住)
- 强制带引用:检索型回答必须输出引用编号,且「无引用不出答案」——这条规则能把「编造」从根上掐断(没有引用可引,它就只能拒绝)。
- 结构化输出 + 校验器:让模型输出 JSON(含置信度、引用、结论),用代码校验器检查:引用的文档存在吗?结论和引用内容一致吗?校验不过就重试或拒绝——用代码拦模型的错,别再用模型拦模型的错。
- 置信度与一致性提示:让模型自我评估「材料是否充分」(有帮助但别全信,最终以校验器为准)。
第三层:兜(输出之后,让幻觉的损失可控)
- 幻觉是概率事件,接受残差:三层做完,仍有小概率漏网——所以要有「被发现」的机制:
- 可回放:每个回答留全链路日志(检索了什么、引用了什么、模型怎么答的),出问题能复盘是哪一层漏的(链路追踪)。
三层合起来,怎么回答老板的「怎么解决幻觉」
一句话版本:我们不能保证不犯错,但能保证「错了可发现、可定位、可纠正」——检索有引用、输出有校验、线上有抽检、案例回流评测。这是概率系统能给的最高承诺,也应该是你能力声明表里写的那句。
落地清单
- 检索链路打底(混合检索/重排/切分质量)
- 系统提示给「拒绝许可」,检索内容标可信度
- 强制引用 + 无引用不出答案
- 结构化输出 + 代码校验器(文档存在/结论一致)
- 高风险回答带人工确认标记,案例回流评测集