AI・機械学習
中級
セレクティブコンテキスト圧縮(セレクティブコンテキストアッシュク)
LLMへの入力コンテキストから自己情報(Self-Information)スコアが低い冗長な文を選択的に削除するプロンプト圧縮手法。外部モデル不要でPerplexityベースの簡易実装が可能。
0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
プロンプト圧縮
自己情報量
Perplexity
コンテキスト削減
RAG
セレクティブコンテキスト圧縮
セレクティブコンテキスト圧縮(Selective Context Compression)は、LLMへの入力を自己情報量(Self-Information)に基づいてフィルタリングする手法。2023年にXin et al.が提案した初期のプロンプト圧縮アプローチのひとつ。
自己情報量の概念
情報理論における自己情報量 I(x) = -log P(x)。
- P(x)が高い(よく出現するトークン)→ 自己情報量低い → 冗長・削除候補
- P(x)が低い(希少なトークン)→ 自己情報量高い → 重要・保持候補
これをLLMのPerplexityで近似することで、文中の「情報量の低い部分」を特定できる。
処理手順
- 小規模LLM(GPT-2 / OPT等)でコンテキストの各センテンスのPerplexityを計算
- Perplexityが低い(冗長な)文を除去
- 残った文をLLMへの入力として使用
from transformers import GPT2LMHeadModel, GPT2Tokenizer
import torch
def compute_perplexity(text, model, tokenizer):
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
loss = model(**inputs, labels=inputs["input_ids"]).loss
return torch.exp(loss).item()
他手法との比較
| 手法 | 精度 | 速度 | 追加学習 | 実装難易度 |
|---|---|---|---|---|
| セレクティブコンテキスト | 中 | 速い | 不要 | 低 |
| LLMLingua | 高 | 中 | 不要 | 中 |
| LLMLingua-2 | 高 | 速い | 要(済モデル利用可) | 中 |
| RECOMP | 非常に高 | 遅い | 要 | 高 |
限界
- センテンス単位の削除のため細かい粒度制御が難しい
- Perplexityが低くても文脈的に重要な文が削除されるリスク
- LLMLingua系と比べると精度が劣るケースが多い
まとめ
セレクティブコンテキスト圧縮は「追加学習なしで即実装できる」シンプルなプロンプト圧縮の入門手法。本番環境ではLLMLingua-2等に移行することが多い。