プロンプト圧縮(プロンプトアッシュク)
LLMに送るプロンプトのトークン数を削減する技術の総称。不要な文言の除去、Few-shot例の最適化、自動圧縮アルゴリズム(LLMLingua等)の適用により、コスト削減とレイテンシ短縮を同時に実現する。
プロンプト圧縮とは
プロンプト圧縮(Prompt Compression)は、LLMに送信するプロンプトのトークン数を減らしつつ、出力品質を維持する技術である。プロンプトが長くなるほどAPI料金は比例して増加し、レイテンシ(応答時間)も長くなるため、プロンプト圧縮はコスト最適化の基本戦術として位置づけられている。
なぜプロンプト圧縮が必要か
典型的なRAGアプリケーションでは、システムプロンプト(500〜2,000トークン)+検索結果コンテキスト(2,000〜10,000トークン)+ユーザークエリ(50〜200トークン)で構成されるプロンプトが毎回送信される。このうちコンテキスト部分には冗長な情報が多く含まれており、30〜70%を圧縮しても出力品質がほとんど変わらないことが研究で示されている。
圧縮手法の分類
手動最適化(Manual Optimization)
プロンプトエンジニアが手作業で不要な文言を削除・圧縮する。最も基本的だが効果の大きい手法。
| 圧縮テクニック | 削減効果 | 例 |
|---|---|---|
| 冗長表現の削除 | 10〜20% | 「以下の内容を注意深く読んで」→ 削除 |
| 箇条書き化 | 15〜25% | 長い説明文 → 箇条書き |
| Few-shot例の厳選 | 20〜50% | 5例 → 2例(代表的なもののみ) |
| 定型句の省略 | 5〜15% | 「あなたは〇〇の専門家です」→ 最小限に |
| JSON出力指定の簡略化 | 10〜20% | 詳細なスキーマ → 最小限の例示 |
自動圧縮アルゴリズム
LLMLingua / LongLLMLingua
Microsoft Researchが開発したプロンプト圧縮手法。小型の言語モデル(GPT-2/LLaMA-7B等)を使ってプロンプト内の各トークンの重要度を推定し、重要度の低いトークンを削除する。2〜20倍の圧縮率で、出力品質の低下を最小限に抑える。
Selective Context
プロンプト内の各文のセルフ情報量(self-information)を計算し、情報量の低い文を除外する。文単位の圧縮なので文法的な整合性が保たれやすい。
RECOMP(Retrieval Compressor)
RAGのコンテキスト圧縮に特化した手法。検索結果から質問に関連する文のみを抽出するExtractive Compressorと、関連情報を要約するAbstractive Compressorの2種類がある。
プロンプトキャッシング(Provider-level)
厳密には圧縮ではないが、繰り返し使うプロンプト部分のコストを90%削減する。AnthropicのPrompt CachingとOpenAIのCached Promptsが主要な実装。
| プロバイダ | 機能名 | キャッシュ割引率 | 最小プレフィックス長 |
|---|---|---|---|
| Anthropic | Prompt Caching | 90% OFF(入力) | 1,024トークン |
| OpenAI | Cached Prompts | 50% OFF(入力) | 1,024トークン |
圧縮率と品質のトレードオフ
| 圧縮率 | 品質低下 | 推奨用途 |
|---|---|---|
| 2x(50%削減) | ほぼなし | 汎用(常時適用OK) |
| 5x(80%削減) | 軽微 | RAGコンテキスト圧縮 |
| 10x(90%削減) | 注意が必要 | コスト制約が厳しい場合のみ |
| 20x(95%削減) | 顕著 | 実験用途のみ |
FAQ
Q1: プロンプト圧縮で品質が下がらないのはなぜ?
A1: プロンプトの多くは冗長な自然言語で構成されており、LLMの理解に不要な修飾語・接続詞・繰り返しが含まれている。これらを除去しても意味の核は保持されるため、出力品質への影響は最小限に留まる。特にRAGのコンテキストは元々検索で取得した長い文章であり、質問に直接関連する部分は全体の10〜30%に過ぎないことが多い。
Q2: LLMLinguaの実装は難しい?
A2: Pythonパッケージとして公開されており、pipでインストールして数行のコードで利用可能。ただし圧縮用の小型モデル(GPT-2またはLLaMA-7B)をローカルで動作させる必要があり、GPUがない環境ではレイテンシが増加する可能性がある。
Q3: 日本語プロンプトの圧縮で注意すべき点は?
A3: LLMLingua等の自動圧縮ツールは主に英語で訓練されており、日本語の助詞や敬語表現の重要度判定が不正確になることがある。日本語では手動最適化(冗長表現削除+箇条書き化)の方が確実で、自動圧縮は英語プロンプト部分に限定して適用するのが現実的。