Skip to content

8.2.1 检索式问答、总结式问答、对比式问答的上下文组织为什么不能一样? ​

先给结论:因为这三类任务要解决的核心问题不同。检索式问答更关心“直接回答当前问题”,总结式问答更关心“尽量覆盖整体内容”,对比式问答更关心“把不同来源的证据放到可比较的结构里”。任务目标不同,最优的上下文组织方式自然也不同。

如果你把它们都用同一套“前几条候选直接拼进去”的方式处理,结果通常会出现两类问题:

  • 该强调精确命中的任务,被过多背景干扰
  • 该强调结构完整的任务,被切碎成零散片段

一、检索式问答需要什么样的上下文 ​

检索式问答,通常是在问:

  • 一个定义是什么
  • 一个参数怎么配置
  • 某个流程的下一步是什么
  • 某条规则是否成立

这类问题的特点是:

  • 目标答案往往比较集中
  • 更依赖直接证据
  • 不需要太多铺垫

所以它的上下文组织通常应该偏向:

  • 直接证据优先
  • 相关性排序更严格
  • 少量必要背景
  • 尽量减少噪声和重复

如果这类问题给了太多材料,模型就容易:

  • 绕远
  • 用背景替代直接答案
  • 引用边缘相关内容

二、总结式问答需要什么样的上下文 ​

总结式问答,通常是在问:

  • 这篇文档主要讲了什么
  • 这个方案有哪些核心变化
  • 这几页内容应该怎么概括

这类问题的特点是:

  • 不只要一个点
  • 更关心整体覆盖
  • 需要看到多个部分之间的关系

所以它的上下文组织通常应该偏向:

  • 覆盖多个关键部分
  • 保留章节或主题结构
  • 避免只保留前几条最相关块
  • 必要时先做聚合或章节级组织

如果你用事实问答的方式处理总结任务,系统就很容易:

  • 只抓住局部高分块
  • 总结得偏窄
  • 漏掉后面但同样重要的章节

三、对比式问答需要什么样的上下文 ​

对比式问答,通常是在问:

  • 文档 A 和文档 B 有什么不同
  • 新旧版本改了哪些规则
  • 方案 1 和方案 2 的优缺点分别是什么

这类问题的关键,不只是“找到相关材料”,而是:

  • 把不同来源的证据放在可比较的结构里

所以它的上下文组织通常应该偏向:

  • 按来源分组
  • 按字段或主题对齐
  • 尽量保持两边材料粒度一致
  • 避免把不同来源内容混成一串

如果把对比任务也当成普通问答来做,常见后果是:

  • 模型只围绕其中一边回答
  • 对比维度混乱
  • 新旧版本内容互相穿插,读不出边界

一个更直观的对比 ​

可以把这三类任务理解成三种不同需求:

  • 检索式问答:找最直接的答案
  • 总结式问答:看整体都说了什么
  • 对比式问答:把两边放在一起看差异

它们对应的上下文策略自然也不同:

  • 检索式问答偏精选
  • 总结式问答偏覆盖
  • 对比式问答偏对齐

一个最小示意 ​

python
if task_type == "fact_qa":
    context = select_top_evidence(candidates, max_chunks=4)
elif task_type == "summary":
    context = group_by_sections(candidates, max_tokens=3000)
elif task_type == "comparison":
    context = align_by_source_and_topic(candidates)

这段代码想说明的是:

  • 同一批候选,不同任务下的组织方式不该一样

一个常见误区 ​

很多人会把任务差异理解成:

  • 只是 Prompt 里问法不同

这不够完整。Prompt 当然重要,但如果上下文本身就组织错了,Prompt 再好也很难完全补救。

更准确的理解是:

  • 任务差异会同时影响检索、精选和上下文组织

一句话总结 ​

检索式问答、总结式问答、对比式问答的上下文组织不能一样,因为它们分别追求直接命中、整体覆盖和结构对齐。任务目标不同,决定了什么材料该优先保留、怎么排序、怎么分组,以及最终应该怎样送给模型。