LLM Token压缩与上下文优化开源方案调研
背景
随着大语言模型(LLM)的广泛应用,提示词长度和API成本成为关键瓶颈。Token压缩技术可在保持语义的前提下减少token数量,实现:
- 降低API调用成本(最高可节省80-85%)
- 支持更长上下文处理
- 减少推理延迟
本文档系统调研 TokenCrush 及同类开源方案,按技术类别分类整理30+个项目。
核心推荐(生产级)
1. LLMLingua 系列 (Microsoft)
仓库: https://github.com/microsoft/LLMLingua
Stars: 5,800+ | License: MIT
论文: EMNLP 2023, ACL 2024
三种变体
| 变体 | 核心方法 | 压缩率 | 速度 | 最佳场景 |
|---|---|---|---|---|
| LLMLingua | 基于困惑度的粗到细压缩 | 最高20x | 中等 | 通用RAG |
| LongLLMLingua | 查询感知压缩+文档重排 | 4-9x | 中等 | 长上下文QA |
| LLMLingua-2 | BERT级编码器数据蒸馏 | 3-6x | 最快 | 任务无关场景 |
关键特性:
- 使用GPT-2、LLaMA-7B等小型LM识别非必要token
- KV-Cache压缩支持
- LongLLMLingua解决”中间丢失”问题,RAG性能提升21.4%
- 集成LangChain、LlamaIndex、Azure Prompt Flow
# 基础使用
from llmlingua import PromptCompressor
llm_lingua = PromptCompressor()
compressed = llm_lingua.compress_prompt(prompt, rate=0.33)
# LongLLMLingua(长上下文)
compressed = llm_lingua.compress_prompt(
prompt_list,
question=question,
rate=0.55,
reorder_context="sort",
rank_method="longllmlingua",
)
# LLMLingua-2(最快)
llm_lingua = PromptCompressor(
model_name="microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank",
use_llmlingua2=True,
)2. Headroom
仓库: https://github.com/chopratejas/headroom
Stars: 467 | License: Apache-2.0
核心指标: 87.6% 令牌减少,保持答案质量
关键特性:
- SmartCrusher:JSON工具输出智能压缩
- CacheAligner:提供商缓存优化
- CCR(Compress-Cache-Retrieve):可逆压缩
- 代理层架构,零代码更改集成
- 支持LangChain、Agno、MCP
最佳场景: 工具密集型生产流水线
3. Selective Context
仓库: https://github.com/liyucheng09/Selective_Context
Stars: 405 | License: MIT
论文: EMNLP 2023
核心机制: 基于自信息(self-information)的词汇单元过滤
效果:
- 处理 2x 更多内容
- 节省 40% 内存和GPU时间
- 支持token/短语/句子三级粒度
from selective_context import SelectiveContext
sc = SelectiveContext(model_type='gpt2', lang='en')
context, reduced = sc(text, reduce_ratio=0.5)最佳场景: 长文档处理、对话历史维护
上下文与软提示压缩
4. AutoCompressors (Princeton NLP)
仓库: https://github.com/princeton-nlp/AutoCompressors
Stars: 328 | 论文: EMNLP 2023
创新: 将长文本压缩为”摘要向量”(软提示)
压缩率: 6k tokens → 50向量 (132x)
预训练模型:
princeton-nlp/AutoCompressor-Llama-2-7b-6kprinceton-nlp/AutoCompressor-1.3b-30k(支持30k tokens)
最佳场景: 书籍级长文档、无限上下文递归压缩
5. Gisting (Stanford)
仓库: https://github.com/jayelm/gisting
Stars: 305 | License: Apache-2.0
论文: arXiv:2304.08467
方法: 学习将提示压缩为可复用的”Gist Tokens”
效果:
- 最高 26x 压缩(FLAN-T5-XXL)
- 40% FLOPs减少
- Gist缓存支持重复提示
模型:
jayelm/llama-7b-gist-1jayelm/flan-t5-xxl-gist-1
最佳场景: 重复提示模板、指令缓存
6. StreamingLLM (MIT)
仓库: https://github.com/mit-han-lab/streaming-llm
论文: ICLR 2024 | License: Apache-2.0
突破: 支持无限长度输入(已验证4M+ tokens)
加速: 比滑动窗口 22x 更快
机制: Attention Sinks(初始token)+ 最近token滑动窗口
最佳场景: 实时流式生成、长对话、文档流处理
KV缓存压缩
7. H2O (Heavy-Hitter Oracle)
仓库: https://github.com/FMInference/H2O
论文: NeurIPS 2023 | License: Apache-2.0
方法: 保留注意力得分最高的”Heavy-Hitter”token
效果: KV缓存减少 5-20x
最佳场景: 长上下文推理、对话系统
8. NVIDIA KVPress
仓库: https://github.com/NVIDIA/kvpress
Stars: 873 | License: Apache-2.0
包含策略: 20+ 种压缩方法
- SnapKV、StreamingLLM、PyramidKV
- H2O、ScissorHands、TOVA
- KnormPress、ExpectedAttentionPress
特性: 统一API、支持量化缓存、评估工具链
最佳场景: 生产级KV缓存优化
9. Q-Hitter
仓库: https://github.com/VITA-Group/Q-Hitter
论文: MLSys 2024
创新: 稀疏量化KV缓存
优势: 比H2O更好的硬件效率
模型量化与压缩
10. vLLM LLM-Compressor
仓库: https://github.com/vllm-project/llm-compressor
Stars: 3,000+ | License: Apache-2.0
支持算法: GPTQ、AWQ、FP8、W4A16、W8A8
效果: 内存减少 50-75%
最佳场景: 模型部署优化、vLLM推理引擎
专用工具与框架
11. PCToolkit (综合工具包)
仓库: https://github.com/3DAgentWorld/Toolkit-for-Prompt-Compression
Stars: 285 | 论文: IJCAI 2025
包含:
- 5种压缩方法(LLMLingua、Selective Context、SCRL、KiS等)
- 11个标准数据集
- 完整评估指标套件
最佳场景: 学术研究、方法对比Benchmark
12. RECOMP (ICLR 2024)
仓库: https://github.com/carriex/recomp
Stars: 143 | License: MIT
双压缩器:
- 提取式:选择关键句子
- 生成式:生成摘要
压缩率: 可降至原文 6%
最佳场景: RAG选择性增强
13. Sentinel
仓库: https://github.com/yzhangchuck/Sentinel
Stars: 10
方法: 0.5B代理模型的注意力探测
压缩: 最高 5x
优势: 无需微调、模型无关、查询相关
14. PartPrompt (IEEE TPAMI 2024)
创新: 句法解析树引导 + 层次结构
方法: 将压缩转化为树剪枝问题
优势: 比token级方法更好的连贯性保持
代码与文档专用
15. CntxtPY
仓库: https://github.com/brandondocusen/CntxtPY
Stars: 112 | License: MIT
功能: Python代码知识图谱构建
特性: 依赖映射、静态分析、AI友好的代码表示
16. fitcode2prompt
仓库: https://github.com/zerocoolailabs/fitcode2prompt
功能: 将整个代码库压缩到单个LLM提示
特性: 细粒度压缩控制
快速选型指南
| 需求 | 推荐方案 | 理由 |
|---|---|---|
| 生产级RAG | LLMLingua-2 | 速度+质量平衡,LangChain/LlamaIndex原生支持 |
| 长上下文(>10k) | LongLLMLingua | 解决”中间丢失”问题,查询感知压缩 |
| 无限流式生成 | StreamingLLM | 支持无限长度,22x加速,生产验证 |
| KV缓存优化 | KVPress | 20+策略,NVIDIA官方,统一API |
| 学术研究对比 | PCToolkit | 标准化评估,多方法基准测试 |
| Python代码库 | CntxtPY | 知识图谱表示,静态分析 |
| 重复提示模板 | Gisting | Gist缓存,26x压缩 |
| 书籍级长文档 | AutoCompressors | 132x压缩,软提示表示 |
技术分类对比
| 类别 | 压缩目标 | 代表项目 | 压缩率 |
|---|---|---|---|
| Prompt压缩 | 输入token数 | LLMLingua、Selective Context | 2-20x |
| 软提示压缩 | 上下文表示 | AutoCompressors、Gisting | 26-132x |
| KV缓存压缩 | 推理内存 | H2O、KVPress、StreamingLLM | 5-20x |
| 模型量化 | 模型大小 | LLM-Compressor | 50-75% |
安装快速开始
# 首选:LLMLingua-2(生产推荐)
pip install llmlingua
# 流式无限上下文
pip install streaming-llm
# KV缓存压缩工具包
pip install kvpress
# 模型量化
pip install llmcompressor
# 上下文压缩
pip install context-compressor-llm
# 选择性上下文
pip install selective-context关键洞察
-
LLMLingua系列是领域绝对领导者(5,800+ stars),拥有完整的学术背书(EMNLP、ACL)和生产级集成(LangChain、LlamaIndex、Azure)
-
Prompt压缩与KV缓存压缩是两类不同优化目标:
- Prompt压缩:减少API调用成本
- KV缓存压缩:减少推理内存占用
-
技术趋势:
- 任务无关压缩(LLMLingua-2)成为主流
- 查询感知压缩(LongLLMLingua、Sentinel)提升RAG效果
- 无限上下文(StreamingLLM)突破长度限制
- 统一工具包(KVPress、PCToolkit)降低使用门槛
-
生产就绪度:
- ✅ 已大规模验证:LLMLingua、StreamingLLM、H2O、KVPress
- ⚠️ 研究级:AutoCompressors、Gisting、RMT
-
所有项目均为MIT或Apache-2.0协议,可安全商用
参考资源
- Awesome-LLM-Compression - 综合论文列表
- Prompt Compression Survey - NAACL 2025综述
创建时间: 2026-02-06
分类: AI/LLM工具调研
状态: 已沉淀