如何通过 Prompt 降低大模型幻觉?为什么不能只写"不要编造"?
简化版
「不要编造」只是行为提示,给不了模型缺失的事实。真正有效的做法是:提供可信证据(Grounding)、限定回答范围、要求逐项引用、规定证据不足时拒答,并用程序核验引用和关键字段。Prompt 能降低幻觉概率,不能彻底消除——因为「正确生成」和「合理编造」来自同一套「预测下一个最可能 token」的机制。
详细版
可靠回答 Prompt 应明确:
- 只依据给定资料,不用参数记忆补事实;
- 每个关键结论标注来源/片段 ID;
- 资料冲突时列出冲突,不自行选一个;
- 证据不足时返回「无法从资料确认」;
- 区分资料事实 / 合理推断 / 建议;
- 采样参数符合任务(事实任务用低随机性);
- 输出后由程序检查引用存在性和字段合法性。
需要最新/私有/可追溯知识时,用 RAG、数据库、工具。降低随机性提高稳定性,但不会把错误知识变正确。
完整版教学
一、为什么一句禁令解决不了幻觉
语言模型的目标是「生成上下文里可能出现的文本」,不是查询内置真值数据库。当问题超出知识或证据不足时,它仍会补全一个语言上合理的答案:
问:"X 公司 2023 年营收是多少?"(模型没有这个数据)
"不要编造" → 模型仍可能输出 "约 12.5 亿美元"(一个合理但瞎编的数)
「不要编造」告诉了偏好,却没给判定真假的机制。想降幻觉,必须同时改善信息来源 + 任务边界 + 验证流程三件事。
二、Grounding:让答案建立在证据上
Grounding 的核心是「把回答锚定在指定证据上」。Prompt 把资料放进清晰数据区,要求模型只用这些资料,并对每条结论附来源:
仅根据 <docs> 中的资料回答。每个结论后标注 [doc-id]。
资料未提及的,回答"资料未涉及",不要用常识补充。
<docs>
<doc id="A">2023 年营收 8.2 亿元...</doc>
</docs>
问题:2023 年营收多少?
期望输出:8.2 亿元 [A]
但要清醒:资料本身可能错、过期、冲突——所以 Grounding 保证的是「对资料忠实」,不自动保证「现实世界正确」。
三、拒答条件要具体
只写「不知道就说不知道」仍太模糊。要给可判定的规则:
- 找不到直接支持时不得下结论;
- 缺哪些信息要明确列出;
- 不允许根据相似案例推断具体数字;
- 来源冲突时展示双方版本和日期;
- 无权访问所需资料时说明权限限制。
注意:拒答也要评估——过度保守(什么都拒)会损害可用性(见过度拒绝)。
四、引用 ≠ 有证据(Citation Correctness)
一个隐蔽且高频的坑:模型可能引用一个真实存在、但并不支持结论的片段,甚至编出不存在的页码:
结论:"该药可用于儿童 [doc-3]"
但 doc-3 实际写的是"该药禁用于 12 岁以下儿童" ← 引用真实,却曲解原意
所以应用要检查 Citation Correctness——引用文本是否真的蕴含对应陈述,而不只是「链接格式对」。高风险场景可把答案拆成原子声明,逐条判断证据支持。
五、事实、推断、建议要分层
要求模型分别标注三类内容,减少用户把「模型建议」误当「资料事实」:
| 类型 | 含义 | 例子 |
|---|---|---|
| 事实 | 资料直接陈述 | 「资料 A 说营收 8.2 亿」 |
| 推断 | 由多个事实推导(说明依据) | 「结合 A、B,同比增长约 15%」 |
| 建议 | 面向行动的判断(非原文结论) | 「建议关注现金流」 |
六、外部工具与评估
工具求真:实时价格/库存/账户查 API;数学交给计算器;政策检索当前版本;代码运行测试。Prompt 负责「何时调用、怎么表达」,确定性系统负责「提供可验证结果」。
评估:建含可回答 / 不可回答 / 冲突证据 / 诱导性问题的测试集,测事实正确率、忠实度、引用支持率、拒答准确率、严重错误率。
记忆钩子:低 Temperature 让模型更稳定地选高概率输出,也可能更稳定地输出同一个错误答案——调温度治不了幻觉。
七、常见误区与追问
- 误区:写”不要编造”就能降幻觉。 那只是偏好,给不了缺失事实,要 Grounding + 拒答 + 验证。
- 误区:给了引用就说明有证据。 引用可能不支持结论甚至是编的,要核验 Citation Correctness。
- 误区:降 Temperature 能消除幻觉。 只增稳定性,可能更坚定地重复同一个错误。
- 追问:为什么禁令无效? 模型优化「预测可能文本」而非查真值,证据不足时仍补合理答案。
- 追问:Grounding 保证什么、不保证什么? 保证对资料忠实,不保证现实正确(资料可能错/过期/冲突)。
- 追问:拒答规则怎么写才可判定? 无直接支持不下结论、列出缺失信息、冲突展示双方、无权限说明限制。
- 追问:怎么评估降幻觉效果? 用可答/不可答/冲突/诱导测试集,测事实率、忠实度、引用支持率、拒答准确率。
八、加强记忆
降幻觉记「四可 + 一验证」:让答案有资料可依(Grounding)、有边界可守(限定范围)、有证据可查(逐项引用 + 核验 Citation Correctness)、缺资料可拒答(具体拒答条件),最后由程序或人工验证。核心认知钉死:「不要编造」是偏好不是机制、给了引用≠有证据(可能曲解原文)、低温≠更真实(会稳定地重复错误)。Grounding 只保证对资料忠实、不保证现实正确;求真交给工具,事实/推断/建议要分层标注。