简介

在当前的大型语言模型 (LLM) 领域,正进行着一场关于上下文窗口大小的“军备竞赛”。我们迅速从 4,000 token 跨越到 128,000,甚至达到一百万 token。其假设很简单: 如果模型能一次性“看”完整本书、整个代码库或法律档案,它就应该能完美地理解这些内容。

然而,现实情况却有所不同。简单地扩大上下文窗口并不能保证鲁棒性。研究人员观察到了诸如“迷失在中间 (Lost in the Middle) ”的现象,即模型擅长从提示词的开头或结尾检索信息,但无法回忆起埋藏在中间的细节。此外,处理海量上下文在计算上非常昂贵,并且往往会引入降低推理能力的噪声。

那么,我们如何在不依赖庞大且笨重的上下文窗口的情况下,高效地处理大量文档呢?

这正是 SEGMENT+ 的切入点,这是一个由复旦大学和蚂蚁集团的研究人员提出的新颖框架。SEGMENT+ 不会强迫模型一口气吞下一整本小说,而是引入了一种结构化的方法,利用短上下文模型来分解、分析和综合信息。它模仿了一位一丝不苟的人类读者: 记笔记、引用证据,并在得出最终结论前过滤掉噪声。

在这篇文章中,我们将解构 SEGMENT+ 的工作原理,探讨为什么它的“证据与推理 (Evidence vs. Reasoning) ”方法改变了信息流的游戏规则,并查看那些显示其性能显著优于更大模型的实验结果。

长文本的挑战

在深入探讨解决方案之前,我们必须了解当前长文本处理方法的局限性。

RAG 和长上下文模型的局限性

传统上,处理超过模型限制的文本有两种方法:

  1. 检索增强生成 (RAG): 对文档建立索引,并根据用户的查询使用搜索算法找到相关的块。
  • *问题: * RAG 非常适合查找特定的事实,但在处理需要综合文本多个部分信息的“全局性”问题时表现挣扎。如果检索步骤错过了一个块,模型就永远看不到它。
  1. 长上下文扩展: 训练模型以处理更大的输入 (例如,通过位置内插) 。
  • *问题: * 在 Transformer 的原生实现中,注意力机制的计算量呈二次方增长。更关键的是,随着上下文的增加,“信噪比”会下降。模型很容易被无关的细节分散注意力。

智能体方法

第三种方法涉及使用 LLM 智能体 (Agents) 来管理记忆,按顺序阅读文档并决定记住什么。虽然很有前景,但之前的尝试 (如 MemGPT) 往往依赖于模型内在的规划和自发决策能力。这经常导致不受控制的推理过程,模型可能会卡住、忘记指令或生成不一致的格式。

SEGMENT+ 背后的研究人员认为,我们不需要无限的上下文或复杂的自主智能体。我们需要的是结构化的信息流控制

SEGMENT+ 方法论

SEGMENT+ 的核心理念是,长文本处理应该是一个两阶段的过程: 收集 (Gathering)推理 (Reasoning)

该框架旨在并行处理输入片段,提取结构化的“笔记”,过滤掉垃圾信息,然后合并剩余的高质量信息来回答问题。

图 1: 此图展示了 SEGMENT+ 如何利用短上下文模型处理长文档问答任务。过程始于为特定问题从文档中收集相关上下文。只有标记为 ‘keep’ (保留) 的笔记才会被用作推导最终答案的上下文,从而避免噪声。

如上图所示,该过程类似于侦探整理案件卷宗。系统扫描不同的片段 (阶段 1) ,创建笔记,决定哪些笔记是相关的 (保留 vs. 移除) ,然后进入综合阶段 (阶段 2) 得出答案。

让我们将其分解为具体的架构。

1. 结构化信息收集

SEGMENT+ 最具创新性的一点在于它处理读取数据的方式。它不仅仅是总结文本。对于文档的每个片段,模型被要求生成包含两个特定组件的结构化输出: 证据 (Evidence)推理 (Reasoning)

  • 证据: 这要求模型从文本中提取与问题直接相关的原始句子。这解决了“短依赖”问题——即明确陈述的事实。通过强制模型引用文本,该框架确保了精确度并减少了幻觉。
  • 推理: 这要求模型将上下文压缩为高级语义信息。它捕捉实体、事件和隐含意义。这解决了“长依赖”问题,即答案没有明确写出但必须推断出来的情况。

