1. Pinecone における類似度指標の選択肢
Pinecone ではインデックス作成時に metric 引数で以下 3 種の類似度指標を指定できます。
| 指標 | 指定値 | 数学的定義 | 値域 | 主な用途 |
|---|---|---|---|---|
| Cosine Similarity | "cosine" |
文書検索、文章埋め込み、意味的類似性 | ||
| Dot Product (Inner Product) | "dotproduct" |
レコメンド(協調フィルタリング)、ランキング学習 | ||
| Euclidean (L2) Distance | "euclidean" |
画像ベクトル、数値特徴量クラスタリング |
注意: Pinecone の検索 API は「小さいほど近い」距離ではなく「大きいほど近い」スコア形式で結果を返します。
cosineとdotproductはそのまま「大きい値=高類似」。
euclideanを使うと内部で がスコア化されるため、ユーザ側は 昇順・降順を意識せず同一インターフェースで扱えます。
2. それぞれの指標の特徴とベストプラクティス
| 観点 | Cosine | Dot Product | Euclidean |
|---|---|---|---|
| スケーリング要件 | 事前に L2 正規化しても・しなくても良い(正規化すると内積=コサインが成り立つ) | 正規化しないのが一般的。大きさ情報も評価に含めたい場合に有効 | 正規化 不要。大きさが距離に直結 |
| 値域の固定 | あり(-1〜1)。外れ値に強い | なし。大スケール値で勾配消失・爆発のリスク | なし(0〜∞) |
| 意味 | 角度に基づく「方向」の近さ | 「方向」と「大きさ」を同時反映 | 実座標空間での直線距離 |
| 推奨ユースケース | 意味ベクトル(NLP)、多言語埋め込み | 行列分解ベース推薦、Click-through rate 予測 | 視覚特徴、クラスタ解析、異常検知 |
| インデックスサイズへの影響 | ベクトル次元そのまま | 同左 | 同左 |
| ハイパーパラメータ調整 | 上位 k や filter 条件のみ | 同左 | sqrt を取るかどうか(L2 と L2²)※Pinecone は L2 |
3. Pinecone での設定例
4. クエリ前処理とスコア解釈
| 指標 | クエリ前処理の推奨 | 検索結果の score 解釈 |
|---|---|---|
| Cosine | 可能であれば L2 正規化(学習時正規化している場合は不要) | 1 に近いほど高類似 |
| Dot Product | 正規化しない(大きさも重要)。ただし値が非常に大きいと ANN 構造体の分割に影響するため量子化・温度スケーリングを検討 | 値が大きいほど高類似 |
| Euclidean | 特になし。スケールが揃わない数値特徴量は事前に標準化 | score は 。0 距離なら score = 0 ではなく 0 に近い負値 |
5. 指標選択のガイドライン
-
意味理解を重視するテキスト検索
-
埋め込みモデルが L2 正規化済み ⇒
cosine -
正規化していないが文脈ベクトル同士の比較 ⇒
dotproductでも良いがコサインが一般的
-
-
推薦システム
-
行列分解・協調フィルタリングのユーザ・アイテムベクトル ⇒
dotproduct -
目的関数(BPR、WARP 等)が内積前提
-
-
画像・数値特徴量
-
空間距離に意味がある ⇒
euclidean -
画像検索・クラスタリング・距離ベース異常検知
-
-
パフォーマンス
-
Pinecone の HNSW / PQ 実装は 3 指標すべて ANN で最適化済み。
-
高次元 (>1536) で
dotproductの値が発散する場合は事前に正規化や縮小を検討。
-
6. まとめ
-
Pinecone は コサイン類似度・内積・ユークリッド距離をサポートし、
metricで選択します。 -
用途ごとに「方向だけ見たいか」「大きさも評価したいか」「距離そのものが欲しいか」を判断軸に選びます。
-
インデックス作成後の指標変更は不可のため、初期設計時に要検討。
-
クエリ側はインデックス vector と同一の前処理(正規化・縮尺)を行い、
scoreの符号・レンジを正しく解釈することが重要です。
ChatGPT4o 生成日:2025/06/20