Skip to content

11.1.3 什么时候应该只返回检索结果,不做生成? ​

先给结论:当系统无法稳定保证证据充分、回答可控或风险可接受时,更稳的做法是只返回检索结果而不做生成。生产环境里,“不生成”往往是更可靠的选择。

很多团队默认认为:

  • 有模型就应该生成答案

但在真实场景里,生成回答不是总是更好。因为生成会带来:

  • 解释性好,但风险更高

而检索直出则更像:

  • 稳定、保守、可审计

一、证据不足或不稳定时 ​

如果你发现某一类问题:

  • 召回结果不稳定
  • 证据覆盖不完整
  • 证据质量难以保证

这时生成回答反而更容易引入:

  • 外推
  • 猜测

更稳的做法是:

  • 只展示检索结果,提示用户自行判断

二、强审计或高风险场景 ​

在以下场景里,用户往往更需要:

  • 原始证据
  • 可追溯来源

例如:

  • 合同条款核查
  • 法规政策解读
  • 内控合规场景

在这些场景里,生成回答可能增加理解负担和风险。检索直出更安全。

三、问题是精确定位型需求 ​

有些问题用户的目标是:

  • 找到某条具体资料
  • 定位某个字段或条款
  • 找到某个版本的文档

这类问题更像搜索任务,不是“解释任务”。这时生成回答意义不大,反而可能:

  • 模糊了用户的定位目标

四、系统仍处于不稳定阶段 ​

如果你的系统还在早期迭代,或刚上线不久,常见特征是:

  • 评测集还不稳定
  • 误差归因还没建立
  • 线上反馈波动很大

这时大范围生成回答会加剧风险。更稳的方式是:

  • 保守输出
  • 逐步扩大生成覆盖范围

五、需要避免用户“盲信”的场景 ​

有些场景里,用户容易把生成回答当成最终结论,而忽略:

  • 证据本身的条件
  • 适用范围
  • 例外条款

这时直接展示证据,反而能降低误用风险。

一个实用的判断框架 ​

你可以用下面几个问题做快速判断:

  1. 证据是否稳定可召回?
  2. 证据是否足够完整?
  3. 这个场景的错误代价是否高?
  4. 用户是否需要看到原文做判断?
  5. 当前系统是否已建立可靠评测闭环?

只要其中任何一条答案是“否”,就应当认真考虑:

  • 是否先返回检索结果

直出模式的常见形态 ​

在生产系统里,“只返回检索结果”通常不会是简单地把文档列表丢给用户,而会配合一些最小的组织方式,比如:

  • 按相关性排序的证据片段
  • 显示来源和版本信息
  • 给出关键段落高亮
  • 提示“未进行生成总结”

这样既保守,又不会让用户无从下手。

一个最小切换逻辑示意 ​

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

这个示意的重点是:

  • 生成不是默认
  • 生成是有条件的

一句话总结 ​

当证据不足、风险高或系统尚不稳定时,直接返回检索结果往往更安全、更可控。生产系统里,“不生成”经常是最稳的策略之一。