AI・機械学習
上級

類似度計算手法(セマンティックキャッシュ)(ルイジドケイサンシュホウ(セマンティックキャッシュ))

セマンティックキャッシュの類似度計算は、クエリをEmbeddingベクトルに変換し、コサイン類似度やユークリッド距離で意味的近さを数値化する手法である。

0 回閲覧
0 いいね

概要

類似度計算は新しいクエリが既存キャッシュとどの程度意味的に近いかを数値評価するプロセス。(1) クエリをEmbeddingモデルで固定長ベクトルに変換し、(2) キャッシュ内ベクトルとの距離を計算して閾値判定する。Embeddingモデルの選択、距離指標の種類、閾値設定が精度とパフォーマンスを決定する3大要素。

Embeddingモデルの選択

モデル名次元数MTEB平均レイテンシコスト
OpenAI text-embedding-3-large307264.650〜100ms$0.13/1M tokens
OpenAI text-embedding-3-small153662.330〜60ms$0.02/1M tokens
Cohere embed-v3102464.540〜80ms$0.10/1M tokens
BGE-large-en-v1.5102463.55〜10ms(ローカル)無料
all-MiniLM-L6-v238456.32〜5ms(ローカル)無料

キャッシュルックアップのオーバーヘッドを最小化するためローカル推論の軽量モデルが好まれる。

距離指標の種類

距離指標値の範囲特性推奨ユースケース
コサイン類似度-1〜1方向のみ比較テキスト類似性(最も一般的)
ユークリッド距離0〜∞絶対的距離数値データ、低次元
内積-∞〜∞方向+大きさ正規化済みベクトル
マンハッタン距離0〜∞各次元差の絶対値合計高次元スパース

テキストベースではコサイン類似度が標準。多くのベクトルDBが標準サポートし、値が-1〜1に正規化されるため閾値設定が直感的。

閾値設定

推奨閾値(コサイン類似度): 0.95以上=非常に厳密、0.90〜0.95=推奨範囲、0.85〜0.90=緩め、0.85未満=非推奨。F1スコア最大の閾値を本番クエリログの分析で決定し、A/Bテストで継続最適化する。

ベクトル検索の高速化

アルゴリズム検索速度(100万件)精度代表実装
HNSW1〜5ms95〜99%Qdrant、pgvector
IVF-PQ2〜10ms85〜95%FAISS、Milvus
ScaNN1〜3ms95〜99%Google ScaNN

10万件以下はHNSWが最適。100万件超はIVF-PQのメモリ効率が重要。

よくある質問(FAQ)

Q1: クラウドとローカルどちらが良い?

10ms以下を目指すならローカル推論。精度最重要ならクラウドモデル。ハイブリッド(ローカルで検索→ミス時クラウドで再検証)の2段構成も有効。

Q2: 多言語対応は?

多言語Embeddingモデル(Cohere embed-v3、multilingual-e5-large等)で異なる言語間の類似度計算が可能。閾値を0.02〜0.05程度下げる調整が必要な場合がある。

Q3: 類似度計算のコストは?

LLM推論の100〜1000分の1。text-embedding-3-smallは$0.02/1M tokensでGPT-4oの125分の1。ローカルならCPUで5〜10ms。

まとめ

類似度計算はEmbeddingモデル選択・距離指標決定・閾値チューニングの3要素で構成。コサイン類似度が標準、閾値0.90〜0.95が推奨。ANN高速化にはHNSW/IVF-PQを活用し、レイテンシ要件でローカル/クラウドを使い分ける。