Appearance
11.1.3 什么时候应该只返回检索结果,不做生成?
先给结论:当系统无法稳定保证证据充分、回答可控或风险可接受时,更稳的做法是只返回检索结果而不做生成。生产环境里,“不生成”往往是更可靠的选择。
很多团队默认认为:
- 有模型就应该生成答案
但在真实场景里,生成回答不是总是更好。因为生成会带来:
- 解释性好,但风险更高
而检索直出则更像:
- 稳定、保守、可审计
一、证据不足或不稳定时
如果你发现某一类问题:
- 召回结果不稳定
- 证据覆盖不完整
- 证据质量难以保证
这时生成回答反而更容易引入:
- 外推
- 猜测
更稳的做法是:
- 只展示检索结果,提示用户自行判断
二、强审计或高风险场景
在以下场景里,用户往往更需要:
- 原始证据
- 可追溯来源
例如:
- 合同条款核查
- 法规政策解读
- 内控合规场景
在这些场景里,生成回答可能增加理解负担和风险。检索直出更安全。
三、问题是精确定位型需求
有些问题用户的目标是:
- 找到某条具体资料
- 定位某个字段或条款
- 找到某个版本的文档
这类问题更像搜索任务,不是“解释任务”。这时生成回答意义不大,反而可能:
- 模糊了用户的定位目标
四、系统仍处于不稳定阶段
如果你的系统还在早期迭代,或刚上线不久,常见特征是:
- 评测集还不稳定
- 误差归因还没建立
- 线上反馈波动很大
这时大范围生成回答会加剧风险。更稳的方式是:
- 保守输出
- 逐步扩大生成覆盖范围
五、需要避免用户“盲信”的场景
有些场景里,用户容易把生成回答当成最终结论,而忽略:
- 证据本身的条件
- 适用范围
- 例外条款
这时直接展示证据,反而能降低误用风险。
一个实用的判断框架
你可以用下面几个问题做快速判断:
- 证据是否稳定可召回?
- 证据是否足够完整?
- 这个场景的错误代价是否高?
- 用户是否需要看到原文做判断?
- 当前系统是否已建立可靠评测闭环?
只要其中任何一条答案是“否”,就应当认真考虑:
- 是否先返回检索结果
直出模式的常见形态
在生产系统里,“只返回检索结果”通常不会是简单地把文档列表丢给用户,而会配合一些最小的组织方式,比如:
- 按相关性排序的证据片段
- 显示来源和版本信息
- 给出关键段落高亮
- 提示“未进行生成总结”
这样既保守,又不会让用户无从下手。
一个最小切换逻辑示意
python
def should_generate(case):
if case["evidence_insufficient"]:
return False
if case["high_risk_domain"]:
return False
if case["retrieval_unstable"]:
return False
return True这个示意的重点是:
- 生成不是默认
- 生成是有条件的
一句话总结
当证据不足、风险高或系统尚不稳定时,直接返回检索结果往往更安全、更可控。生产系统里,“不生成”经常是最稳的策略之一。