这种结构被形式化为一个 JSON 对象:

()\n\\mathit { n o t e } _ { i } = { ^ { \\ast } E v i d e n c e ^ { ; \\ast } : ^ { \\infty } , ^ { \\ast } R e a s o n i n g ^ { ; \\ast } : ^ { \\infty } }\n()

通过分离这两个流,模型可以保持精确的细节 (证据) ,同时建立对叙述的压缩理解 (推理) 。

2. 过滤模块 (降噪)

在长文档中,并非每一段都与特定问题相关。如果你问“谁杀了怀特先生?”,描述天气或其他角色背景故事的章节就是噪声。

如果你把这些噪声输入给标准的 LLM,它可能会感到困惑或试图产生幻觉般的联系。SEGMENT+ 引入了一个过滤模块

在为所有片段生成笔记后,验证步骤会将每个笔记标记为 保留 (Keep)移除 (Remove)

  • 如果一个片段产生的笔记说“未找到相关信息”,它就会被丢弃。
  • 如果一个片段产生了低置信度的推理且没有证据支持,它会受到仔细审查。

这确保了只有信息密集型的内容才能进入下一阶段。

3. 批量合并与作答

一旦收集了相关的笔记,它们可能仍然太大而无法适应最终的上下文窗口。SEGMENT+ 通过批量合并 (Batch Merging) 过程来处理这个问题。

图 2: SEGMENT+ 提出的框架包含三个主要组件。首先,收集模块为给定查询收集结构化信息,区分直接、准确的上下文 (证据) 与模型潜在的误导性分析 (推理) 。接下来,过滤模块过滤掉噪声片段以进行密集信息管理。最后,考虑到合并语言模型的上下文窗口限制,我们将这些信息分批合并,生成长度合适且针对最终作答优化过的上下文。

如图 2 所示,流程如下:

  1. 输入分段: 长文本被分割成块。
  2. 并行处理: 处理每个块以生成 证据/推理 JSON。
  3. 过滤: 移除无关的笔记。
  4. 合并: 剩余的笔记被分组成批。模型连接“证据” (以保留确切事实) 并综合“推理” (以进一步压缩叙述) 。
  5. 迭代: 重复此合并步骤,直到总信息量符合目标上下文窗口。
  6. 最终问答: 压缩后的高密度上下文被输入模型以生成最终答案。

这种“分而治之”的策略使得短上下文模型 (如标准的 4k 或 8k Llama 模型) 能够有效地处理任意长度的文档。

实验结果

研究人员将 SEGMENT+ 与强大的基线模型进行了测试,包括 GPT-4 (128k 上下文) 、标准 RAG (检索增强生成) 以及像 MemGPT 和 Pearl 这样的智能体方法。

评估涵盖了两个主要领域: 长文档问答大海捞针 (Needle-in-a-Haystack) 测试。

长文档问答

使用的基准测试包括来自 Scrolls (如 Qasper, NarrativeQA) 和 Longbench (如 HotpotQA, Musique) 的数据集。这些数据集测试了从在科学论文中查找特定事实到理解电影剧本中复杂故事情节的方方面面。

结果具有统计学意义:

表 2: 各模型和数据集的主要结果对比。括号中的上下文窗口是指为了对比而限制的工作窗口大小。每列中的最高分以粗体显示。分数使用 F1 指标衡量 ‘Auto’ 列,而 ‘GPT4’ 列反映了 GPT-4 的评估分数。SEGMENT+ 相对于其他基线取得了最高的性能,唯一的例外是 Mistral-7B,它在 16k 上下文模型的设置中表现相当。它在表现上明显优于 MemGPT 和 Pearl 等代理类基线。

结果的关键要点:

  • 击败巨头: SEGMENT+ (使用 4k 上下文限制) 持续优于可以使用 16k 甚至 128k token 的“原生 (Vanilla) ”长上下文模型。
  • 赋能小模型: 当应用于像 Vicuna-7B 或 Mistral-7B 这样较小的开源模型时,SEGMENT+ 使它们能够达到与更大的专有模型相当的性能水平。
  • 智能体稳定性: 与经常无法返回有效响应或陷入循环的 MemGPT 相比,SEGMENT+ 显示出高度的稳定性和鲁棒性。

