一个问答结果变差时,团队常会说“模型退化了”。但真正的问题可能是扫描件少识别了一页、切分破坏了表格、过滤条件排除了正确文档,或者正确片段已经召回却没有进入最终上下文。
如果评估只保存一个答案分数,这些问题会被混在一起。
最小样本集也要有结构
不必等到收集上万条数据才开始。先整理一小组能代表真实业务的问题,并标注预期行为:
- 可回答:记录正确文档、关键段落和最低限度的事实点。
- 应拒答:知识库中没有依据,或用户无权查看依据。
- 易混淆:旧版与新版、相似产品名、同名字段、跨文档条件。
- 多跳问题:需要组合几段证据,但不能跳过中间约束。
每条样本保留原始问题、文档版本和测试身份。权限相关的样本不能用管理员身份统一回放,否则测不出越权风险。
四层指标,四种修复方式
第一层是解析:关键内容是否进入索引,页码和表格关系是否保留。第二层是召回:正确片段是否出现在候选集。第三层是证据选择:正确片段是否进入模型上下文,引用是否指向原文。第四层才是生成:回答是否准确、完整,是否在证据不足时克制。
这四层的失败需要不同修复。解析失败时换提示词无效;召回失败时加长回答模板无效;引用错误时只看文字答案可能误判为成功。
一次回放至少保存:
样本与身份、索引版本、检索词、候选片段与分数、
过滤原因、最终上下文、回答、引用、耗时与失败信息
这些记录应能链接回原文,但公开报告只放匿名化样本和汇总,不泄露业务材料。
把“提升”定义为可比较的变化
评估应有基线。修改切分策略、检索权重、重排器或模型后,对同一批样本重跑,比较各层的通过情况,而不是只挑几条看起来更好的例子。人工审阅仍然重要,尤其是引用是否足以支持结论;自动评分可以辅助筛查,不应替代证据核验。
可排障的评估体系不一定复杂。它最先要做到的是:当答案错了,团队能指出错在哪里,并验证修复没有让其他类型的问题变坏。
为每个失败找到可复现的最小样本
例如用户问“新版制度里试用期请假需要谁批准”,系统引用了旧制度。不要只保留最终错误答案,还要保存测试身份、时间、问题文本、索引版本、候选片段 ID 和最终引用。然后分别检查:新版文档有没有完成解析和入库;过滤条件是否允许它进入候选;重排是否把旧版排在前面;最终上下文是否同时出现了两个版本。
这四种原因的修法完全不同。若新版根本未入库,先修摄取任务;若候选里有新版却被旧版压下去,再调排序;若最终上下文同时包含两版,答案生成前应加入版本选择与冲突处理,而不是继续提高召回数量。
指标要有分母和切片
“引用准确率 90%”并不够说明问题:它是对所有问题算的,还是只对系统决定回答的问题算的?拒答样本、无权限样本、扫描 PDF 和表格问题的表现是否相同?小型评估集至少应按问题类型与文档类型拆开报告,并保留每条失败的原始证据。否则新增一批简单 FAQ 后,总分上升,关键的跨文档问题却可能继续退化。
最后把离线结果和线上反馈连接起来。用户点“答案不对”时尽量收集具体原因并回收到评估集,但先去除敏感内容。固定集保证可比性,新反馈保证问题不会被旧样本定义死;两者缺一不可。