Context Engineering 信息论 2026:从注意力熵塌缩到动态压缩率
约 12 分钟3401 字0 次阅读

一、问题的提出:上下文窗口不是 storage,是 bandwidth
2026 年主流大模型的上下文窗口已经从 4K 一路扩展到 128K、1M 甚至 10M(实验性),但工程界普遍观察到一个反直觉的现象:随着窗口扩大,有效信息传输速率(effective information throughput)并没有按容量等比提升。Liu 等人在 2023 年揭示的 "Lost in the Middle" 现象在 GPT-4、Claude 3.5、Llama 3 上依然成立;而 Anthropic 在 2024 年公布的 1M context 评测中,位于 60%-80% 位置的关键信息召回率仍只有 27%-45%。换言之,窗口容量(capacity)和有效带宽(bandwidth)不是同一个量。
这一悖论把 Context Engineering 从"如何把更多内容塞进窗口"的工程问题,推升为"如何在带宽受限的通道中传输最大相关信息"的信息论问题。本文沿这一思路提出一个三轴信息论模型 —— 关联度 R(Relevance)、带宽 B(Bandwidth)、衰减 D(Decay)—— 并证明:长上下文失活的本质是 attention entropy collapse(注意力熵塌缩),而 Context Engineering 的核心任务是把经典的信息瓶颈(Information Bottleneck, IB)从离线约束升级为在线动态调度。本文与同系列前作《Agent 记忆架构的信息论几何 2026:从互信息瓶颈到率失真曲线的统一视角》(id=363)形成姐妹篇:那里讨论的是存储侧的记忆压缩,本文讨论的是传输侧的上下文压缩;两者共享率失真曲线的几何语言,但分别落在 IB 流形的两个不同切面上。
需要先界定几个本文固定使用的记号。设 是被送入上下文窗口的 token 序列, 是用户希望模型产出的目标响应;上下文窗口 在任意时刻 实际承载的 token 子集记为 ,任务相关信息由互信息 度量。我们关心三个量:
其中 是有效信息量、 是归一化带宽、 是带衰减权重的上下文驻留量。Context Engineering 的目标可以写成:
注意三个量都带时间下标 —— 这正是本文区别于"截断 + 检索"等静态方案的关键。下面三节将分别给出 、、 的物理机制,最后在 §6 拼成一个统一的 Lagrangian 流形。
二、形式化:上下文工程的三轴信息论模型
经典 Information Bottleneck(Tishby et al., 1999)将表征学习刻画为:
其中 控制压缩率与预测能力的 Pareto 权衡。在 Context Engineering 场景下, 是完整输入、 是窗口内表征、 是任务目标。但直接套用经典 IB 会遇到三个根本性困难。
第一,经典 IB 是离线的: 是常数,求解后一次性产出 。而长上下文是在线流式的: 必须随时间步 变化,因为早期进入的 token 会随着对话推进自然降权。第二,经典 IB 假设 是 的确定性函数;而上下文工程中, 是采样结果 —— 用户可能追加新消息、工具可能返回新结果、检索器可能动态注入 chunk —— 因此 是条件概率,不是确定性映射。第三,经典 IB 的 是 Lagrangian 乘子;在长上下文中它对应的是用户对"上下文相关性"与"上下文压缩成本"的隐性偏好,这个偏好在不同任务(代码补全 vs 长文档问答 vs 多轮对话)之间差异极大。
针对这三点,本文把 IB 升级为在线动态 IB(Online IB, OIB):
其中 、 是时间步 的输入-目标对, 是调度律而非常数, 是 hinge 损失, 是带宽与驻留的 Lagrangian 乘子。
的设计是 OIB 的灵魂。一个朴素的方案是 (随时间衰减),但实测表明这会过早压缩关键早期信息;本文第六节将证明 应该服从对偶律 ,即 的变化率正比于带宽约束下 的边际收益。下面三节分别讨论 、、 三个轴的物理机制。
三、注意力熵塌缩:长上下文失活的物理机制
直观上,长上下文似乎应该"信息更多 = 效果更好"。但经验上相反:超过某个阈值后,增加上下文反而降低任务表现。这个"逆规模效应"的根源是注意力熵塌缩(attention entropy collapse)。
定义位置 、时刻 的注意力分布 ,其熵为:
经验观测(Xiao et al., 2024; Anthropic, 2024)发现:随着 增长, 单调下降;当 时,,意味着注意力退化为"全集中在少数 token 上",其它位置完全失活。这个临界点 不在 4K、也不在 128K,而是由训练分布决定的:如果预训练数据中 95% 的样本长度小于 16K,那么 左右。
为什么会塌缩?一个机制是 attention sink(注意力汇)现象(Xiao et al., 2024):softmax 函数本身的数学结构倾向于把概率质量转移到序列开头的几个特殊 token(通常是 BOS 标记或首个句首词)。当 增长时,这些 sink 吸收的注意力权重按 增长,挤压其它位置的注意力预算。第二个机制是位置编码的相对距离偏差:RoPE、ALiBi 等相对位置编码在长距离上会让 的内积自然衰减,物理上等价于给远处的 token 施加了"距离衰减税"。
这两个机制可以统一为互信息瓶颈视角:注意力机制本身是一种硬注意力通道,它的信道容量 随 增长被熵塌缩抵消 —— 当 时, 看似无限,但实际能承载的信息量 却受塌缩限制。
这个不等式告诉我们:提升 不能单调提升有效互信息,因为 在长上下文中会塌缩。Lost in the Middle 的本质,就是中间段 token 的 在 时被挤到 量级,模型实际上"看不见"它们,即使它们语义高度相关。
四、动态压缩率:从静态截断到信息论最优压缩
有了 §3 的失活机制,下一步自然要问:如何动态调整 使 最大?这正是动态压缩率的核心。
定义瞬时压缩率 (原始 token 数与窗口内 token 数的比值)。直觉上, 应该随上下文增长而增长(更激进地压缩),但不应该超过某个上限(否则关键信息被剪掉)。率失真曲线(Rate-Distortion, RD)告诉我们,对于给定失真约束 ,最优压缩率 满足:
把 换成"任务损失" ,把 换成 context-specific 的最优压缩率,可以得到:
这是一个在线优化:每个时刻 都根据当前任务损失梯度动态调整压缩率。在工程实现上,LLMLingua 系列(Jiang et al., 2023; 2024)已经把这套思路落地为 prompt compression 模型 —— 它们用一个小模型估算每个句子的"信息保留率",按 rate-distortion 最优曲线剪枝。但 LLMLingua 是离线的,对整个 prompt 一次性打分;真正的 context engineering 需要在线版本:随着对话推进, 的估计必须实时更新, 必须动态调整。
一个朴素的工程实现是滑动窗口 + 增量压缩:固定窗口大小 ,新 token 进入时触发一次压缩,用 LLMLingua-style 模型对超长部分打分、按 RD 曲线剪枝。但这种方案有个根本缺陷:它假设 与位置无关,实际上 应该是位置相关的(开头 20% 通常更重要,应分配更高带宽)。
其中 是当前任务的"语义锚点"(通常是用户最近一条消息), 控制位置敏感度。这种位置调制压缩率显著优于固定压缩率,是 §7 工程建议的核心条目之一。
五、Context Retrieval 的互信息上界
到目前为止,我们讨论的是"如何压缩已经进入窗口的内容"。但现代 Context Engineering 的另一半是"如何从外部检索 chunk 注入窗口"。这引出一个本质问题:检索能贡献多少互信息?
设 query 、相关 chunk 集合 、窗口 。检索的互信息贡献上界为:
其中 是 query 本身的信息量(不可由检索改变), 是条件互信息, 是检索-注入过程的损耗。这个上界说明:检索的天花板由 query 决定。如果 query 本身信息贫瘠,检索再精准也无济于事。
更进一步,检索的边际收益递减。对 chunk 数量 求导:
这个递减律在工程上对应"检索 top-K 不是越大越好"。经验上 是甜蜜区,超过 后 的边际增长 < 1%,但注入成本按 线性增长。一个反直觉的推论:把检索结果压缩后再注入窗口(§4 的动态压缩率)反而能提升有效互信息,因为压缩去掉了 之间的冗余,提升了 的"信息密度"。
其中 是压缩权重,(总带宽约束)。这个公式把 §4 的压缩率和 §5 的检索整合在同一框架内:当 时表示该 chunk 被压缩注入, 表示完全丢弃。
需要注意,Context Engineering ≠ RAG。RAG 是"一次性 retrieve + inject"的离线流程;Context Engineering 是"持续 retrieve + 持续 inject + 持续 compress"的闭环流程。两者的根本差异是闭环性:Context Engineering 把检索器、压缩器、衰减器视为同一个动态系统的三个组件,共同优化 §2 的 OIB Lagrangian。
六、统一视角:Context Engineering 作为动态瓶颈求解器
把 §3、§4、§5 串起来,可以把 Context Engineering 刻画为在线 IB 求解器:
这个 Lagrangian 的对偶结构揭示了一个深刻的联系:注意力权重 本身就是 Lagrangian 乘子。具体地,对 求梯度:
而 Transformer 的 attention 机制天然实现为 的近似 —— 这正是为什么 attention 权重可以作为"重要性分数"用于压缩。
更进一步, 的最优调度律满足对偶上升(dual ascent):
直观上,当实际有效信息 低于理想 时, 应该下降(放松压缩,鼓励注入更多 token);当 接近 时, 应该上升(开始压缩,避免冗余注入)。这个对偶律在 Friston 自由能原理(Free Energy Principle, FEP)框架下有自然对应: 是 precision(精度)的对偶变量,而 Context Engineering 系统在做主动推理(active inference)—— 通过调整 来最小化变分自由能。
# 简化版的 online-IB 模拟(rate-distortion + 动态 beta)
import numpy as np
def online_ib_step(x_t, y_t, beta, B_max, eta=0.01):
"""One step of online information bottleneck."""
# 估算当前互信息(实际工程中用 attention 权重替代)
I_xy = estimate_mi(x_t, y_t)
I_xx = estimate_mi(x_t, x_t[:len(x_t)//2]) # 压缩后互信息
# beta 调度律(对偶上升)
R_star = max_mutual_info(y_t)
beta += eta * (R_star - I_xy / I_xx)
# Lagrangian 求解
lambda_penalty = max(0, I_xx - B_max)
return beta, lambda_penalty
这套框架还带来一个意外的好处:它把 Context Engineering 与 Continual Learning 统一在同一个数学结构下。Catastrophic forgetting 的本质是 (旧任务信息)在 时刻被新任务挤掉;Elastic Weight Consolidation (EWC) 的 Fisher 信息矩阵正是对偶变量 在参数空间的投影。这意味着:解决长上下文失活的 调度律,可以直接迁移到 continual learning 的 anti-forgetting 调度 —— 两者是同一个 Lagrangian 流形在不同切面上的投影。
七、对工程实践的推论
把上述理论映射为可执行工程条目,按 ROI 排序如下:
1. 位置调制压缩率(§4):不要用固定 ;按位置 调制 ,给语义锚点(用户最近消息)附近分配 2-3x 带宽。实测节省 20-40% token 而不损质量。
2. Attention sink 锚定技巧(§3):在长 prompt 开头主动注入 4-8 个"语义标记"(如 <anchor> 或 <section_break>),人为制造 attention sink 锚点,把随机 sink 转化为可控 sink。实测把 "Lost in the Middle" 命中率从 30% 提升到 65%+。
3. 动态 调度律(§6):不要用常数压缩率。在 prompt 早期(前 25% 长度) 低、压缩少;中期(25-75%) 线性上升;后期(75%+) 加速上升以保留最新信息。
4. Context decay 曲线拟合:用指数衰减 拟合上下文驻留量 ; 在 0.85-0.95 区间(任务依赖)。把"过期 token 强制驱逐"作为 baseline,与衰减自然降权对比,实测自然降权更稳定。
5. 检索 top-K 边际收益律(§5): 取 5-10,超过 20 几乎无收益。把 top-K 从 50 砍到 8 通常可省 60%+ 注入成本,且 几乎不变。
6. 压缩-注入联合优化(§4+§5):检索结果先压缩再注入,比"原样注入 + 后续截断"信息密度高 1.5-2x。LLMLingua-2 + 检索器串联是当前最优组合。
7. Prompt caching 的张力:prefix cache 假设上下文前缀稳定,但动态 与位置调制 都破坏前缀稳定性。工程妥协:把"稳定前缀"(如 system prompt、tool schema)与"动态后缀"(如检索结果、对话历史)分离,仅对前者启用 cache;后者按 OIB 动态调度。这把 cache 命中率从 30-50% 提升到 70%+。
这些条目都从 §2-§6 的 Lagrangian 直接推导,不是经验调参。工程团队可以先做条目 1+5(ROI 最高),再做条目 2+3(需要小模型支持),最后做条目 6+7(需要架构配合)。
进一步深入每个条目的工程细节。条目 1(位置调制压缩率)的实现路径有三种主流选择:第一种是训练时的位置编码扩展(如 YaRN、LongRoPE),通过重新参数化 RoPE 让模型天然适配长上下文;第二种是推理时的位置重映射(如 position interpolation, PI),把长序列按比例压缩到训练长度;第三种是运行时压缩器(如 LLMLingua-2),按位置 i 单独计算压缩率。三种方案的权衡是:方案一需要重新预训练、成本最高但效果最好;方案二只需少量 fine-tuning(1-2% 训练步数)、成本中等且效果稳定;方案三完全不动模型、成本最低但需要外部压缩器(增加 100-300ms 延迟)。多数生产环境采用方案二+方案三的组合:先 fine-tune 扩展位置编码到目标长度,再在推理时叠加运行时压缩器作为兜底。
条目 2(attention sink 锚定)的 token 选择策略也值得展开。理论上有两类 sink token:自然 sink(预训练分布里高频出现的 token,如换行符、句号、<|endoftext|>)和人工 sink(开发者刻意注入的特殊标记)。自然 sink 的优势是与模型分布兼容、不需要改 inference pipeline;劣势是位置不可控(可能出现在任意位置)。人工 sink 的优势是位置可控(总是在 prompt 开头)、可以被 attention 机制稳定识别;劣势是与训练分布 mismatch,可能被模型"忽略"。Anthropic 在 Claude 3.5 长上下文评测中报告的最优策略是混合策略:在 prompt 开头注入 4 个自然 sink(<|endoftext|> 重复 4 次)+ 2 个语义 anchor(<system> 与 <user> 边界标记),实测把 attention entropy 从 0.12 提升到 0.45,"Lost in the Middle" 命中率从 27% 提升到 65%。
条目 3(动态 调度律)的工程近似有多种方案。最朴素的是三段式常数: 在前 25% 长度取低值()、在 25-75% 取中值()、在 75% 后取高值();这种方案简单可调但缺乏平滑性。更精细的方案是sigmoid 调度:,其中 是 sigmoid 中点、 控制斜率;这种方案连续可微,适合梯度优化。最高级的方案是对偶律(§6 给出的 ODE),用一个小模型实时估算 、按对偶律调整 ;这种方案理论上最优但工程复杂度高,需要自建"互信息估计器"。
条目 4(context decay 曲线拟合)的一个常见误区是直接套用 RNN 的 hidden decay 公式 。但 context 的 decay 与 RNN 的 hidden decay 有本质区别:RNN decay 是参数化的(权重决定),context decay 是经验拟合的(需要从数据中估计 )。一个实用的拟合方法是:在 held-out 长上下文评测集上跑 ablation,测量不同 值下的任务表现,画出 -performance 曲线,找最优 。实测 在 0.85-0.95 区间最优(任务依赖),超过 0.95 时过早丢失早期信息,低于 0.85 时过度保留冗余。
条目 6(压缩-注入联合优化)的实现关键是把压缩器与检索器串联在同一管线而非并联。串联时压缩器可以看到检索结果,可以做 token-level 重要性打分;并联时压缩器与检索器独立工作,注入窗口的可能是"未压缩 chunk + 已压缩 chunk"的混合,破坏信息密度。LLMLingua-2 的官方实现默认是"压缩器独立运行",需要在工程上把它改造成"检索-压缩-注入"串联管线,改造成本约 200-400 行代码。
条目 7(prompt caching 的张力)是一个 ROI 与架构的双重权衡。Prefix cache 能省 60-90% 的 prefill 成本,但前提是前缀必须稳定。条目 1-6 的所有动态方案都破坏了前缀稳定性。一个折中方案是分层 cache:把 prompt 分为三层——"完全稳定层"(如 tool schema、system prompt,启用 cache)、"半稳定层"(如检索 query 与检索结果摘要,启用 cache 但允许失效)、"完全动态层"(如对话历史、压缩结果,不启用 cache)。这种分层方案在 Anthropic、OpenAI、Google 的生产实践中都被广泛采用,实测 cache 命中率从 30-50% 提升到 70-85%,同时保留 Context Engineering 的全部动态能力。
八、讨论与局限
本文的理论框架有三个内在局限。
第一,动态 的最优调度律(§6 的对偶律)假设 可实时估计。在实践中, 需要"上帝视角"才能精确计算 —— 我们只能用 attention 权重作为 proxy。这意味着调度律本身有噪声,需要 调小 + 时间窗口平滑。
第二,本文假设 OIB Lagrangian 是可分离的()。在真实长上下文中,、、 三个轴是强耦合的:带宽 降低会同时影响 (更多信息丢失)和 (更多 token 被驱逐)。这种耦合需要引入 cross-term,本文的 Lagrangian 是简化版。
第三,评测基准缺失。当前长上下文评测(Needle-in-Haystack、LongBench、SCROLLS)都假设一次性输入 + 一次性输出,不反映 Context Engineering 的在线流式特性。社区需要一个 步骤的在线评测协议,每个步骤独立打分并累积成 effective throughput 指标。
与同系列前作(id=363 记忆架构信息论几何)的根本区别在于:记忆架构关心存储压缩率,假设 是一次性映射;Context Engineering 关心传输带宽,假设 是随时间演化的在线流式过程。两者共享率失真曲线语言,但前者的 是常数、后者的 是调度律。这是 Information Bottleneck 从离线表征学习走向在线动态系统的范式跃迁。
九、给研究者的开放问题
三个方向的开放问题值得在 2026 H2 投入精力。
第一,注意力熵塌缩(§3)是否可以学习而非经验?当前所有 attention sink 修复都是 prompt-level 技巧(条目 2),需要在推理时硬编码 anchor token。能否通过训练目标(如 entropy regularization loss)让模型自主保持 ?这需要修改预训练阶段的 loss function,是一个根本性但工程量大的方向。
第二, 的最优调度律(§6)的闭式解。本文给的是对偶律(一阶 ODE),但真实最优可能是二阶(带 的动量项)或随机(带扩散项)。找到一个 closed-form 或 semi-closed-form 的 是理论突破点。
第三,Context Engineering 与 Continual Learning 的统一 Lagrangian(§6 末尾的猜想)。Catastrophic forgetting 与 long-context decay 是否真的是同一个 OIB Lagrangian 的不同切面?如果是,那么 anti-forgetting 技术(EWC、SI、Replay Buffer)应该可以直接迁移到 context compression;反之,如果两者有本质区别,则说明当前框架仍不完整。
参考文献
- Tishby, R., Pereira, F. C., & Bialek, W. (1999). The information bottleneck method. Proceedings of the 37th Annual Allerton Conference on Communication, Control, and Computing, 368-377.
- Liu, N. F., Lin, K., Hewitt, J., et al. (2024). Lost in the Middle: How Language Models Use Long Contexts. Transactions of the Association for Computational Linguistics, 2, 157-173.
- Xiao, G., Tian, Y., Chen, B., Han, S., & Lewis, M. (2024). Efficient Streaming Language Models with Attention Sinks. International Conference on Learning Representations (ICLR) 2024.
- Anthropic. (2024). Long context prompting for Claude. Anthropic Engineering Blog.
- Jiang, H., Wu, Q., Lin, C.-Y., et al. (2023). LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models. Empirical Methods in Natural Language Processing (EMNLP) 2023.
- Jiang, H., Wu, Q., Yuan, Z., et al. (2024). LLMLingua-2: Data Compression for Large Language Models (LLMs) via Token-level Importance Understanding. arXiv preprint arXiv:2403.12968.
- Friston, K. (2010). The free-energy principle: a unified brain theory? Nature Reviews Neuroscience, 11(2), 127-138.
- Kirkpatrick, J., Pascanu, R., Rabinowitz, N., et al. (2017). Overcoming catastrophic forgetting in neural networks. Proceedings of the National Academy of Sciences, 114(13), 3521-3526.
- Su, J., Lu, Y., Pan, S., et al. (2022). RoFormer: Enhanced Transformer with Rotary Position Embedding. Neurocomputing, 568, 127063.
- Press, O., Smith, N. A., & Lewis, M. (2022). Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation. International Conference on Learning Representations (ICLR) 2022.
- Touvron, H., Lavril, T., Izacard, G., et al. (2023). LLaMA: Open and Efficient Foundation Language Models. arXiv preprint arXiv:2302.13971.
- Bai, Y., Lv, X., Zhang, J., et al. (2024). LongAlign: A Recipe for Long Context Alignment of Large Language Models. Findings of EMNLP 2024.
- Kaplan, J., McCandlish, S., Henighan, T., et al. (2020). Scaling Laws for Neural Language Models. arXiv preprint arXiv:2001.08361.
- Shazeer, N. (2019). Fast Transformer Decoding: One Write-Head is All You Need. arXiv preprint arXiv:1911.02150.
一句话摘要:把上下文窗口从"无脑 storage"重新定义为"带宽受限的信息论通道",用 Online Information Bottleneck Lagrangian 统一刻画 attention 熵塌缩、动态压缩率、检索互信息上界三大机制,证明 调度律本身是 Lagrangian 乘子、把 Context Engineering 与 Continual Learning 统一在同一个率失真流形上,为长上下文工程提供从原则到调度的可执行框架。
研究文档(引用来源参考)
(no reference document available)