基于本文回答

播面 播面

文图音视,全方位拆解八股文
0
评论

上下文压缩(Context Compression)或选择性上下文(Selective Context)是如何工作的?

知识点图片

上下文压缩(Context Compression),有时也被具体指代为选择性上下文(Selective Context),是一种旨在减少输入给大语言模型(LLM)的提示词(Prompt)长度,同时尽可能保留关键信息的技术。

其核心目标是解决 LLM 的上下文窗口限制(Token Limit)推理成本(Cost)以及延迟(Latency)问题。

简单来说,它的工作原理基于一个核心假设:并非输入文本中的每一个字(Token)对于模型理解上下文都是同等重要的。

以下是其详细的工作原理和主流方法:


1. 核心原理:信息熵与自信息(Self-Information)

这是“选择性上下文(Selective Context)”这一具体技术路线最核心的理论基础。

  • 基本概念: 在信息论中,如果一段内容很容易被预测(即它是显而易见的),那么它包含的信息量就很少;反之,如果一段内容很意外(难以预测),它包含的信息量就很大。
  • 度量标准: 使用困惑度(Perplexity, PPL)自信息(Self-Information)来衡量。
  • 工作流程:
    1. 使用小模型打分: 使用一个较小的语言模型(如 GPT-2 或 LLaMA-7B)作为“打分器”。
    2. 计算预测概率: 让这个小模型阅读上下文。对于文本中的每个句子或 Token,计算模型预测它的概率。
    3. 判断冗余度:
      • 如果模型能以很高的概率预测出下一个词(例如看到“人工智”,预测下一个字是“能”),说明这个词是冗余的,可以删除
      • 如果模型预测的概率很低(说明这个词包含了新知识或独特信息),则保留
    4. 过滤与重组: 设定一个阈值(例如保留前 60% 信息量最大的内容),删除低信息量的部分,将剩余部分重新组合成新的 Prompt。

例子:

原句:“今天天气非常好,天空是蓝色的,太阳在照耀。”

  • “天空是蓝色的”通常是常识,模型容易预测,可能被压缩。
  • 压缩后可能变成:“今天天气好,太阳照耀。”

2. 基于向量相似度的压缩(Vector-based / Semantic Selection)

这种方法类似于 RAG(检索增强生成)的逻辑,常用于处理超长文档。

  • 分块(Chunking): 将长文本切分成多个小的段落或句子。
  • 嵌入(Embedding): 将用户的“问题(Query)”和所有的“文本块”都转换成向量(Vector)。
  • 相似度匹配: 计算“问题”与每个“文本块”之间的余弦相似度。
  • 保留相关内容: 只保留那些与用户问题语义最相关的文本块,丢弃不相关的部分。

优点: 能够处理整本书级别的内容,只提取回答问题所需的那几页。
缺点: 可能会丢失全局上下文或跨段落的逻辑联系。


3. 基于摘要的压缩(Summarization-based)

这是一种更直观的方法,即“把书读薄”。

  • 分段摘要: 将长文本分成几段。
  • 递归摘要: 让 LLM 对每一段进行总结,生成摘要。如果有必要,可以对摘要再进行摘要(分层摘要)。
  • 拼接: 将生成的摘要作为最终的 Context 输入给模型。

优点: 文本连贯性较好。
缺点: 摘要过程本身需要消耗 Token 和时间;且摘要可能会产生幻觉或遗漏细节。


4. 专门的压缩模型(如 LLMLingua)

微软等机构提出的 LLMLingua 是一种更先进的框架,结合了上述多种思想,采用了由粗到细(Coarse-to-Fine)的策略:

  1. 预算控制: 用户设定目标压缩率(例如压缩到原来的 20%)。
  2. 组件级压缩: 识别 Prompt 中的不同部分(指令、演示示例、问题),给它们分配不同的压缩比例(通常保留指令和问题,主要压缩中间的冗余示例)。
  3. Token 级丢弃: 使用一个小模型(如 LLaMA-2-7b)计算每个 Token 的困惑度,丢弃那些对语义影响最小的 Token。
  4. 分布对齐: 确保压缩后的文本在分布上与原文本保持一致,防止模型理解偏差。

总结:为什么要用上下文压缩?

  1. 省钱: GPT-4 等模型的计费是按 Token 算的。输入减少 50%,成本就降低 50%。
  2. 提速: 输入越短,模型处理(Prefill)的时间越短,首字生成速度越快。
  3. 突破限制: 虽然现在有 128k 甚至 1M 的上下文窗口,但在超长上下文中,模型容易出现“迷失在中间(Lost in the Middle)”现象(即记住了开头和结尾,忘了中间)。压缩能提高信息的密度,有时反而能提升回答的准确率。

潜在风险

  • 信息丢失: 如果压缩过猛,关键的细节(如人名、数字)可能会丢失。
  • 语言不通顺: 某些基于 Token 删除的方法(如 Selective Context)可能会导致句子语法破碎,虽然 LLM 通常能理解破碎的句子,但这仍是一个风险点。
00:00
00:00