Semantic Caching
意味キャッシュがAIのレイテンシとコストを削減する仕組みを紹介します。実践的なUltralytics YOLO26の例を通じて、LLMとビジョンパイプラインでの動作を学びます。
セマンティックキャッシュは、主に生成AIや大規模言語モデル(LLMs)で使用される高度な最適化技術です。クエリの完全一致するテキストではなく、その意味(セマンティクス)に基づいて応答を保存・取得します。新しいプロンプトが以前に回答されたものと同じ本質的な質問をしていることを識別することで、AIモデルを再度呼び出す必要をなくし、処理時間とAPIコストを大幅に削減します。
セマンティックキャッシュの仕組み#
完全に一致する文字列が必要な従来のキャッシュとは異なり、セマンティックキャッシュは受信したクエリを、埋め込みと呼ばれる高次元の数値ベクトルに変換します。ユーザーがプロンプトを送信すると、Redisセマンティックキャッシュや同様のインメモリストアを使用するシステムは、ベクトルデータベース内に保存された既存のベクトルと新しいベクトルを比較するために、ベクトル検索を実行します。
この比較には数学的距離メトリクスが使用され、最も一般的なのはコサイン類似度です。新しいクエリとキャッシュされたクエリの類似度スコアが事前に定義されたしきい値(例:0.95)を超えると、「キャッシュヒット」として記録されます。システムは保存された応答を即座に返し、推論エンジンを完全に省略します。スコアがしきい値を下回ると「キャッシュミス」となり、モデルが新しい応答を生成して、新しい埋め込みと回答のペアを今後のやり取りのために保存します。このワークフローは、現代のクラウドアーキテクチャでAIアプリケーションをスケーリングする際に非常に効果的です。
実世界での利用例#
セマンティックキャッシュは、さまざまな分野で費用対効果の高いAIソリューションを展開するうえで重要です。
- カスタマーサポートチャットボット: ITサポートデスクでは、数百人のユーザーが同じ質問をさまざまな形で尋ねる可能性があります(例:「パスワードをリセットするにはどうすればよいですか?」と「パスワードを忘れた場合の手順」)。セマンティックキャッシュはこれらの意図を同一のものとして認識し、モデルが回答を一度だけ計算するようにします。これにより、API管理ソリューションにおける推論レイテンシが大幅に短縮され、トークン使用量も削減されます。
- ビジュアル検索とRAG: マルチモーダルパイプラインでは、プラットフォームが特徴抽出を使用して参照画像の埋め込みをキャッシュします。ユーザーが視覚的に類似したアイテムを探すために画像をアップロードすると、システムは意味的に一致するキャッシュ済みの結果を即座に取得できます。これにより、大規模な視覚入力を繰り返しエンコードする必要なく、ビジュアルレコメンデーションシステムを迅速に高速化できます。開発者は、これらのキャッシュレイヤーをオーケストレーションするために、LangChainなどのツールを頻繁に統合します。
関連するキャッシュ用語の違い#
AIの最適化を十分に理解するには、セマンティックキャッシュとその他のメモリ管理手法を区別することが役立ちます。
- プロンプトキャッシュとの比較: プロンプトキャッシュでは、アクティブなセッション中に静的コンテキスト(長いドキュメントのプレフィックスなど)の事前計算済みの数学的状態を保存し、後続のクエリを高速化します。セマンティックキャッシュでは、完全なやり取りの最終的なテキストまたは視覚的な出力を保存し、まったく新しいものの同一である意図に対応します。
- KVキャッシュとの比較: KVキャッシュは、Transformerアーキテクチャ内部にある低レベルのメモリ機構であり、トークン単位のテキスト生成中に中間アテンション状態を保存して、リアルタイム推論を可能にします。セマンティックキャッシュはアプリケーション層で動作し、モデルのレイヤーに到達する前に入出力のやり取り全体をキャッシュします。
ビジョンにおけるセマンティックキャッシュのシミュレーション#
次のPythonスニペットは、PyTorchとultralyticsパッケージを使用して、セマンティックキャッシュの中核となる仕組みをシミュレーションする方法を示します。Ultralytics YOLO26分類モデルを使用して、以前にキャッシュされた画像と新しいクエリ画像の類似度を計算することで、完全な推論パスが必要かどうかをシステムが判断できます。
import torch
from ultralytics import YOLO
# Load an Ultralytics YOLO26 classification model for embedding generation
model = YOLO("yolo26n-cls.pt")
# Extract the embedding for a previously 'cached' reference image
cached_embed = model.embed("reference_shoe.jpg")[0].flatten()
# Extract the embedding for a new user query image
new_embed = model.embed("user_uploaded_shoe.jpg")[0].flatten()
# Calculate cosine similarity to check for a semantic cache hit
similarity = torch.nn.functional.cosine_similarity(cached_embed, new_embed, dim=0)
# Apply a threshold to determine if the images are semantically equivalent
if similarity > 0.90:
print(f"Cache hit! Similarity: {similarity.item():.2f}. Returning cached response.")
else:
print(f"Cache miss! Similarity: {similarity.item():.2f}. Running full inference.")データセットを管理し、高度なキャッシュアーキテクチャとシームレスに統合できる、最適化されたコンピュータービジョンモデルを展開したいチーム向けに、Ultralytics Platformは、モデルの大規模なトレーニング、追跡、サービングを行うための直感的なエンドツーエンド環境を提供します。









