“迷失在中间”(lost in the middle)效应由 Liu 等人在 2023 年命名。实验设置很简单:将单个包含答案的文档放在 10、20 或 30 个文档的列表中,并要求前沿模型根据其进行回答。准确率随金标准文档位置的变化曲线呈 U 形——在第 1 位时很强,在最后一位时也很强,但中间部分会出现塌陷。名义上具有 16K 窗口的模型在回答时的表现,就好像它只有一个 4K 窗口且中间存在一个盲区一样。
按位置计算的指标可以弥合这一差距。与其针对整个检索集计算召回率,不如将答案准确率计算为金标准分块在组合提示词中位置的函数。按金标准分块所属槽位(顶部、中间、底部)对提示词进行分组,并跟踪每个组的准确率。如果中间组的准确率比顶部和底部组低 12 个百分点,那么 U 形曲线就在你的流水线中发挥作用,而你的重排序器正在向模型提供它无法读取的槽位。
位置感知重排序(Position-aware reranking)。在组装提示词时,停止仅按检索评分对段落进行排序。一旦你从重排序器获得了前 K 个结果,就将得分最高的段落放在高注意力槽位——紧邻底部的用户问题,或者直接放在顶部的系统提示词之后。得分较低的段落填充中间位置。这是组装器中的一行代码更改,它将平淡的“按分数排序”转换为“按注意力加权的槽位优先级交叉排列”。它不需要重新训练,也不会改变检索协议。
评估套件中的按位置召回指标。在评估套件中添加合成注入基准测试,将金标准分块强制放入从 1 到 K 的每个位置,并报告每个槽位的准确率。这正是 Liu 等人的设置,只不过适配到了你的语料库。它能捕捉到导致中间频带性能退化的模型升级,以及悄悄将权重转移到盲区的重排序器更改。它在 CI 中运行;成本比检索消融实验还要低。
让包含答案的段落靠近问题的提示词结构。最强大的廉价方案是结构性的:将“系统提示词 + N 个段落 + 用户问题”更改为“系统提示词 + 用户问题 + N 个段落 + 重述问题”。现在,问题锚定了上下文的两端,模型的强注意力槽位覆盖了包含答案的区域,而不是覆盖样板文本。 “重述问题”模式出现在生产环境的 RAG 架构中,是因为它有效,而不是因为它优雅。
校准机制。一个更具侵入性的选项是校准步骤,它在推理时调整模型的注意力分布以抚平 U 形曲线。最近的工作——“Found in the Middle”系列研究——在不进行重新训练的情况下校准位置注意力偏置,并报告在长上下文 RAG 任务中获得了高达 15 个百分点的提升。这比其他方法更偏向研究性质,但它指明了问题的正确方向:这种偏置是模型注意力的属性,推理栈可以对其进行修正,而不是提示词团队必须永远设法绕过的属性。