圧倒的なコスト削減効果!「コンテキストキャッシング」で変わる生成AI運用(後編)──コスト試算と実装ガイド

2025年3月13日掲載

キービジュアル

生成AI(大規模言語モデル:LLM)の普及に伴い、コストや応答遅延といった課題が浮上しています。

チャットボットや文書の要約、会議録の自動生成などで膨大なデータを取り扱うため、この問題は避けられません。これを解決する技術として注目されているのが「コンテキストキャッシング」です

前編記事では、「コンテキストキャッシング」の基本概念やGoogle Cloud Vertex AI (Gemini)とAnthropic (Claude)の機能比較、そして、代表的なユースケースについて解説しました。

後編の本記事では、より詳しい 具体的なコスト比較 や サンプルコードを用いた実装ポイントの解説および導入時のノウハウ を掘り下げます。

業務の効率化とコスト削減を目指す企業必見の内容です。

目次

1. 前編の復習:ポイントのおさらい

1-1. コンテキストキャッシングとは何か

コンテキストキャッシング とは、LLM が参照する大容量データ(テキストや画像、動画、音声など)を、クラウド上に キャッシュ として保存しておき、2 回目以降の呼び出し で同じデータを再送しなくて済むようにする仕組みです。大量の情報を送る場合、トークン課金やネットワーク負荷が高くなるのが従来の LLM 運用の課題でしたが、一度キャッシュすれば キャッシュ ID を渡すだけで済むため、コスト削減 と 応答速度向上 の両方に効果があります。

Google Cloud (Gemini) Anthropic (Claude) は、それぞれ 異なる実装のコンテキストキャッシング を提供しており、動画・音声まで含むマルチモーダルをキャッシュできる Geminiテキスト重視短い TTL を採用する Claude など、特徴を住み分けています。前編では、この違いと大まかなユースケースを俯瞰してみました。

1-2. 前編の主なユースケース

改めてユースケースの概要を復習しておきます。

  • 製造業
    技術文書や検査画像を何度も参照するシーンが多く、データの重複送信をキャッシュ使用で回避

  • 金融業
    契約書や法令文書を繰り返し要約・分析する場合に、キャッシュ利用で大幅なコスト圧縮

  • メディア/放送
    長時間の動画を翻訳・要約するたびにフルデータ送信せずに済むので、動画の参照コストとLLMからの応答速度時間を削減

  • 社内用RAGチャットボット
    PDFを直接添付し回答をさせることにより精度を大きく改善させる可能性がある。ただし、社員1人1人が個別にPDFを添付した分だけコストがかさむので、キャッシュ機能を利用し複数社員が共通利用できるキャッシュオブジェクトから回答を得ることで精度向上とコスト削減を両立

     

これらはあくまで一例であり、コンテキストキャッシングは 「同じ文脈を何度も使う」 すべての業務に効果を発揮し得る機能 です。

更に詳しくは、前編記事「 圧倒的なコスト削減効果!「コンテキストキャッシング」で変わる生成AI運用(前編)──概要からメリットまで徹底解説」を御覧ください。

2. さらに具体的な導入イメージ

前半部とここまでの振り返りで、コンテキストキャッシングの基本概念や機能、ユースケースをご理解いただけたかと思います。しかし、いざ自社が導入をしようとしたときに、複雑な料金体系から「ちゃんと設計して使わないと、むしろコストが上がってしまうのではないか?」という懸念もあるでしょう。そこで、暫定的ではありますが以下のようなフレームワークを用いて、キャッシュ戦略を自社に取り込めるかどうかを判断する一助となるように記します。

  1. PoC (小規模実験)
    小さめのデータでキャッシュを使ってみて、ヒット率や費用対効果を試す。実際に複数の社員が何度も同じファイルやコンテキストをLLMに入力をしていた場合、キャッシュを利用できるメリットを見いだせる可能性が出てくる。

    * この際、GeminiやClaudeではmetadataとして、cached_token_countを取得することができるため、1か月の間でどれだけの数値が上がったかを見ることが有効になる

  2. 本導入
    PoC で得た結果をもとに、対象データ範囲を拡大するかどうかを判断する。実際にキャッシュの使用率で効果があったファイル以外のファイルをどのように含めるかを検討する。

    例えば、 スモールテストではPDFのみとしたが、movやmp3などの動画や音声データも含めるかを検討し、キャッシュさせるファイルに対するルールを策定するなど講じる。

    あくまでも一例ですが、特定のGoogle Cloud Storage(GCS)を準備し、cached_content/ のようなディレクトリに配置したファイルは自動的に1時間のTTLでキャッシュが作られるように自動化する等、キャッシュ発動のトリガーをシステム化することで不必要な請求金額を回避する

     

  3. モニタリング & チューニング
    本導入後の運用フェーズでは、事前に取り決めたルールに準拠しつつ、キャッシュ対象ファイルの利用率やCached tokenをAPI経由で取得しモニタリングする。

    仮にTTLの内に利用された回数やcached_token_countが少なかった場合は、キャッシュ利用が不要であると判断し、ファイルをディレクトリから削除するなどの処置をとる。

    逆に利用が想定よりも多かった場合は、TTLの延長を検討しよりコスト的にも速度的にも有利になるように継続改善を進める。

     

  4. 全社展開
    上記1-3のサイクルを一定期間(例えば、3か月)回してみて、課題がクリアされれば、大規模な運用や複数部門への水平展開を行う。その際に、不必要なキャッシュオブジェクトが大量に作成されぬよう、ガイドルールなどを策定&コストアラートルールを設けて監視を行うことが前提となる(ここがないと、アンコントローラブルとなり、特にストレージ費用の面で想定外のコストが発生してしまうので、要注意)

     

