无答案时的兜底行为
知识库总会遇到答不了的问题:要么完全没有相关片段,要么只有勉强沾边的低置信内容。此时系统必须有稳定的兜底路径——明确说明未找到、给出可能的相近主题、提供转人工或反馈入口,而不是硬让模型生成一段听起来很合理的答案。兜底行为要和阈值一起纳入评测:把“无答案集”作为评测子集统计误答率,否则线上表现就是“永远自信、偶尔错误”。
基本信息
| 触发条件 | 无召回结果,或最高分低于置信阈值 |
|---|---|
| 兜底分层 | 完全无内容、低置信有相近内容、正常作答三层 |
| 必备出口 | 转人工或提交反馈的入口 |
| 评测方式 | 无答案集上的误答率与转人工率 |
| 文案要求 | 说明未找到,不暴露索引结构与调试信息 |
典型使用场景
- 内部制度问答:查不到时必须明说,避免编造条款带来合规风险
- 面向客户的客服机器人:兜底时引导到工单或人工坐席,保住体验
- 低置信但相关:列出几条相近主题让用户自行缩小范围
- 效果归因:统计兜底触发率,判断是语料缺口还是检索链路劣化
- 灰度对比:兜底文案与阈值一起做 A/B,观察会话转人工率的变化
分层兜底逻辑
分层兜底逻辑
if not hits:
return FALLBACK_EMPTY # 无召回:说明没有相关内容
if best_score < LOW_CONF:
return FALLBACK_UNCERTAIN + suggest_topics(hits[:3]) # 低置信:给相近主题
return generate(query, hits) # 置信足够才生成兜底文案示例
兜底文案示例
未在知识库中找到与该问题直接相关的内容。
可以在这些相关主题中进一步查看:部署 / 索引 / 权限。
如果需要人工协助,请提交工单或在会话内转人工。兜底层级设计
| 情形 | 行为 | 观察指标 |
|---|---|---|
| 零召回 | 说明未找到,给热门主题入口 | 兜底率、二次提问率 |
| 低置信有内容 | 列出相近主题并请用户细化问题 | 细化后命中率 |
| 置信足够 | 正常生成并附引用 | 引用合规率 |
| 敏感或越权 | 拒绝并转人工 | 拒绝率、误拒投诉 |
低置信时强行生成是幻觉进入生产的主要通道:宁可多一次转人工,也不要把没有依据的内容包装成结论输出。