Skip to content
🔗 分享本题
查看我的学习进度 →
LLMLingua 上下文压缩图解

🧠 图解记忆: 压缩目标不是字更少,而是让每个 token 更有证据价值;实体、数字、否定词和引用位置要重点保留。

💡 答案要点

LLMLingua 核心思想:

  • 用小模型(如 GPT-2)识别 Prompt 中的"关键token"
  • 压缩掉不重要但消耗 token 的内容
  • 保留对最终答案贡献大的信息

为什么需要上下文压缩?

LLM上下文窗口:32K tokens
用户输入:1K tokens
检索文档:30K tokens(100个文档)

总输入:31K tokens → 刚好卡在边界,可能被截断

LLMLingua 压缩后:
压缩文档:8K tokens(去掉冗余)
总输入:9K tokens → 流畅处理

LLMLingua 工作原理:

python
from llmlingua import PromptCompressor

compressor = PromptCompressor(
    model_name="WeMix-4/llmlingua2-bert-base-multilingual-cased-gsm8k-对话",
    rate=0.5  # 压缩到50%
)

def compress_context(context, instruction):
    compressed = compressor.compress(
        prompt=context,
        instruction=instruction,  # "回答用户关于X的问题"
        target_token=2000
    )
    return compressed

# 示例
original = """
苹果公司(Apple Inc.)是一家美国跨国科技公司...
总部位于加利福尼亚州库比蒂诺...
史蒂夫·乔布斯于1976年4月1日创立...
"""
instruction = "总结苹果公司的关键信息"

compressed = compress_context(original, instruction)
# 输出:压缩后的关键信息,token数减少60-70%

压缩效果对比:

方法Token数答案准确率保留率
不压缩300085%100%
LLMLingua90083%~97%语义
Random Cut90071%~75%语义

面试话术:

"LLMLingua 是上下文压缩利器。传统压缩会丢失语义,它用小模型识别哪些 token 对答案贡献大,只压缩低贡献部分。我在长文档 RAG 场景用过,压缩 60-70% 的 token 量,准确率只下降 2-3%。特别适合上下文窗口紧张但检索文档很多的情况。"