怎么考「引用溯源怎么实现?怎么防模型「标了引用却胡编」?」
谁在问:toB 场景面试官(法务、金融、医疗、企业知识库)
开场怎么问
你们的答案带出处吗?怎么做的?
换个问法
- 模型标的引用是准的吗?会不会张冠李戴?
- 知识库里没有答案的时候,系统会怎么回答?
五层追问链
左边照着问,右边对着听。最后一层是压力面,不必每个候选人都问到。
怎么校验模型标的引用是对的?
- 期望
- 把答案拆成声明(claim),逐条和被引用的 chunk 做蕴含判断——可以用轻量 NLI 模型、文本重叠度、或小模型判官。这本质上就是 faithfulness 的计算方式(见 Q2-16),区别是这里在线做、用于拦截,评测时离线做、用于打分。
- 信号
- 能把它和 faithfulness 联系起来的,知识是打通的。
分数阈值怎么定?定高了会怎样?
- 期望
- 用评测集调——两类样本各一批:「知识库有答案」的要保证不被误杀(阈值太高会把能答的问题也拒了),「知识库没答案」的要保证被拦住。这是精确率与召回率的经典权衡,取决于业务对「答错」和「答不出」的容忍度。还要注意不同检索方式的分数不可直接比较(见 Q2-10),混合检索下阈值要基于融合后的排序或重排分数来定。
- 信号
- 能指出「分数不可比所以阈值要基于 rerank 分」的,非常专业。
模型说「不知道」,但用户觉得知识库里明明有,怎么办?
- 期望
- 这是阈值误杀,本质是检索失败被兜底话术掩盖了。所以必须记录被阈值拦截的 query并定期回捞分析——这批数据是检索优化的金矿。如果发现某类 query 频繁被拦,说明这类的检索能力有缺口(可能是分词、可能是缺 BM25),要回去修检索而不是简单调低阈值。
- 信号
- 能想到「拦截日志要回捞」的,有闭环意识;只说「调低阈值」的是治标。
多个 chunk 支持同一句话,引用怎么标?
- 期望
- 允许一句话标多个引用;展示时按相关性排序,默认展开最相关的一条,其余折叠。要注意去重——同一份文档的相邻 chunk 应合并展示为一条出处,否则用户看到五个引用点开发现是同一页,体验很差。
- 信号
- 能想到「同源合并」的,做过前端展示的实际打磨。
法务客户说「你们的引用必须 100% 准确,否则不能上线」,你怎么回应?
- 期望
- 不承诺 100%(技术上做不到),但给可验证的保障体系:① 引用校验不通过的内容不输出,宁可降级;② 所有答案强制展示原文片段,用户一眼可核;③ 提供可量化的引用准确率指标和评测报告;④ 高风险场景加人工复核环节;⑤ 完整审计日志。同时明确产品定位:这是辅助检索工具,不是法律意见的出具者。 诚实的边界声明 + 可验证的保障,比空头承诺更能拿下客户。
- 信号
- 拍胸脯说「能做到 100%」的,是对技术边界无知或不负责任;能给出「降级 + 可核 + 可量化 + 人工兜底」四层保障的,是能扛 toB 交付的人。
危险信号
听到这些话,基本可以判定是背题而不是做过。
评分卡
- 知道引用需要 chunk 编号 + 元数据(来源、页码、标题路径)
- 知道模型会标错引用,需要后处理校验
- 知道「说不知道」不能只靠 prompt,要有检索分数阈值兜底
- 知道阈值要用评测集调,且涉及误杀权衡
- 加分:意识到某些场景「答错比不答更危险」
- 加分:能把引用校验和 faithfulness 指标联系起来
- 加分:知道被拦截的 query 要回捞分析
- 加分:面对 100% 准确率要求能给出诚实且可验证的方案
参考答案与考察意图面试中途别看这一段
考察意图
toB 场景的硬需求题。引用溯源是 RAG 相对微调的核心优势之一,但很多人只做到「让模型输出引用编号」就以为完事了——模型标错引用是高频现象。面试官想看:① 你知不知道引用需要后处理校验;② 「说不知道」你是靠 prompt 还是靠阈值(靠 prompt 是不够的);③ 有没有意识到错误答案在某些场景比没有答案更危险。
参考答案
60 分答案(及格线)
引用溯源:给送进 prompt 的每个 chunk 编号,要求模型在答案的每句话后标注引用编号;前端把编号渲染成可点击的出处链接,展示原文片段、来源文件和页码。chunk 的元数据(文件名、标题路径、页码、更新时间)在建索引时就要存好。
说不知道:prompt 里明确要求「材料中没有相关信息时,回答不知道,不要编造」。
90 分答案(有生产经验的回答)
补三层,每层都是 60 分答案的漏洞:
① 引用必须做后处理校验。模型标错引用是常见现象——它可能标了编号但那句话其实来自另一个 chunk,甚至来自它自己的先验知识。做法:拿答案里的每句声明去和它标注的 chunk 做一次归属校验(用轻量模型或文本重叠/蕴含判断),校验不通过就降级——去掉该引用并标注「此处出处不明确」,或者整体重新生成。「有引用」和「引用是对的」是两件事。
② 「说不知道」不能只靠 prompt。更有效的是在检索层设分数阈值:最高相关性分数低于阈值时,根本不进生成,直接走兜底话术。理由很简单——材料都摆在上下文里了,再强的 prompt 也压不住模型「凑合答一个」的倾向;而阈值兜底是确定性的。阈值靠评测集里那类「知识库没有答案」的问题来调(见 Q2-15)。
③ 分场景决定容错姿态。闲聊型产品可以宽松,但在法务、医疗、金融场景,错误答案比没有答案危险得多——用户会照着错误答案去操作。这类场景应该把阈值调高、宁可多说几次不知道,并且明确展示「以下内容依据 X 文件第 Y 条」让用户自己能核。
再补一个实现细节:引用粒度要选好。整段引用最容易实现但用户不好核对;逐句引用体验最好但模型标注负担重、出错率高。折中是按论点分段引用——一个论点一个引用,兼顾可核性和准确率。