即使在 RAG 框架下,大模型仍有可能在生成回答时偏离检索到的资料,或者当检索结果不够精确时,模型出于“完成任务”的惯性,编造看似通顺的细节。事实校验与幻觉抑制的目的,是在生成的最后阶段,尽可能拦截这类不可靠的输出,确保最终答案严格基于给定的证据。
下面介绍几种在实际系统中被反复验证过的实用方法,从低侵入性的提示设计,到可量化的自动化校验,再到兜底的后处理策略,形成一套多层防御。
15.3.1 提示中的诱导控制:让模型自己“保守”
最基本的做法是在提示词中明确规定模型的行为边界。远不止简单的一句“基于以下资料回答”,你还需要细化负面指令:
- 强制溯源:要求模型在回答中显式引用材料片段,例如“请在每条关键信息后标注 [来源:文档名-段落号]”。当模型知道必须标注出处时,它自然会更谨慎地使用材料,不会轻易延伸出材料外的事实。
- 允许说“不知道”:明确告诉模型:“如果材料中找不到相关信息,请直接回答‘根据现有资料,无法确认’。不要猜测。”这能有效阻止模型在信息缺口处“即兴发挥”。
- 限定输出格式:例如要求逐条列举关键点,并且每条限制在若干字内。结构化输出会减少模型随意补充细枝末节的空间。
实用建议:不要只在系统提示开头说一遍,在末尾再次强调“请严格依据材料,不要添加任何材料中没有的信息”,重复约束往往能进一步降低幻觉率。
15.3.2 检索可靠度阈值:信息不足绝不硬答
并非每个问题都能在知识库中找到完美匹配的答案。RAG 的检索步骤通常会返回每个片段的相似度得分(或相关度分数)。可以在生成答案前插入一个判断分支:
- 如果检索到的最高相似度低于预设阈值(例如 cosine similarity < 0.75),直接触发降级回复:“抱歉,在知识库中未找到相关答案。”
- 或者,即使得分尚可,但召回片段的数量或覆盖度不足(比如只找到一个短片段且明显不完整),也可以转入“无法回答”路径。
实施细节:阈值需要根据业务场景调试。可以先收集一批真实问题和人工标注的理想答案,观察检索得分分布,选择一个平衡“漏回答”与“错回答”的点。通常宁可多拒绝一些,也不要给出不可靠的答复。
15.3.3 答案一致性校验(Self-Checker / NLI)
这是目前企业级 RAG 中应用较广的自动化事实校验方法。基本思路:再让模型(或一个专门的校验模型)确认一下,“生成的回答是否真的被检索到的材料所支持”。
方案一:用大模型自我检查
将“问题 + 检索结果 + 候选回答”一起送入模型,追加一个校验提示:
“请判断以下回答是否严格基于给定材料。如果回答中的每条陈述都能在材料中找到依据,返回‘一致’;如果包含材料中没有的事实或数据,返回‘不一致’,并指出哪部分存疑。”
这样做的好处是不用引入额外模型,且大模型对语义理解的敏感度较高。缺点是多一次生成调用,会增加延迟和 token 消耗。
方案二:自然语言推理(NLI)模型
使用专门的轻量级 NLI 模型(如基于 BERT 的 entailment 判断模型)来做逐句检查:将回答拆成若干断言,每个断言与检索材料组合,判断是否为“蕴含(entailment)”、“矛盾(contradiction)”或“中性(neutral)”。只有全部蕴含时才放行。
优点:校验速度快、成本低,结果可量化。缺点:NLI 模型更擅长句子级别的判断,对跨句推理或较长文本的覆盖可能不完全,需要配合好的切句逻辑。
落地策略:通常先上线“自我检查”方案,因为接入成本最低。如果对延迟敏感,再逐步引入轻量 NLI 作为快速过滤层,大模型检查作为最终裁决层。
15.3.4 多路答卷交叉验证
另一种有效但成本稍高的思路是:用同一个问题让模型生成多个回答(可通过调节温度参数获得多样性),或者同时对检索结果的不同子集生成回答。然后比对这几个候选答案,找出共同认可的核心事实,剔除只在某个回答中出现的“孤证”。
例如:
- 生成 3 个候选答案。
- 用嵌入模型计算它们之间的语义相似度。如果某个答案与其他两个差异过大,可判定为异常输出,重新生成或降级处理。
- 或者借助 NLI 模型,检查各候选答案中每个关键事实是否能在至少两个版本中找到支撑。
这种方式尤其适合对事实准确度要求极高的场景(如医疗、法律),但会成倍增加生成成本。
15.3.5 后处理规则过滤
有些幻觉有明显的文本特征,可以通过规则进行兜底筛查:
- 禁用语拦截:如果回答中出现了类似“根据我的训练数据”、“截至 2023 年”等明显属于模型自身记忆的措辞,直接判定为不合格,需要重试或降级。
- 来源标注缺失:如果要求了标出处但回答中没有按格式标注,可能意味着模型未严格依据材料,此时可以视为高风险回答。
- 数字与时间敏感信息核对:如果检索材料中明确提到某个数字(如价格、日期、比例),而回答中出现了不同数值,可以通过简单的正则匹配进行交叉检查。
这些都是极低成本的“安全网”,能捕获一大类低级的幻觉。
15.3.6 人工抽检与反馈闭环
没有自动校验方案是完美的。在实际运营中,必须建立持续的人工抽检机制:
- 定期抽取一定比例(如 5%)的问答记录,由业务专家检查回答的准确性及与材料的符合度。
- 发现错误的案例不仅用于修正知识库,更要反哺到校验策略中,例如调高 NLI 模型的矛盾判定阈值,或者补充新的禁用语。
同时,如果产品面向最终用户,可以在答案下方设置简单的反馈按钮(“有用/无用”或“答案有误”)。用户反馈是发现隐蔽幻觉的高价值信号。
小结
幻觉抑制不是单一技术点,而是贯穿生成前后的多层防御。合理的组合通常是:
- 用提示严格控制生成范围;
- 设置检索得分阈值在源头拒绝低质量请求;
- 答案生成后,用自我检查或 NLI 做一致性校验;
- 辅以规则过滤和交叉验证作为补充;
- 通过人工抽检与用户反馈持续优化。
这样一来,RAG 系统才能将事实准确性从“大概率准确”提升到“可审计、可信任”的水平,真正达到企业级应用的要求。