大海捞针 (Babilong)

“大海捞针”测试涉及将一个特定的事实 (针) 隐藏在大量无关文本 (大海) 中,并要求模型将其检索出来。为了增加难度,研究人员使用了 Babilong 基准测试,这要求模型不仅要找到事实,还要对其进行推理。

图 3: Babilong (Kuratov et al., 2024) 测试性能对比。X 轴代表输入长度。Y 轴显示 Babilong 任务上的精确匹配 (EM) 性能。GPT-4 的结果取自 Babilong,每个任务包含 25 个项目,与 Babilong 设置一致。原生模型和 SEGMENT+ (GPT-4) 的平均准确率 (Avg acc) 表示所有彩色单元格的平均得分。然而,对于 SEGMENT+ (ChatGPT) 和 SEGMENT+ (Mistral-7B),我们计算了两个平均得分: 前一个分数代表有效上下文的平均值以便与原生模型对比,后一个分数表示所有单元格的平均值。绿色表示性能较高,红色表示性能较低。SEGMENT+ 提升了整体准确率,并在上下文长度增加时保持性能稳定。

上面的热力图讲述了一个引人注目的故事。

  • X 轴代表文档的长度 (最高 128k token) 。
  • Y 轴代表问题的复杂性 (qa1 到 qa5) 。
  • 绿色表示高准确率; 红色表示失败。

标准模型 (顶行) 随着文本长度增加 (向右移动) 或复杂性增加 (向下移动) ,性能迅速下降。 然而,SEGMENT+ (底行) 保持绿色。 即使在 128k token 时,SEGMENT+ 也保持了近乎完美的检索和推理能力。值得注意的是, 搭载 SEGMENT+ 的 ChatGPT 实际上比原生 GPT-4 平均高出 5% 以上

为什么它有效? (消融实验)

成功是归功于过滤吗?还是归功于结构化的“证据/推理”格式?研究人员进行了消融实验来找出答案。

图 4: 消融研究结果。‘No Label’ 指没有信息过滤的情况,‘No Structure’ 指没有结构化提示的情况,‘Normal’ 表示模型在既没有过滤也没有结构化提示的情况下运行。结果表明这两个设计要素都对最终性能做出了贡献。

上面的条形图比较了完整的 SEGMENT+ 方法与移除了标签 (过滤) 的版本以及移除了结构化 JSON 提示的版本。

  • No Label (无标签) : 没有过滤,性能下降,因为噪声片段污染了最终上下文。
  • No Structure (无结构) : 没有严格的 证据/推理 分离,性能下降,因为模型难以平衡具体细节与一般总结。

这两个组件都是必不可少的。结构确保捕获正确类型的信息,而过滤器确保只保留相关的信息。

片段大小分析

最后,块的大小重要吗?研究人员测试了从 1,000 到 3,000 token 的片段大小。

图 5: 片段大小结果。长文档问答任务的平均性能在不同片段大小下保持稳定,在片段大小为 3000 时达到最佳结果。

结果表明性能相对稳定,在 3,000 token 左右达到峰值。较大的片段允许模型捕获更多的局部上下文而不会导致碎片化,同时也足够小以进行高效处理。

结论与启示

SEGMENT+ 论文为 AI 开发的未来提供了一个至关重要的见解: 架构和数据流比单纯的模型规模更重要。

通过承认当前 LLM 的局限性——特别是它们无法在海量上下文中保持注意力——研究人员构建了一个能够利用模型优势并规避其弱点的框架。

其意义是重大的:

  1. 成本效益: 我们可以使用更便宜、更快的短上下文模型来执行复杂的长文档分析。
  2. 可解释性: 由于系统生成中间“笔记”,人类可以在看到最终答案之前,确切地检查模型提取了什么证据以及它是如何推理的。
  3. 可扩展性: 这种方法理论上可以扩展到无限长度,因为“分批合并”过程可以无限继续,而上下文窗口总会遇到硬性限制。

SEGMENT+ 证明了,要阅读一个图书馆,你不需要更大的大脑;你只需要一个更好的笔记系统。