Skip to content

L02-11 引用与拒答:让 AI 敢说「我不知道」 ​

全局中心内容:可信度来自「可溯源」和「会拒答」,这两件事必须显式设计,模型不会自己做。 全局讲解主线:幻觉翻车 → 为什么模型爱编 → 引用机制 → 拒答设计 → 编码 → 话术 → 验收。


P1 · 产出页 ​

中心内容:答案带 [1][2] 角标 + 来源面板 + 无依据时明确拒答。

  • 讲解技巧
    • 开场展示一个编得很像真的答案,让学员判断真假——大概率会被骗到。这个体验比讲道理有力。
  • 时长:20s

P2 · 为什么会编 ​

中心内容:语言模型的目标是「生成流畅的下文」,不是「只说我知道的」。

  • 讲解技巧
    • 用一句精准的话:模型不知道自己知道什么。它没有任何机制判断某句话是不是记忆里的。
    • 因此「只根据资料回答」这种 Prompt 只是降低概率,不是保障。
  • 时长:4min

P3 · 引用机制设计 ​

中心内容:给每个片段编号,要求模型在句末标注编号。

  • 页面内容:Prompt 片段模板 + 输出示例

  • 讲解技巧

    • 讲清一个关键细节:编号要在拼装 Prompt 时生成,并在精排之后固定,否则顺序变了引用就错乱。
    • 提醒:要求「每个结论至少有一个编号」,比笼统说「请标注来源」效果好得多。
  • 时长:6min


P4 · 引用校验 ​

中心内容:模型编的引用编号要程序校验,不能照单全收。

  • 页面内容:校验器实现(提取 [n]、越界检测、无引用句子检测)

  • 讲解技巧

    • 这是工程保障的关键:模型经常标 [3] 但只有 2 个片段,或者整段没有引用。
    • 处理方式:越界直接标记可疑;无引用的句子降级为「仅供参考」或重新生成。
  • 时长:6min


P5 · 拒答设计 ​

中心内容:拒答要有独立的判定路径,不能只靠模型自觉。

  • 页面内容:三重判定(无命中 / 相似度低于阈值 / 模型输出拒答标记)

  • 讲解技巧

    • 强调「无命中直接拒答」这一条要硬编码,不要问模型。省一次调用,且 100% 可靠。
    • 讲拒答标记的做法:给模型一个 INSUFFICIENT_CONTEXT 输出选项,识别后走拒答分支。
  • 时长:5min


P6 · 拒答话术 ​

中心内容:拒答不是回「不知道」,要给出下一步。

  • 页面内容:三种话术(无资料 / 资料不足 / 建议转人工)

  • 讲解技巧

    • 给产品视角的建议:好的拒答要降低用户的挫败感——说明原因、给替代路径、给转人工入口。
    • 反面例子:「抱歉,我无法回答这个问题。」——用户只会觉得这系统没用。
  • 时长:4min


P7 · 编码:答案封装 ​

中心内容:Answer 对象同时携带文本、引用列表、置信度标记。

  • 页面内容:Answer/Citation record;前端渲染所需的字段

  • 讲解技巧

    • 讲清后端要返回结构化引用,而不是让前端从文本里正则抠角标。
    • 提醒:引用要带 sourceId + titlePath + 片段内容,前端 hover 时才展示得出来。
  • 时长:5min


P8 · 验收标准 ​

中心内容:用一组「应该拒答」的用例来验收。

  • 页面内容:故意问库外问题 / 问近似但不存在的内容

  • 讲解技巧

    • 这是最容易被忽略的测试:团队通常只测「答得对」,不测「该拒的时候拒」。
    • 给指标建议:拒答准确率单独统计,目标 90%+。
  • 时长:4min


P9 · 避坑与小结 ​

中心内容:引用和拒答一起做,缺一个都不完整。

  • 讲解技巧
    • 引出下一节:如果库里有多个租户的资料,怎么保证不串?——02-12 元数据过滤与隔离。
  • 时长:2min

讲师备忘 ​

项内容
课前必做准备一个「像真的一样」的幻觉答案样例;准备 5 条应拒答用例
最容易超时处P4 校验器代码,容易被追问解析细节
学员最常问「加了引用就不会幻觉了吗?」答:显著降低但不消除,仍需校验器兜底
现场备用无网络 → 用预录的输出样例讲解