実際にここまでキャッシュ戦略を要件定義し運用を進めている企業は少ないと考えておりますが、生成AIありきで業務を組み立てる必要がある昨今では、キャッシュ戦略によってその企業が生成AIを活用できるキャパシティが左右されると言っても過言ではありません。

特にSaaS系の生成AIサービスを利用する場合は、アカウント単位の課金 × 固定費用となるため、キャッシュなど意識しなくてもよいと考え立ちだと思います。

しかし、AppSheetやPowerAppsのようなノーコード・ローコードツールの導入も進み、アプリケーションの民主化が増加しているのも事実です。その際、キャッシュを用いて自社のデータ活用を効率化することは業種を問わない共通のニーズになるのではないでしょうか。

3. コスト試算:Gemini 1.5 Pro を使用する場合

ここまででキャッシュの重要性はある程度ご理解いただけたかと思います。

続いて、実際にキャッシュ/非キャッシュのコストを比較することで、より現実的な数値で利点や注意すべき点を確認していきましょう。

3-1. 試算ケースの説明

ここでは「Vertex AI Gemini」を前提とした試算比較を行います。なお、Gemini APIに関する単価テーブルは*2025年3月10日時点 で2つ存在しており、本試算のベースとなる料金テーブルは Vertex AI のモデルを前提としています。

また、前編では大雑把に $0.025/1M tokens で試算しましたが、以下の前提に基づき、より正確に試算し直します。

ただし、Vertex AI Geminiの料金計算テーブルは非常に複雑であるため、より直感的に理解ができるようケースをシンプルにした4パターンを比較していきます

 テキストの入力の試算ケース:

  • 20万トークンのインプット ×  繰り返し処理 10回のケース
  • 20万トークンのインプット ×  繰り返し処理 50回のケース

動画の入力の試算ケース:

  • 1.5時間の動画インプット  ×  繰り返し処理 10回のケース
  • 1.5時間の動画インプット  ×  繰り返し処理 50回のケース

前提:

  • テキストの場合:
    1 トークン = 2.5 文字(テキストで日本語文章の中央値 * 概算)
  • 動画の場合:
    263トークン/秒、1.5時間(5400秒)の動画を使用
  • どちらもキャッシュ保存の期間はデフォルトの「1時間」
  • 出力トークンは誤差の範囲のため、計算には「含まない」

3-1-1. 基本単価(Vertex AI Gemini)

深く理解いただく必要はありませんが、Vertex AI Geminiのモーダル別の単価と単位をまとめた表になります。入力トークンが12.8万(128k)未満か以上で料金が異なります。(後に続くケースの試算は、こちらの単位と単価を使用します。)詳細は公式サイトの料金表を御覧ください。

テキストインプットの単価:

モデル項目タイプ料金(12.8万トークン未満)単位料金(12.8万トークン以上)単位

Gemini 1.5 pro

マルチモーダル入力テキスト0.0003125/1,000文字0.000625/1,000文字
テキスト出力出力(テキストのみ)0.00125/1,000文字0.0025/1,000文字
キャッシュ入力テキスト0.000078125/1,000文字0.00015625/1,000文字
キャッシュのストレージテキスト0.001125/1,000文字 / 時間0.001125/1,000文字 / 時間

動画インプットの単価:

