技术摘要:缓存感知型提示词压缩 (CAPC)
问题陈述
现代大语言模型 (LLM) 的部署日益依赖两种截然不同的成本降低原语:提示词缓存(存储前缀的 KV 状态,以便为后续读取收取折扣率)和提示词压缩(减少输入中的 Token 数量)。从历史上看,这些技术一直被视为独立的优化手段。然而,提示词压缩的主流文献依赖于查询感知 (query-aware) 方法,即为每一个特定的查询生成一个唯一的压缩前缀。
这种设计选择与前缀严格限制的缓存机制(例如 Anthropic 的 cache_control)产生了根本性的冲突。由于压缩后的前缀随每个查询而变化,缓存键 (cache key) 在每次调用时都会失效。因此,系统在每次请求时都要支付全额的非缓存输入费用,这实际上抵消了压缩和缓存带来的所有收益。虽然现有文献通常假设理想的缓存命中率 (ρ=1.0),但这种假设未能考虑到现实世界 API 的经济现实,即查询感知的压缩可能会导致净投资回报率 (ROI) 为负。
方法论与经验特征化
作者通过结合经验测量、成本建模和算法设计来解决这一差距。
1. 对 Anthropic Sonnet 4.6 的经验特征化
论文首先通过受控实验(n=3 次试验,总成本 $1.91)对 Anthropic Sonnet 4.6 API 的缓存行为进行了特征化。关键发现包括:
- 两层架构: 缓存并非均匀分布。它表现出一个位于 3,500 个 Token 附近的陡峭阈值。
- 热层 (Hot Tier, < 3.5k tokens): 命中率 (ρ) 在 30 次调用后仍会稳定在约 0.83(具体到 2k tokens 时为 0.833)。它并不是 1.0。
- 持久层 (Persistent Tier, > 3.5k tokens): 从第二次调用开始,命中率实际上为 1.0。
- Token 严格失效: 缓存对 Token 序列进行严格失效。即使是微小的变动(例如单个字符的变化)也会导致缓存失效,尽管分词器会规范化前导/后随空格。
- 定价结构: API 对缓存写入 (cw) 收取溢价,而对非缓存输入 (pin) 收费;对于缓存读取 (cr) 则提供显著折扣。在 Sonnet 4.6 上,cw≈1.25×pin 且 cr≈0.10×pin。
2. 成本建模与交叉分析
作者推导出了四种策略的单次调用成本模型:
- A (Vanilla/原生): 无缓存,无压缩。
- B (仅缓存): 全量前缀已缓存,无压缩。
- C (查询感知压缩): 随查询进行压缩,无缓存(每次都会发生缓存失效)。
- D (CAPC): 查询无关压缩 + 缓存。
该模型定义了一个交叉阈值 (ρcross),在该点,缓存成本(策略 B)等于查询感知压缩成本(策略 C):
ρcross(r)=cw−crcw−pin/r
分析表明,对于高压缩比 (r≥6),缓存要优于查询感知压缩所需的命中率超过了 Sonnet 4.6 热层的经验平台值 (ρ≈0.89)。因此,在现实条件下,查询感知压缩通常比朴素缓存更便宜,这颠覆了传统认知。
3. CAPC 算法
提出的解决方案——缓存感知型提示词压缩 (CAPC),结合了三个组件:
- 查询无关压缩: 一个静态文档被压缩一次(例如通过句子选择),形成一个固定的前缀 D′,确保跨查询的缓存键保持不变。
- 层级保留比例界限: 为了防止过度压缩将前缀推入“热层”(其中 ρ<1),压缩比 r 被限制为 rmax=⌊∣D∣/3500⌋。这确保了压缩后的前缀保持在持久层 (ρ≈1.0)。
- AdaptiveCacheBoundary (自适应缓存边界): 对于演进中的文档,一个子程序根据不同版本间的变动率将句子位置分类为 STATIC(静态)、QUASI(准静态)或 DYNAMIC(动态),仅缓存稳定的前缀部分。
关键结果
1. LongBench-v2 合成基准测试
在 16 种配置(4 种文档大小 × 4 种比例)下,CAPC 是最便宜的策略,覆盖了 16/16 种情况。
- 节省: 相比于仅缓存模式平均节省 49%,相比于查询感知压缩平均节省 64%,相比于原生模式平均节省 90%。
- 质量: 在层级保留比例下,CAPC 保持的质量与未压缩基准值的差距在 0.05 以内。
- 交叉验证: 在 r=6 时,查询感知压缩在所有 4/4 种配置中都比仅缓存模式更便宜,验证了其交叉模型预测。
2. 生产环境验证:企业级工具使用助手
在 94k-token 静态前缀(系统提示词 + 287 个 MCP 工具定义)上进行了验证。
- 成本降低: 在 r=3 时,CAPC 实现了比原生模式 51.7% 的成本降低。
- 质量: 工具选择质量与仅缓存模式相当(0.700 vs 0.703)。
- 洞察: 在 r=3 时,查询感知压缩在工具选择上的表现反而更差(0.603),因为它丢弃了与查询相关的工具定义。CAPC 的查询无关方法保留了完整的目录,证明了其在工具增强型智能体中的优越性。
- 隐式缓存: 研究显示,即使没有显式标记,Anthropic 也会隐式缓存大型
tools= 数组,这降低了原生策略中显式缓存的边际收益,但并未抵消 CAPC 的压缩收益。
3. 知识图谱 RAG (Graphify)
与用于代码库索引的 graphify 集成。
- 架构: 第 1 层(缓存、查询无关)包含图元数据;第 2 层(随查询变化)获取源代码。
- 性能: 与“全缓存”(完整图骨架)相比,CAPC 在 FastAPI 上实现了 9.3 倍 的成本降低,在 httpx 上实现了 2.4 倍 的成本降低,同时保持了稳定的 85%+ 缓存命中率。
- 质量: CAPC 在处理模型先验知识较弱的代码库(如 httpx)时,表现优于原生 graphify 查询和嵌入式 RAG 基准,实现了 142% 的质量提升。
4. 公共基准测试:τ-Bench Retail
在 50 个确定性任务(基于数据库状态奖励,无 LLM 评判)上进行评估。
- 结果: CAPC 是最便宜的策略,比原生模式节省了 7.9%,同时实现了与原生模式完全相同的任务完成率(36/50,z=0.00,p=1.00)。
- 查询感知的负 ROI: 查询感知压缩比原生模式贵了 40.1%,这提供了首次在公共基准测试中确认查询感知方法可能具有负 ROI 的生产证据。
重要性与主张
该论文声称提供了对提示词缓存经济学的首次系统性特征化,超越了理想化的 ρ=1.0 假设。其主要贡献包括:
- 经验现实: 证明了 LLM 缓存具有两层架构,并且在特定 Token 阈值以下存在非平凡的命中率平台。
- 理论反转: 证明了在高压缩比下,查询感知压缩通常比朴素缓存更便宜,从而反转了传统的设计层级。
- 实用算法: 引入了 CAPC,它将查询无关压缩与显式缓存以及层级保留约束统一起来。
- 生产验证: 通过合成基准、企业级工具使用智能体、知识图谱 RAG 流水线以及公共确定性基准测试验证了这些发现。
作者强调,CAPC 不是索引器(如 graphify)的替代品,而是一个互补的“最后一公里交付”层,旨在优化将索引衍生的上下文交付给 LLM 的经济成本。论文中所有经验工作的总成本为 $98.96,这表明这些发现可以用适度的资源进行复现。