怎么考「引用溯源怎么实现?怎么防模型「标了引用却胡编」?

Q2-24生成可信度常见

谁在问:toB 场景面试官(法务、金融、医疗、企业知识库)

开场怎么问

你们的答案带出处吗?怎么做的?

换个问法

  • 模型标的引用是准的吗?会不会张冠李戴?
  • 知识库里没有答案的时候,系统会怎么回答?

五层追问链

左边照着问,右边对着听。最后一层是压力面,不必每个候选人都问到。

怎么校验模型标的引用是对的?

期望
把答案拆成声明(claim),逐条和被引用的 chunk 做蕴含判断——可以用轻量 NLI 模型、文本重叠度、或小模型判官。这本质上就是 faithfulness 的计算方式(见 Q2-16),区别是这里在线做、用于拦截,评测时离线做、用于打分。
信号
能把它和 faithfulness 联系起来的,知识是打通的。

分数阈值怎么定?定高了会怎样?

期望
用评测集调——两类样本各一批:「知识库有答案」的要保证不被误杀(阈值太高会把能答的问题也拒了),「知识库没答案」的要保证被拦住。这是精确率与召回率的经典权衡,取决于业务对「答错」和「答不出」的容忍度。还要注意不同检索方式的分数不可直接比较(见 Q2-10),混合检索下阈值要基于融合后的排序或重排分数来定。
信号
能指出「分数不可比所以阈值要基于 rerank 分」的,非常专业。

模型说「不知道」,但用户觉得知识库里明明有,怎么办?

期望
这是阈值误杀,本质是检索失败被兜底话术掩盖了。所以必须记录被阈值拦截的 query并定期回捞分析——这批数据是检索优化的金矿。如果发现某类 query 频繁被拦,说明这类的检索能力有缺口(可能是分词、可能是缺 BM25),要回去修检索而不是简单调低阈值。
信号
能想到「拦截日志要回捞」的,有闭环意识;只说「调低阈值」的是治标。

多个 chunk 支持同一句话,引用怎么标?

期望
允许一句话标多个引用;展示时按相关性排序,默认展开最相关的一条,其余折叠。要注意去重——同一份文档的相邻 chunk 应合并展示为一条出处,否则用户看到五个引用点开发现是同一页,体验很差。
信号
能想到「同源合并」的,做过前端展示的实际打磨。

法务客户说「你们的引用必须 100% 准确,否则不能上线」,你怎么回应?

期望
不承诺 100%(技术上做不到),但给可验证的保障体系:① 引用校验不通过的内容不输出,宁可降级;② 所有答案强制展示原文片段,用户一眼可核;③ 提供可量化的引用准确率指标和评测报告;④ 高风险场景加人工复核环节;⑤ 完整审计日志。同时明确产品定位:这是辅助检索工具,不是法律意见的出具者。 诚实的边界声明 + 可验证的保障,比空头承诺更能拿下客户。
信号
拍胸脯说「能做到 100%」的,是对技术边界无知或不负责任;能给出「降级 + 可核 + 可量化 + 人工兜底」四层保障的,是能扛 toB 交付的人。

危险信号

听到这些话,基本可以判定是背题而不是做过。

「让模型在答案里标出处就行了」——完全不知道会标错。
「说不知道」只靠 prompt 一句话约束。
完全不谈阈值误杀的代价。
认为引用做了就等于消除了幻觉——引用是让幻觉可被发现,不是让它不发生
面对客户的绝对化要求直接承诺 100%。

评分卡

  1. 知道引用需要 chunk 编号 + 元数据(来源、页码、标题路径)
  2. 知道模型会标错引用,需要后处理校验
  3. 知道「说不知道」不能只靠 prompt,要有检索分数阈值兜底
  4. 知道阈值要用评测集调,且涉及误杀权衡
  5. 加分:意识到某些场景「答错比不答更危险」
  6. 加分:能把引用校验和 faithfulness 指标联系起来
  7. 加分:知道被拦截的 query 要回捞分析
  8. 加分:面对 100% 准确率要求能给出诚实且可验证的方案
参考答案与考察意图面试中途别看这一段

考察意图

toB 场景的硬需求题。引用溯源是 RAG 相对微调的核心优势之一,但很多人只做到「让模型输出引用编号」就以为完事了——模型标错引用是高频现象。面试官想看:① 你知不知道引用需要后处理校验;② 「说不知道」你是靠 prompt 还是靠阈值(靠 prompt 是不够的);③ 有没有意识到错误答案在某些场景比没有答案更危险。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

引用溯源:给送进 prompt 的每个 chunk 编号,要求模型在答案的每句话后标注引用编号;前端把编号渲染成可点击的出处链接,展示原文片段、来源文件和页码。chunk 的元数据(文件名、标题路径、页码、更新时间)在建索引时就要存好。

说不知道:prompt 里明确要求「材料中没有相关信息时,回答不知道,不要编造」。

90

90 分答案(有生产经验的回答)

补三层,每层都是 60 分答案的漏洞:

① 引用必须做后处理校验。模型标错引用是常见现象——它可能标了编号但那句话其实来自另一个 chunk,甚至来自它自己的先验知识。做法:拿答案里的每句声明去和它标注的 chunk 做一次归属校验(用轻量模型或文本重叠/蕴含判断),校验不通过就降级——去掉该引用并标注「此处出处不明确」,或者整体重新生成。「有引用」和「引用是对的」是两件事。

② 「说不知道」不能只靠 prompt。更有效的是在检索层设分数阈值:最高相关性分数低于阈值时,根本不进生成,直接走兜底话术。理由很简单——材料都摆在上下文里了,再强的 prompt 也压不住模型「凑合答一个」的倾向;而阈值兜底是确定性的。阈值靠评测集里那类「知识库没有答案」的问题来调(见 Q2-15)。

③ 分场景决定容错姿态。闲聊型产品可以宽松,但在法务、医疗、金融场景,错误答案比没有答案危险得多——用户会照着错误答案去操作。这类场景应该把阈值调高、宁可多说几次不知道,并且明确展示「以下内容依据 X 文件第 Y 条」让用户自己能核。

再补一个实现细节:引用粒度要选好。整段引用最容易实现但用户不好核对;逐句引用体验最好但模型标注负担重、出错率高。折中是按论点分段引用——一个论点一个引用,兼顾可核性和准确率。

攒够了去组卷页一键生成可打印的面试题单