ARTICLE · 1017354
128K上下文,100K文档还是答错:大模型的长文本困局
三个边界:窗口、注意力跨度与数学约束
上下文窗口,就是模型一次推理能塞进去的最大 token 数量,硬上限。这个上限不是随便定的,位置编码方式、Transformer 层结构、训练数据分布都在里面起作用。超出的部分?直接截断或扔掉。
注意力跨度,指模型在可见范围里能有效建立并维持语义关联的距离。序列一长,注意力权重会逐渐缩到局部,远处 token 受到的关注急剧下降。这俩不是一回事。
数学边界,则来自算法复杂度、硬件显存和计算效率。标准 Transformer 的自注意力是 O(n²):序列长度翻倍,计算量翻四倍。128K tokens 的注意力矩阵,几百 GB 显存都打不住。上下文越长,Attention 计算越重,KV Cache 越占显存,模型还越容易忽略中间信息或被无关内容干扰。
还是那个比喻:上下文窗口是舞台大小,注意力跨度是演员的专注范围。窗口决定看到多少,跨度决定能用好多少。那些号称支持 128K 上下文的模型,处理 100K 长文档时,连开头内容都能答错——三个边界一叠加,标称窗口还能信几分?
窗口越大,长依赖任务未必越强
第三方基准 LooGLE 拿近 800 个超长文档、6000 个任务专门考长文本模型,其中长期依赖任务有 5 种:理解与推理、计算、时间线重排、多信息检索和摘要。结果呢,商业模型平均准确率约 40%,开源模型约 10%。四成和一成,这成绩单怕是拿不出手。
背后的机制还是出在注意力结构上。上下文一长,Attention 计算和 KV Cache 占用的显存越来越重,模型还容易忽略中间信息,或被无关内容干扰。注意力权重在长序列里会局部化,对远处 token 的关注度衰减得厉害。这里还得搬出那个比喻:窗口是舞台大小,跨度是演员的专注范围。窗口决定看到多少,跨度决定能用好多少。所以说,那些号称 128K 窗口的模型,看 100K 文档还会答错开头内容,这更像注意力跨度没跟上窗口长度,而不是窗口不够大。
怎么判断长文本能力?别只看窗口数字
怎么判断长文本能力?别被宣传数字带着走。窗口是架构上固定的硬限制,由位置编码、Transformer 层结构、训练数据分布共同决定;注意力跨度则是模型在可见范围内有效维持语义关联的距离。一个是硬指标,一个是软实力。宣传页上大概率只写前者,后者得靠评测去猜。
长文本能力从来不是单一参数。它更像模型结构、训练数据、推理系统和评估方式一起升级之后的结果。对你我这样的使用者来说,短程检索、查个单点信息,长窗口大概率够用;可要是跨文档整合多处信息这种长依赖任务,那就另说了。LooGLE 基准里那近 800 个超长文档、6000 个任务,5 种长期依赖任务覆盖理解推理、计算、时间线重排、多信息检索和摘要,商业模型平均准确率只有 40%,开源模型只有 10%。当前模型的长依赖能力和上下文窗口长度并不成正比——下次再看到“128K”的大字,先问问它 LooGLE 长依赖考了多少分。
倒也有乐观的理由:窗口继续扩大、训练数据再优化,模型说不定会学会怎么利用长窗口,未来表现可能改善。可眼下评测结果摆在那里,“窗口大≠理解力”还是主线。要我说,判断长文本能力,与其盯着宣传页上的数字,不如直接看第三方基准里长依赖任务的实测分数。

你被“128K”宣传坑过吗?在长文档任务中翻过什么车?评论区聊聊。