
LLMLingua
把长提示词压到1/20,推理更快更省钱
LLMLingua 是微软开源的提示词压缩工具,用于解决大模型推理时上下文过长导致的速度慢、成本高问题。它通过一个轻量级语言模型(如 GPT-2 或 LLaMA)对原始提示词进行 token 级压缩,去除冗余信息,保留关键语义,最高可实现 20 倍压缩且性能损失极小。项目同时支持 KV-Cache 压缩,进一步降低显存占用和推理延迟。核心能力包括:粗粒度与细粒度压缩策略、面向长文档和对话场景的优化、与 LangChain 等框架集成。它适用于 RAG、长文本问答、多轮对话等场景,能在不改变下游模型的情况下显著提升吞吐量并降低成本。
项目数据
使用教程
环境要求
- 已安装 Python 与可用的 pip 环境
- 网络可访问 HuggingFace 以下载压缩模型权重
- 如需使用 GPTQ 量化模型,需额外安装 optimum 与 auto-gptq
- 具备本机(或 GPU)运行轻量语言模型的资源
安装与启动步骤
-
1安装 LLMLingua
使用 pip 直接安装官方包,这是 README 给出的唯一安装方式,装完即可在 Python 中导入使用。
pip install llmlingua -
2安装 GPTQ 附加依赖
只有加载 GPTQ 量化模型(如 TheBloke/Llama-2-7b-Chat-GPTQ)时才需要执行这一步。
pip install optimum auto-gptq -
3加载压缩器实例
从 llmlingua 导入 PromptCompressor,传入模型名与 model_config,未指定模型时使用默认模型。
from llmlingua import PromptCompressor llm_lingua = PromptCompressor("TheBloke/Llama-2-7b-Chat-GPTQ", model_config={"revision": "main"}) -
4调用 LongLLMLingua
面向长文档/长上下文场景,需把 rank_method 设为 longllmlingua 并配合额外的长文档参数。
from llmlingua import PromptCompressor llm_lingua = PromptCompressor() compressed_prompt = llm_lingua.compress_prompt( prompt_list, question=question, rate=0.55, condition_in_question="after_condition", reorder_context="sort", dynamic_context_compression_ratio=0.3, condition_compare=True, context_budget="+100", rank_method="longllmlingua", ) -
5调用 LLMLingua-2
使用 XLM-RoBERTa 版压缩模型,需把 use_llmlingua2 置为 True,并可用 force_tokens 指定必须保留的字符。
from llmlingua import PromptCompressor llm_lingua = PromptCompressor( model_name="microsoft/llmlingua-2-xlm-roberta-large-meetingbank", use_llmlingua2=True, ) compressed_prompt = llm_lingua.compress_prompt(prompt, rate=0.33, force_tokens=[' ', '?']) -
6结构化分段压缩
用 llmlingua 标签切分文本,可对不同段分别设置 compress 与 rate,再调用 structured_compress_prompt。
compressed_prompt = llm_lingua.structured_compress_prompt(structured_prompt, instruction="", question="", rate=0.5) print(compressed_prompt['compressed_prompt'])
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
model_name | 否 | 指定压缩所用的语言模型 | microsoft/llmlingua-2-xlm-roberta-large-meetingbank |
use_llmlingua2 | 否 | 是否启用 LLMLingua-2 压缩方式 | True |
rate | 否 | 压缩率,越小保留信息越少 | 0.33 |
force_tokens | 否 | 强制保留不被压缩的 token | ['
', '?'] |
rank_method | 否 | 设为 longllmlingua 启用长上下文模式 | longllmlingua |
context_budget | 否 | 长文档压缩时的上下文预算 | +100 |
如何确认成功
执行 compress_prompt 后打印 compressed_prompt,能正常返回压缩后的提示词即表示安装与调用成功。
常见问题
Q:pip 装完如何确认真的可用?
A:在 Python 中导入 PromptCompressor 并调用 compress_prompt,能返回含 compressed_prompt 的结果即正常。
Q:加载 GPTQ 模型报缺依赖怎么办?
A:按 README 提示先执行 pip install optimum auto-gptq,再重新加载模型。
Q:LongLLMLingua 和 LLMLingua-2 怎么选?
A:长文档、多轮对话场景用 rank_method="longllmlingua";想要更快更通用可用 use_llmlingua2=True 的 LLMLingua-2。
Q:压缩后想保留换行或问号怎么办?
A:在 compress_prompt 中通过 force_tokens 传入,例如 force_tokens=[' ', '?']。
注意事项
- README 只提供 pip 安装与 Python 调用示例,未给出 Docker 或服务端部署方式。
- 首次运行会从 HuggingFace 下载模型权重,需保证网络通畅与足够磁盘空间。
- GPTQ 量化模型需要额外的 optimum 与 auto-gptq 依赖,普通模型无需安装。
- 结构化压缩需按 README 格式使用
标签切分文本段。
核心亮点
- 最高20倍压缩率,显著降低推理成本和延迟
- 兼容任意黑盒LLM,无需微调下游模型
- 提供多种压缩粒度与策略,适配长文档、对话等场景
不足之处
- 压缩过程需额外运行小型语言模型,带来额外计算开销
- 对极短提示词或高度依赖精确措辞的任务可能损失关键信息
适用场景
- RAG检索增强生成中压缩长上下文
- 多轮对话历史压缩以节省token
- 长文档问答与摘要场景降低推理成本
替代项目
LLMLingua-2、AutoCompressor、Gist
项目介绍
上一篇:llama.cpp
下一篇:llm-gateway
同类项目推荐
freebuff-proxy
开源
聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。
OpenAI-compatible gateway for FreeBuff coding models. Token pool, session lifecycle,···
microduck
开源
用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。
A Tiny biped duck robot
soperator
开源
用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。
Run Slurm in Kubernetes
ollama
开源
一条命令本地跑起大模型,免费、私密、不卡顿
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···