モデル項目タイプ料金(12.8万トークン未満)単位料金(12.8万トークン以上)単位

Gemini 1.5 pro

マルチモーダル入力動画0.00032875/秒0.0006575/秒
テキスト出力出力(テキストのみ)0.00125/1,000文字0.0025/1,000文字
キャッシュ入力動画0.0000821875/秒0.000164375/秒
キャッシュのストレージ動画0.0011835/ 秒 / 時間0.0011835/ 秒 / 時

3-1-2. 20万トークンのインプット ×  繰り返し処理 10回のケースの試算

まずはGeminiで標準的なテキスト入力のケースを2つ見ていきましょう。

このケースは20万トークンのインプットで、10回繰り返し処理を行います。12.8万トークンを超えているので先程の単価表の右側の料金(12.8万トークン以上)を使います。

  キャッシュあり  キャッシュなし  
入力トークン繰り返し回数詳細金額($)詳細金額
200,00010--入力トークン*2.5文字/単位*単価*繰り返し回数3.125
200,00010入力トークン*2.5文字/単位*単価*繰り返し回数0.781--
200,000-1時間キャッシュストレージに保管0.56  
  合計($)1.343合計($)3.125

結果

  • キャッシュなし:3.125 USD
  • キャッシュあり:1.343 USD
  • 差額:▲ 1.77 USD

