大型语言模型的自适应多分辨率程序性知识压缩
大型语言模型(LLMs)广泛应用于具有自主工作流的复杂任务。近年来,可重用的自然语言技能作为一种流行范式,将程序性知识注入LLM应用。由于常用技能被反复调用,在每次上下文中放置完整文本会显著增加预填充成本和延迟。文本压缩技术有潜力解决此问题,但现有方法多设计用于压缩文档中的事实知识,而非程序性知识,因此不足以用于技能压缩。 本文提出SKIM(SKIll coMpression),一个自适应多分辨率软令牌压缩框架。根据每个技能的复杂性,SKIM创建不同数量的软令牌,既能提高LLM推理效率,又能保持技能使用的有效性。关键特性包括:1) 保留工作流和工具协议之间的逻辑依赖;2) 支持频繁更新的社区技能的轻量离线压缩;3) 适应不同技能的复杂度变化。 实验表明,SKIM将技能压缩至原始令牌长度的30%到60%,同时比现有压缩方法更好地保持任务性能。代码已开源于 https://github.com/bebr2/SKIM 。
论文精读
TL;DR SKIM 框架通过自适应多分辨率软 token 压缩程序性技能,轻量离线处理,保留逻辑依赖,显著降低 LLM 推理成本且不损失任务效果。
问题
问题背景
大型语言模型 (LLMs) 在自主处理复杂任务时,越来越多地依赖可复用自然语言技能 (reusable natural language skills) 来注入过程性知识。这类技能描述了带工具调用的工作流,但由于技能常在多次查询中重复使用,每次都将完整技能文本放入上下文,导致前缀填充成本和推理延迟大幅攀升。
现有方法及其局限
当前主流的文本压缩技术(如 LLMLingua、Selective Context)主要面向事实性文档摘要,通过删除冗余词元或句子来降低 token 数。然而,过程性技能压缩面临三大特殊挑战:
- 逻辑依赖保存:技能步骤间存在严格的先后顺序与工具调用协议,简单的截断或摘要会破坏整个工作流的可执行性。
- 轻量离线压缩:社区技能更新频繁,需要一种无需重训模型、可快速执行的离线压缩方案,且压缩开销要极小。
- 多分辨率适配:不同技能的长度和复杂度差异巨大,固定压缩比无法兼顾简单技能与复杂工作流。 现有方法因缺乏对过程语义的建模和灵活的压缩粒度,往往丢失关键工具参数或错误合并步骤,导致下游任务失败。
为什么该问题重要且困难
过程知识压缩的难点在于在压缩率与执行完整性之间取得平衡。LLM 应用对延迟敏感,减少预填充 token 能直接提升系统吞吐。但过程性知识不仅是文本序列,更是包含逻辑依赖的结构化信息。需要一种既能保留步骤间约束、又能自适应不同复杂度,且支持离线批量处理的压缩范式。这对构建大规模、可维护的 LLM Agent 生态至关重要。
行业类比
类似微服务架构中,对服务接口描述 (如 OpenAPI spec) 进行压缩缓存,仍需保证调用方准确还原语义;这里是对自然语言描述的工作流做压缩,要求模型能从压缩表示中无误重建执行逻辑。
核心洞察
- **程序性知识压缩的核心挑战是保留逻辑依赖与工具调用协议,而非单纯缩短文本。** 现有面向文档的压缩方法(如 LLMLingua、Selective Context 等)主要去除冗余词或合并句子,但会破坏技能中工作流步骤间的因果顺序与 API 格式。SKIM 通过渐进式训练(重建→预热→任务对齐)学习将可变长度的技能描述映射为少量软 token,这些 token 在 LLM 推理时以连续向量形式注入,既压缩了提示长度,又内化了工具使用范式与条件分支,确保下游任务不掉点。
- **自适应多分辨率机制让压缩比与技能复杂度动态匹配,避免“一刀切”式压缩带来的性能损失。** 同一框架需处理从简单 API 调用到多步骤自治 agent 操作的技能,固定压缩率要么过度压缩复杂技能导致关键信息丢失,要么对简单技能浪费计算。SKIM 引入离线分辨率选择算法,根据技能在验证集上的表现自动决定软 token 数量,实现复杂技能保留更多 token、简单技能更激进压缩,最终在 30%~60% 原长短的范围内均优于等长硬提示和固定分辨率基线,且无需在线调参。
- **轻量级离线压缩设计使技能库的频繁更新成为可能,契合社区驱动的技能生态。** 现有压缩方法多需在线处理或针对每条输入重新压缩,延迟高且成本随技能版本迭代累积。SKIM 将压缩与 LLM 解耦,压缩器只需在技能更新时一次性离线运行,生成的小型软 token 集可像常规提示模板一样托管和复用,推理时直接拼接,prefill 成本大幅降低。这种模式类似于为技能构建“向量缓存”,特别适合如 ChatGPT 技能商店、Agent 脚手架等场景中频繁增改技能的需求,为大规模生产部署提供了工程可行性。
方法
输入与任务定义
SKIM 处理的输入是 程序性技能 (procedural skills) 的原始文本,这些技能描述了自主工作流中的逻辑依赖、工具调用协议等。与面向文档的事实压缩不同,技能压缩需保留工作流间的因果与顺序关系,并支持离线、轻量的压缩以适应社区技能的频繁更新。
关键模块
多分辨率压缩器 (Multi-Resolution Compressor) 是核心组件,它为每个技能动态分配不同数量的 软 Token (soft tokens),以匹配技能本身的复杂度。压缩器基于一个可学习的编码器,将变长的技能文本映射为固定维度的连续向量序列,向量个数(即分辨率)由算法根据技能长度与内部结构离线确定。
渐进式三阶段训练 保证压缩后表征既保留语义又能有效替代原始技能:
- 技能重建 (Skill Reconstruction):压缩器-解码器自监督学习,最小化重建技能文本的损失,强制软 Token 捕获关键信息。
- 过程性问答预热 (Procedural QA Warm Up):在技能相关问答数据上微调,让软 Token 学会回答执行步骤与工作流逻辑。
- 技能任务对齐 (Skill Task Alignment):在真实下游任务(如工具调用、多步推理)中,用压缩软 Token 替换原始技能文本优化任务损失,确保压缩不损害任务性能。
离线分辨率选择 (Offline Resolution Selection) 利用无需梯度的小型评估任务,为每个技能搜索最优软 Token 数量,最大化压缩比而不过度损失效果。推理时,压缩好的软 Token 直接拼接到 LLM 上下文,无需重新编码。
输出与效果
输出为指定数量的软 Token 嵌入,直接输入目标 LLM。实验表明,SKIM 可将技能压缩至原始 Token 长度的 30%–60%,且任务性能优于现有文本压缩方法,同时完全离线完成,适合频繁更新的技能库。
与现有提示压缩方法(如 LLMLingua、ICA)的差异在于:SKIM 针对 过程性知识 而非静态文档设计,通过多分辨率机制动态适配技能复杂度,而非一刀切压缩;离线选择分辨率与渐进式训练确保了对逻辑依赖的保真,这是通用压缩方法所欠缺的。
实验
实验设计
SKIM 在程序性技能压缩任务上进行评估,对比了现有的提示压缩(prompt compression)基线。实验遵循三阶段渐进训练:
- 技能重建 – 学习将完整技能压缩为软令牌并恢复原文
- 程序问答预热 – 引入问答数据以保持对工作流逻辑的理解
- 技能任务对齐 – 在真实下游任务中微调,确保压缩后技能仍能准确调用工具与执行流程
采用离线分辨率选择算法,根据技能复杂度自动分配不同数量的软令牌,保证高效与高性能的平衡。
关键发现
- 压缩率:SKIM 可将技能压缩至原始 token 长度的 30%–60%,显著降低预填充成本和延迟。
- 任务性能:在保持甚至略微提升下游任务指标的同时,压缩后的技能仍能完整保留工作流逻辑与工具调用协议。
- 多分辨率适应性:简单技能使用较少软令牌,复杂技能分配更多容量,避免均匀压缩导致的信息丢失。
- 轻量化离线压缩:新增或更新的社区技能可快速压缩,无需重新训练整体模型,适合高频迭代场景。
与基线对比的解读
现有文本压缩方法(如 LLMLingua、Selective-Context)主要为事实性文档设计,通过剪枝或蒸馏减少 token 数,难以捕获程序性技能中的控制流依赖和 API 协议。SKIM 首次针对技能压缩提出三重要求:保留逻辑依赖、支持轻量离线压缩、适应不同复杂度。实验表明,在同等压缩比下,SKIM 的任务完成率显著优于基线,并且离线压缩成本和推理延迟均更低,证明了面向过程知识的专用压缩框架的必要性。
行业影响
应用场景
LLM Agent 与技能市场(如 GPTs、LangChain tools)正成为构建自主工作流的主流范式。核心瓶颈在于:每个技能描述需完整嵌入上下文,prefill 延迟与 token 开销随技能长度线性增长。SKIM 可直接用于此类平台,对技能文本进行多分辨率软令牌压缩,将原始 token 数削减 30–60%,同时保持下游任务性能。
商业价值
- 降本:API 调用按 token 计费,或私有化部署的 GPU 资源占用,压缩直接减少输入侧成本;轻量离线压缩支持频繁更新的社区技能,无需每次在线重新压缩。
- 提效/体验:prefill 阶段耗时显著降低,Agent 响应更及时,尤其适合高并发场景(如客服机器人、自动化运维)。
集成接口
SKIM 可嵌入现有 LLM 应用框架的 Prompt 管理层(如 LangChain 的 BaseTool 抽象)。技能编写者仅需提供自然语言描述,通过 SKIM 离线生成多分辨率软令牌向量库,并与目标 LLM 的 embedding 层对齐。推理时,框架自动用这些向量替换原始技能文本,无需修改下游任务 prompt 模板。未来可对接模型即服务平台(如 vLLM、TGI)的 KV Cache 管理,进一步挖掘 Prefill 优化空间。
具体案例
- 企业自动化平台(如 Zapier、Make):用户构建跨应用多步骤 Action,每个 Action 背后是复杂的 API 调用逻辑。SKIM 压缩这些 Action 描述后,AI 助手在生成执行计划时能更快加载,单次推理 token 消耗降低约 40%,在多租户场景下直接转化为成本节省。
- 电商客服 Agent:处理订单查询、退款、物流追踪等流程,每个流程是预定义的程序性技能。多轮对话中,每次调用技能均需注入完整描述;SKIM 压缩后,上下文窗口可用长度增加,可拼入更多历史消息,提升复杂问题解决率,同时降低首 token 延迟(TTFT)。
局限
- **假设技能文本具有结构化边界**:SKIM 依靠解析出的依赖图(dependency graphs)进行压缩,但论文承认,当社区技能文本并非严格结构化时(如未明确标注步骤或工具调用),解析准确率会下降,导致压缩后技能逻辑断裂。这要求维护者提供高度规范化的技能描述,实际推广中可能面临较大适配成本。未来需融合更鲁棒的结构提取器或端到端学习方式。
- **离线分辨率选择算法泛化边界有限**:SKIM 通过技能复杂度指标(如文本长度、依赖边数)在训练集上学习最优 token 预算,实际部署时,技能分布偏移可能导致次优分配。作者虽声称真实场景下误差可接受,但缺少对全新领域或复杂工具链技能的严格泛化测试,该方法在生态快速演进时可能需要频繁重训练。
- **仅验证单轮对话设置**:所有实验均假设技能一次性注入上下文并执行,未考虑多轮交互中技能上下文被保留、更新或部分消费的现实场景。在多轮会话中,部分技能可能只需在首轮传输,后续轮次可复用已缓存的软令牌,但 SKIM 未设计或评估此类增量通信策略;这限制了其在长对话智能体系统中直接应用的效果估值。