微软的prompt压缩方案-LLMLingua,开源

admin 2025-12-29 00:34:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 微软开源的LLMLingua通过压缩提示词解决LLM长上下文成本高、响应慢的问题。技术历经三代演进,LLMLingua-2采用分类器替代困惑度计算,体积小、速度快。衍生技术SecurityLingua可防御越狱攻击。开发者可安装PyPI库直接使用,降低Token消耗。 综合评分: 85 文章分类: AI安全,安全工具,产品介绍


cover_image

微软的prompt压缩方案-LLMLingua,开源

原创

孙志敏

AI与安全

2025年12月28日 11:08 北京

每个使用大型语言模型的开发人员最终都会面临同样的挑战。

提示信息越来越长,模型运行速度越来越慢,API费用越来越高。 并且还会出现超限的情况,导致程序无法运行。

无论你是构建检索增强生成(RAG) 系统还是构建能够记住过去对话的聊天机器人,每个额外的令牌都会增加成本和延迟。

微软悄悄地推出了一项修复方案,该方案名为LLMLingua,有完整开源。它会在将提示信息发送给模型之前对其进行压缩,仅保留最重要的信息。这样可以加快响应速度,降低成本,并更容易地扩展生命周期管理(LLM)的规模。

01

什么是 LLMLingua

LLMLingua 是微软研究院提出的一套 提示词压缩(Prompt Compression)技术与开源实现框架,用于提升大型语言模型(LLM)在处理长上下文时的推理速度、降低成本同时保留关键信息。

它的主要目标是:

  • 从冗长的 prompt 中提取关键语义信息;
  • 去掉不重要或冗余内容;
  • 将压缩后的 prompt 输入到大模型(如 GPT-4)里;
  • 在多种任务中,实现 显著减少 tokens 数量、加速推理、保持准确性。

根据官方论文,LLMLingua 能做到约 20× 的压缩比而性能损失很小。

02

LLMLingua系列技术演进

关于LLMLingua,有三篇论文展示了提示压缩技术的逐步演进:

1. LLMLingua (EMNLP 2023)

首个系统性的提示压缩方法,提出粗到细(coarse-to-fine)的三层压缩框架。

核心方法:

  • 使用小型语言模型(如LLaMA-7B)计算每个token的困惑度,困惑度低的token被认为是冗余的,可以删除
  • 采用三步压缩策略:①预算控制器分配压缩比例 ②粗粒度筛选段落/示例 ③细粒度迭代删除token
  • 通过指令微调使压缩模型与目标大模型的语言分布对齐,确保压缩后的文本仍能被目标模型理解

2. LongLLMLingua (ACL 2024)

专门针对长文档场景,解决大模型的”中间遗失”问题(模型容易忽略位于中间位置的信息)。

关键创新:

  • 问题感知压缩:根据用户问题动态调整压缩策略,与问题相关的部分保留更多内容

  • 文档重排序:将重要信息移动到开头和结尾位置,避免被模型忽略

  • 动态预算分配:不再均匀压缩,而是根据内容重要性动态分配压缩率

  • 仍使用因果语言模型计算重要性,但加入了更智能的压缩策略

3. LLMLingua-2 (ACL Findings 2024)

从根本上改变压缩方法,从信息论方法转向机器学习方法。

核心突破:

  • 范式转变:不再用语言模型计算困惑度,而是训练一个专门的分类器来判断每个token是否应该保留
  • 数据蒸馏:使用GPT-4压缩大量文本作为训练数据,让小模型学习GPT-4的压缩能力
  • 双向理解:使用BERT类编码器(如XLM-RoBERTa)替代单向的因果语言模型,可以同时看到token的前后文信息
  • 效率提升:模型参数量从7B降至340M(缩小20倍),压缩速度提升3-6倍,但压缩效果相当甚至更好
  • 任务无关:一个模型可以处理各种不同类型的压缩任务,无需针对特定场景调优

LLMLingua-2 使用专用的模型,相关的模型已经开源

  1. 应用于安全的SecurityLingua

这个技术不仅可以用于提示词压缩,还可用于防止提示词注入的安全任务,见论文

SecurityLingua:通过安全感知提示压缩有效防御LLM越狱攻击(CoLM 2025)https://openreview.net/forum?id=tybbSo6wba

基于该论文,SecurityLingua是LLMLingua技术在LLM安全领域的创新应用,专门用于防御越狱攻击。

SecurityLingua将提示压缩技术巧妙地转化为安全防御工具:

  • 核心洞察:越狱提示包含大量噪声token来混淆模型
  • 压缩效果:通过压缩可以剥离这些噪声,暴露真实意图
  • 双路输出:
  • 原始提示保持不变(用户体验一致)
  • 提取的意图通过系统提示传递给LLM

03

使用方法及效果

使用很简单。该库已发布在 PyPI 上,开箱即用。

pip install  llmlingua

安装完成后,您可以将其导入 Python 以开始压缩提示符。

以下是如何使用 LLMLingua 压缩大型文本提示的方法。

from llmlingua import PromptCompressor# Initialize the compressorllm_lingua = PromptCompressor()# Compress the promptprompt = "Sam bought a dozen boxes, each with 30 highlighter pens inside, for $10 each box..."compressed_prompt = llm_lingua.compress_prompt(prompt, instruction="", question="", target_token=200)print(compressed_prompt)

运行此代码后,您将得到一个类似这样的字典:

{  'compressed_prompt': 'Question: Sam bought a dozen boxes each with 30 highlighter pens...',  'origin_tokens': 2365,  'compressed_tokens': 211,  'ratio': '11.2x',  'saving': 'Saving $0.1 in GPT-4.'}

您还可以根据资源情况加载不同的模型。

# Use a more powerful compression modelllm_lingua = PromptCompressor("microsoft/phi-2")# Or use a quantized model for GPUs with limited memory# Requires: pip install optimum auto-gptqllm_lingua = PromptCompressor("TheBloke/Llama-2-7b-Chat-GPTQ", model_config={"revision": "main"})

效果可以参考Huggingface上的Demo,例子中的tokens是2428,压缩后变成331,比例还是可以的。

04

小结

Prompt越来越长,带来了很多问题,目前解决的路线也是多种的,有用LLM直接总结的,有直接抛弃一部分的,微软的LLMLingua,是非常好的思路,并且也在持续演进,值得跟踪。

END

相关资料均可以在github上找到

https://github.com/microsoft/LLMLingua

在Huggingface上有Demo,可以直接体验

https://huggingface.co/spaces/microsoft/LLMLingua

https://huggingface.co/spaces/microsoft/LLMLingua-2

关联阅读

渗透测试用MCP调用工具,有点画蛇添足,合理的方法有两种


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:AI与安全 孙志敏《微软的prompt压缩方案-LLMLingua,开源》

小程序反编译方法 网络安全文章

小程序反编译方法

文章总结: 本文介绍了微信小程序的反编译流程,通过wxapkg工具扫描本地存储目录并选择目标,自动解包生成前端源码。获取源码后,建议搭建Python本地服务配合
评论:0   参与:  0