総評

    • 20万トークン×10回繰り返し処理の場合、約57%のコスト圧縮が可能になることが分かります。1時間のTTLの間に10回以上の利用が見込まれる場合は、キャッシュを利用することにより大幅なコストカットが可能になります。

    3-1-3.  20万トークンのインプット ×  繰り返し処理 50回 の試算

    このケースは20万トークンのインプットで、先程よりも多い50回繰り返し処理を行います。12.8万トークンを超えているので先程の単価表の右側の料金(12.8万トークン以上)を使います。

      キャッシュあり  キャッシュなし  
    入力トークン繰り返し回数詳細金額($)詳細金額
    200,00050--入力トークン*2.5文字/単位*単価*繰り返し回数15.625
    200,00050入力トークン*2.5文字/単位*単価*繰り返し回数3.906--
    200,000-1時間キャッシュストレージに保管0.56  
      合計($)4.468合計($)15.625

    結果

    • キャッシュなし:15.625 USD
    • キャッシュあり:4.468 USD
    • 差額:▲ 11.15 USD

    総評

      • 20万トークン×10回繰り返し処理の場合、約71%のコスト圧縮が可能になることが分かります。当然ですが、利用回数が増えれば増えるほどコスト圧縮の効果が高くなるため、1つ目のテキスト入力のケースよりも削減率が高くなっていることが分かります。

      なお、20万トークンのテキストインプットにおける損益分岐点は「3回以上の繰り返し処理」になります。詳細な計算は割愛しますが、3回以上繰り返し使う場合は、キャッシュがお得になり、2回までしか繰り返し使わないということであれば、キャッシュを使用しないほうがコスト的に有利になります。

      動画の入力の試算ケース:

      ​続いて、テキストだけでなく「動画」を大容量データとしてキャッシュするケースを想定し、キャッシュあり/なしの費用を比較してみましょう。

      特に動画などのマルチモーダルは、Geminiの大規模コンテキストウィンドウとの相性がよく、キャッシュが活躍する場面が多いので、要チェックです。

      1.5時間の動画インプット  ×  繰り返し処理 10回のケースの試算:

      動画と音声はそれぞれ秒数に比例した固定レートでトークンに変換されます。詳細は開発者ドキュメント「トークンを理解してカウントする」を参照してください。

      動画の場合の固定レートは、263 トークン/秒ですので、1.5時間は5,400秒 x 263 = 約142万トークンとなります。12.8万トークン以上なので先程の動画の料金表の右側にある料金(12.8万トークン以上)を利用します。

        キャッシュあり  キャッシュなし  
      秒数繰り返し回数詳細金額($)詳細金額
      5,40010--入力トークン*単価*繰り返し回数35.505
      5,40010入力トークン*単価*繰り返し回数8.876--
      5,400-1時間キャッシュストレージに保管6.39  
        合計($)15.267合計($)35.505

      結果

      • キャッシュなし:35.505 USD
      • キャッシュあり:15.267 USD
      • 差額:▲ 20.23 USD

      総評

        • 1.5時間(5400秒)の動画 × 10回繰り返し処理の場合、約57%のコスト圧縮が可能になることが分かります。テキストのケースと比較すると、動画処理にかかるベースのAPI費用の方が高額であるため、削減額においては非常に大きい恩恵を受けられることが分かります。

        1.5時間の動画インプット  ×  繰り返し処理 50回のケース:

        動画は先程と同じで12.8万トークン以上なので先程の動画の料金表の右側にある料金(12.8万トークン以上)を利用します。

          キャッシュあり  キャッシュなし  
        秒数繰り返し回数詳細金額($)詳細金額
        5,40050--入力トークン*単価*繰り返し回数
        177.525
        5,40050入力トークン*単価*繰り返し回数
        44.381--
        5,400-1時間キャッシュストレージに保管6.39  
          合計($)50.772合計($)177.525
         

        結果

        • キャッシュなし:177.525 USD
        • キャッシュあり:50.772 USD
        • 差額:▲ 126.753 USD

        総評

          • 1.5時間動画×50回繰り返し処理の場合、約71%のコスト圧縮が可能になることが分かります。当然ですが、利用回数が増えれば増えるほどコスト圧縮の効果が高くなるため、1つ目の10回繰り返し利用のケースと比較して、削減率も削減額も大きくなります。また、$100以上の削減額はコストインパクトが大きく、月々のLLMの課金コストの負担軽減に大きく役立つと言えます。特にメディアコンテンツを分析するユースケースにおいては、キャッシング機能を利用しないと大きく損をすることが分かります。

          なお、1.5時間における動画インプットの損益分岐点は、20万トークンのテキストインプットのケースと同様に「3回以上の繰り返し処理」になります。詳細な計算は割愛しますが、3回以上繰り返し使う場合は、キャッシュがお得になり、2回までしか繰り返し使わないということであれば、キャッシュを使用しないほうがコスト的に有利になります。

          4. コスト試算:Claude を使用して、10回試行する場合

          続いて、Claude が提供するプロンプトキャッシング機能の試算を比較していきます。Claude の料金体系はシンプルであり、Vertex AI Geminiのように12.8万トークンの壁が存在せず、TTLも5分固定になっています。以下の料金が常に適用されます。詳細は 公式の料金表 を参照ください。

          • 基本入力単価 ×125% (キャッシュ書き込み) 
          • 基本入力単価 ×10% (読み取り) 

          Claude 3.7 Sonnetの場合、以下のような料金となります。

          • 入力トークン:$3 / M Tokens
          • 初回キャッシュ書き込みコスト: $3.75 / M Tokens
          • キャッシュ読み出しコスト:$0.30 / M Tokens

          4-1. 20万トークンのインプット ×  繰り返し処理 10回のケースの試算

          20万(0.2M)入力トークンで、10回試行の合計コストは次のようになります。

          キャッシュなしの場合:

          10回の実行ですべて料金がかかります。

          • 入力コスト×10 =  3 × 0.2 × 10 = 6 USD

          キャッシュが有効な場合:

          • キャッシュ書き込みコスト+(キャッシュヒットコスト×9) = 3.75 × 0.2 + (0.30×9)x0.2 = 0.75 + 0.54 = 1.29 USD
           キャッシュありキャッシュなし
          初回入力コスト--0.6 USD
          初回キャッシュ書き込みコスト0.75 USD--
          9回入力コスト--5.4 USD
          9回キャッシュ読み出しコスト0.54 USD--
          合計1.29 USD6 USD

          結果

          • キャッシュなし:6 USD
          • キャッシュあり:1.29 USD
          • 差額: ▲4.71 USD

          総評

            • 10回繰り返し処理の場合、約78.5%のコスト圧縮が可能になることが分かります。Geminiと比較すると回数が少なくても高い圧縮効果があることが分かります。

             

            5. 実装ガイド:コード例と運用ノウハウ

            ここまででVertex AI Gemini(テキスト・動画のケース)Anthropic(テキストのケース)を比較し、キャッシングのコストインパクトをご理解いただけたかと思います。

            続いて実際に開発者や運用担当者向けに、SDKを介したキャッシュの利用方法をコードベースでご紹介します。

            ただし、実際にはより複雑なビジネスロジックを含むコードが必要になりますので、あくまでも基本的な呼び出し方法の参考であることにご留意ください。

            5-1. Google Cloud (Gemini): コンテキストキャッシュ

            ポイント

            • キャッシュオブジェクトはユーザーが契約するGoogle Cloudのプロジェクト配下に存在する "projects/123/locations/us-central1/cachedContents/456"といった識別値で格納される
            • modelを初期化する際に、from_cached_contentのメソッドを個別に使用することで、キャッシュ情報を保持したGeminiのmodelインスタンスが生成されるイメージになる
            • キャッシュした情報を常時modelインスタンスが保有することになるので、キャッシュした情報以外の分析をさせる場合、新たにキャッシュを保持しない、通常のgeminiのmodelインスタンスを初期化する必要がある
            • キャッシュできるTOKENには最小値(下限)が存在し、「32,768」トークン以上でないと、キャッシュができない(リクエストしたとしても失敗する)

            Python コード例(キャッシュを使用する)

            
            import vertexai
            from vertexai.preview.generative_models import GenerativeModel
            from vertexai.preview import caching
            
            
            vertexai.init(project="my-gcp-project", location="asia-northeast1")
            
            # 既存のキャッシュID (例: "projects/.../cachedContents/...")
            cache_id = "projects/123/locations/us-central1/cachedContents/456"
            
            cached_content = caching.CachedContent(cached_content_name=cache_id)
            model = GenerativeModel.from_cached_content(cached_content=cached_content)
            
            response = model.generate_content("Please summarize the main ideas from these documents.")
            print(response.text)
            
            

            Python コード例(キャッシュを使用する)

            • contentsにはPartで読み込ませたモーダル(動画、テキスト、音声、画像など)が含まれます(リスト形式)
            • ttlはtimedelta形式で指定する
            
            cached_content = caching.CachedContent.create(
                model_name="gemini-1.5-pro-002",
                system_instruction=system_instruction,
                ttl=timedelta(minutes=60),  # デフォルトが1時間
                contents=contents,
            )
            

            5-2. Anthropic Claude:プロンプトキャッシング

            ポイント

            • cache_control でマークしたプレフィックスをキャッシュし、繰り返し使う

            • TTL は最低 5 分 (ヒットで延長)、書き込みが 125%、読み取りが 10%

            • 大量テキスト(例: 50万文字 → 約 20万トークン)を一度にキャッシュする場合でも、(Claude 側には 12.8万入力トークン超過の割増概念はない)

            Python コード例

            import anthropic
            
            client = anthropic.Anthropic(api_key="YOUR_ANTHROPIC_API_KEY")
            
            response = client.messages.create(
                model="claude-3-5-sonnet-20241022",
                max_tokens=1024,
                system=[
                  {
                    "type": "text",
                    "text": "あなたは文学作品を分析するAIアシスタントです。テーマ、キャラクター、文体について洞察に富んだコメントを提供することが目標です。"
                  },
                  {
                    "type": "text",
                    "text": "<長大なテキスト or 法令文書など>",
                    "cache_control": {"type": "ephemeral"}
                  }
                ],
                messages=[{"role": "user", "content": "上記の文書の要点を教えて"}],
            )
            
            print(response.usage.model_dump_json())
            
            

            6. まとめ

            ここまで、コンテキストキャッシング を活用した Google Cloud (Gemini) と Anthropic (Claude) の実装例料金試算を掘り下げました。

            • Vertex AI Geminiの 「テキスト」と「動画」モーダルにおけるコンテキストキャッシングを利用したコストシミュレーション
            • 送信回数別のコストシミュレーションと損益分岐点の明示
            • claude の「テキスト」入力によるプロンプトキャッシングのコストシミュレーション
            • 実装のコードサンプルの提示とポイントの列挙

            上記のユースケース利用シナリオはあくまでも一例であり、LLMに何かしらの大きいコンテキストを送信する場合、多くのケースではキャッシュが有効に働くことが想定されます。ぜひ自社に当てはめていただき、キャッシュを実装するためのキッカケとなれば幸いです。

            LLMのキャッシング機能はまだまだプレビュー段階ということもあり、今後さらに機能拡張される可能性があります。

            大量のテキストやマルチモーダルデータを効率よく扱う企業が増えるなかで、LLM 運用コスト速度のバランスを取るための 重要な要素 となるでしょう。ぜひ、本後編の具体例や計算手法を参考に、 自社のワークフローに合わせたキャッシュ設計 を検討してみてください。

            Vertex AI DIYプランについて

            Vertex AI Search を使って社内文書検索環境(RAG)を構築してみませんか?ソフトバンクのエンジニアが構築をサポートします。

            Vertex AI DIY プランでは、以下の3つのことをご体験いただけます。詳細は、関連サービスにある「Vertex AI DIYプラン」をご確認ください。

            SoftBank Vertex AI Search DIYプランのご紹介

            Google Cloud 関連サービス

            Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。

            MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

            おすすめの記事

            条件に該当するページがございません