你有一个 2000 token 的系统 prompt,每次用户提问都要重新处理一遍。KV cache 能省一些计算,但 prompt 本身的 token 还是要走一遍前向传播。
如果用户量大了,这笔账就很贵。
柏林自由大学的 Thibaud Ardoin 团队在 2026 年 7 月的论文里问了一个大胆的问题:
这 2000 个 token 的信息,能不能压成一个向量?
不是 2000 个向量,不是 200 个,是一个。
然后把这一个向量注入回模型的某一层,让模型表现得好像它刚刚处理过那 2000 个 token 一样。
答案是:可以,精度只掉 2%。
—
方法:加权激活聚合
核心思路出奇地简单。LLM 处理 prompt 时,每一层都会产生激活向量。论文的做法是:
1. 提取:在模型的某一中间层(比如第 16 层),把 prompt 所有 token 的激活向量取出来 2. 加权求和:用一个学到的权重函数(Weighting MLP)对这些激活向量做加权求和,得到一个单一的”压缩向量” 3. 注入:把这个压缩向量注入到另一个查询的某一早期层(比如第 4 层),替代原始 prompt 的 token 序列
用公式说:如果原始 prompt 经过模型后在第 L 层产生激活 h_1, h_2, …, h_n,压缩向量是 v = Σ w_i · h_i,其中 w_i 是 Weighting MLP 学到的权重。
这个 v 被注入到查询 prompt 的第 L’ 层(L’ < L),就好像在那一层"插入"了一个虚拟的 prompt 表示。
两种压缩器
论文提出了两种实现:
Weighting MLP(W-MLP):一个小型多层感知机,输入是每个 token 的激活向量,输出是一个标量权重。简单高效。
Transformer Compressor(TC):一个小型 Transformer,能建模 token 之间的关系,理论上更强大但训练成本更高。
实验显示 W-MLP 已经足够好——在任务指令压缩上,W-MLP 和 TC 表现接近,但 W-MLP 更简单更高效。
关键实验结果
在 Llama-3 上测试:
– 任务指令压缩(Toy Task Dataset):W-MLP 的准确率和完整 prompt 处理相比,只掉了不到 2% – 训练集和测试集:在训练分布内任务上,W-MLP 与完整 prompt 基线差距 < 2% – 失败案例:如果压缩失败(向量没编码好信息),模型表现掉到接近随机猜——说明这个向量确实在承载信息,不是”有没有都一样”
2% 是什么概念?如果你有一个 2000 token 的系统 prompt 被调用 100 万次,压缩后每次调用省了 2000 token 的前向传播计算,代价是 2% 的精度损失。对很多应用场景来说,这个交易是划算的。
三个发现:LLM 激活空间的结构
除了实用价值,这篇论文揭示了 LLM 内部表示的三个结构特性:
1. 跨层兼容性
中间层(第 16 层)的激活可以被注入到早期层(第 4 层)并有效工作。这说明 LLM 的不同层之间有某种”通用语言”——信息编码方式不是每层都重新发明的。
这有点反直觉。通常我们认为浅层处理语法、深层处理语义,层之间是分工的。但这个实验显示,深层的语义信息可以被浅层”读懂”——层的功能不是严格分层的,而是有一种跨层的表示兼容性。
2. 单向量的信息容量
一个激活向量(比如 4096 维)能编码多少信息?论文证明它至少能编码一个完整任务指令的语义信息。
这不是显然的。一个 2000 token 的 prompt 在模型内部被展开成 2000 个向量,每个向量 4096 维——总信息量是 2000 × 4096。现在你要把它压成 1 × 4096。信息论告诉你这会损失 99.95% 的”容量”。
但实验显示精度只掉 2%。这意味着:原始 prompt 里的信息高度冗余,真正任务相关的信息量远小于 token 数 × 维度数。一个向量 4096 维已经足够编码”做什么任务”这个语义。
3. 加权求和是稳健的压缩器
为什么简单的加权求和就能工作?因为 prompt 里不同 token 的重要性不同——任务关键词(”翻译””总结””分类”)比标点和停用词重要得多。Weighting MLP 学到的就是”哪些 token 重要”这个权重。
这和注意力机制(attention)在做的事情有结构上的相似——都是对 token 做加权聚合。区别在于:注意力是 query-dependent 的动态权重,这里是 prompt-only 的静态权重。压缩只需要一次,之后所有查询都复用同一个压缩向量。
超越任务指令:多任务编码
论文还探索了一个更野的实验:能不能把多个任务指令编码到一个向量里?
附录 C 描述了”Multi-Task Encoding in a Single Vector”——把多个任务的指令压缩到一个向量,看模型能不能根据查询区分该用哪个任务。
结果取决于任务的区分度。如果两个任务差异足够大(比如”情感分类”vs”数学计算”),一个向量可以同时编码两者。如果任务太相似,会发生干扰。
这暗示了一个有趣的可能性:未来的”prompt 库”可能不是一堆文本文件,而是一堆向量。每个向量编码一个任务指令,加载时只需要注入一个向量,不需要重新处理 token。
局限性
论文诚实地承认了几点:
– 仅测试了固定指令 prompt:动态 prompt(内容随输入变化)不适用 – 压缩是任务特定的:Weighting MLP 需要在目标任务上训练,不是即插即用 – 2% 的损失在某些场景不可接受:医疗、法律等高精度场景,2% 可能太多 – 泛化性待验证:只在 Llama-3 上测试,其他模型(GPT、Claude)是否同样有效未知
和其他方法的关系
这篇论文站在几个研究方向的交叉点:
– Token 级 prompt 压缩(如 LLMLingua):在 token 层面删除冗余 token,但仍然需要处理 token 序列。激活聚合直接跳过 token 层面 – KV cache:缓存 key-value 对避免重复计算,但仍然占用内存。激活聚合把整个 prompt 压成一个向量 – Activation steering / Representation engineering:通过修改激活向量来引导模型行为。激活聚合可以看作是”用压缩的 prompt 来 steering” – Superposition 假说:模型在超激活空间中用线性方向编码特征。单向量压缩为这个假说提供了间接证据——如果信息不是线性编码的,加权求和不可能工作
为什么这件事比看起来更重要?
表面上看,这是一个推理加速技巧。但深层来看,它回答了一个关于 LLM 的基本问题:
prompt 的语义信息在模型内部是如何分布的?
答案似乎是:高度集中。2000 个 token 的语义可以被一个 4096 维的向量捕获到 98% 的精度。这意味着 LLM 的激活空间有非常高效的信息编码——不是每个 token 贡献一份独立信息,而是所有 token 共同指向一个”语义重心”,加权求和就能近似这个重心。
这和 Procrustes 对齐论文的发现有呼应:模型内部的特征空间有结构、有通用性,不是随机的。两个独立训练的模型能对齐到 r=0.70,一个 prompt 能被压成单个向量——都在说同一件事:LLM 的内部表示比我们想象的更有组织。
—
论文:Prompt Compression via Activation Aggregation 作者:Thibaud Ardoin, Semira Einsele, Evis Bregu, Gerhard Wunder(Freie Universität Berlin) 日期:2026 年 7 月 9 日
#LLM #PromptCompression #ActivationEngineering #推理优化 #表示学习
