Appearance
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 再好也很难完全补救。
更准确的理解是:
- 任务差异会同时影响检索、精选和上下文组织
一句话总结
检索式问答、总结式问答、对比式问答的上下文组织不能一样,因为它们分别追求直接命中、整体覆盖和结构对齐。任务目标不同,决定了什么材料该优先保留、怎么排序、怎么分组,以及最终应该怎样送给模型。