AI・機械学習
上級

プロンプト圧縮(プロンプトアッシュク)

LLMに送るプロンプトのトークン数を削減する技術の総称。不要な文言の除去、Few-shot例の最適化、自動圧縮アルゴリズム(LLMLingua等)の適用により、コスト削減とレイテンシ短縮を同時に実現する。

0 回閲覧
0 いいね

プロンプト圧縮とは

プロンプト圧縮(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が主要な実装。

プロバイダ機能名キャッシュ割引率最小プレフィックス長
AnthropicPrompt Caching90% OFF(入力)1,024トークン
OpenAICached Prompts50% 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等の自動圧縮ツールは主に英語で訓練されており、日本語の助詞や敬語表現の重要度判定が不正確になることがある。日本語では手動最適化(冗長表現削除+箇条書き化)の方が確実で、自動圧縮は英語プロンプト部分に限定して適用するのが現実的。