メトリクスの種類
類似度メトリクスは、ベクトル間の類似度を測定するために使用されます。適切な距離メトリックを選択することで、分類やクラスタリングのパフォーマンスを大幅に向上させることができます。
現在、milvusは以下の類似度メトリックをサポートしています:ユークリッド距離(L2)、内積(IP)、コサイン類似度(COSINE)、JACCARD 、HAMMING 、BM25 (特に疎なベクトルの全文検索用に設計)。
以下の表は、さまざまなフィールド・タイプと、それらに対応するメトリック・タイプとの対応をまとめたものです。
フィールド・タイプ |
次元範囲 |
サポートされるメトリック型 |
デフォルトのメトリック型 |
|---|---|---|---|
|
2-32,768 |
|
|
|
2-32,768 |
|
|
|
2-32,768 |
|
|
|
2-32,768 |
|
|
|
次元を指定する必要はありません。 |
|
|
|
8-32,768*8 |
|
|
SPARSE\_FLOAT\_VECTOR型のベクトル・フィールドについては、全文検索を行う場合にのみBM25メトリック型を使用する。詳細については、「全文検索」を参照してください。BINARY_VECTOR型のベ ク ト ル ・ フ ィ ール ド の場合、 次元値 (dim) は 8 の倍数でなければな り ません。
以下の表は、サポー ト さ れてい る すべての メ ト リ ッ ク タ イ プの類似度距離値の特徴 と 、 その値域をまとめた も のです。
メトリック・タイプ |
類似性距離値の特性 |
類似性距離値の範囲 |
|---|---|---|
|
値が小さいほど類似度が高いことを示す。 |
[0, ∞) |
|
値が大きいほど類似性が高い。 |
[-1, 1] |
|
値が大きいほど類似度が高い。 |
[-1, 1] |
|
値が小さいほど類似性が高い。 |
[0, 1] |
|
MinHash署名のビットからJaccard類似度を推定します。 |
[0, 1] |
|
値が小さいほど類似度が高いことを示す。 |
[0, dim(ベクトル) |
|
用語頻度、反転文書頻度、文書正規化に基づいて関連性をスコア化する。 |
[0, ∞) |
Array of Structsフィールドのベクトルフィールドにインデックスを付けるには、それらのフィールドに格納されているベクトル埋め込みに基づいて、上記のメトリックタイプのセットにMAX_SIM をプレフィックスとして付ける必要があります。例えば
FLOAT_VECTOR、FLOAT16_VECTOR、BFLOAT16_VECTOR、INT8_VECTOR型のベクトル埋め込みを格納するベクトル・フィールドでは、MAX_SIM_COSINE、MAX_SIM_IP、MAX_SIM_L2をメトリック型として使用することができます。BINARY_VECTOR型の埋め込みベクトルを格納するベクトル場では,MAX_SIM_JACCADRまたはMAX_SIM_HAMMINGをメトリック型として使うことができます.
ユークリッド距離 (L2)
基本的に、ユークリッド距離は2点を結ぶ線分の長さを測る。
ユークリッド距離の公式は以下の通り:
ユークリッド距離
ここで、a = (a0,a1,...,an-1)とb = (b0,b1,...,bn-1)はn次元ユークリッド空間の2点である。
これは最も一般的に使用される距離メトリックであり、データが連続的である場合に非常に有用である。
Milvusはユークリッド距離が距離メトリックとして選択された場合、平方根を適用する前の値のみを計算します。
内積 (IP)
2つの埋め込み間のIP距離は次のように定義されます:
IPの公式
IPは、正規化されていないデータを比較する場合や、大きさや角度を気にする場合に便利です。
IPを使って埋め込み間の類似度を計算する場合、埋め込みを正規化する必要があります。正規化後の内積は余弦類似度に等しくなります。
X'が埋め込みXから正規化されたとします:
正規化式
2つの埋め込み間の相関は次のようになります:
埋め込み間の相関
コサイン類似度
コサイン類似度は、2組のベクトル間の角度の余弦を用いて、それらの類似度を測定します。2組のベクトルは、[0,0,...]のような同じ点から出発し、異なる方向を向いている線分と考えることができます。
2組のベクトルA = (a0,a1,...,an-1)とB = (b0,b1,...,bn-1)のコサイン類似度を計算するには、次の式を使います:
コサイン類似度
余弦類似度は常に区間[-1, 1]にある。例えば、2つの比例ベクトルは1の余弦類似度を持ち、2つの直交ベクトルは0の類似度を持ち、2つの反対ベクトルは-1の類似度を持ちます。余弦が大きいほど、2つのベクトル間の角度が小さくなり、これらの2つのベクトルが互いに似ていることを示します。
2つのベクトルの余弦類似度を1から引くことで、2つのベクトル間の余弦距離を求めることができます。
JACCARD距離
JACCARD距離係数は,2つの標本集合間の類似度を測定し,定義された集合の交点のカーディナリティをそれらの和のカーディナリティで割ったものとして定義される.これは有限の標本集合にのみ適用できる.
JACCARD類似度係数公式
JACCARD 距離は,データ集合間の非類似度を測定し,JACCARD 類似度係数を1から引くことによって得られる.
JACCARD 距離の公式
MHJACCARD
MinHash Jaccard(MHJACCARD) は、文書単語集合、ユーザータグ集合、ゲノムk-mer集合など、大規模な集合に対する効率的で近似的な類似性検索に使用されるメトリックタイプである。MHJACCARDは、生の集合を直接比較する代わりに、Jaccard類似度を効率的に推定するために設計されたコンパクトな表現であるMinHashシグネチャを比較する。
このアプローチは、正確なJaccard類似度を計算するよりも大幅に高速であり、大規模または高次元のシナリオで特に有用である。
適用可能なベクトル型
BINARY_VECTOR各ベクトルはMinHash署名を格納する。各要素は、元の集合に適用される独立したハッシュ関数の1つの下での最小ハッシュ値に対応する。
距離の定義
MHJACCARDは、2つのMinHash署名の何番目の位置が一致するかを測定します。一致率が高いほど、基礎となる集合がより類似していることを示す。
Milvusは次のように報告します:
- 距離 = 1 - 推定類似度(一致率)
距離値の範囲は0~1です:
0は、MinHash署名が同一であることを意味します(推定Jaccard類似度=1)。
1は、どの位置でも一致しないことを意味します(推定Jaccard類似度= 0)。
技術的な詳細については、MINHASH_LSHを参照のこと。
ハミング距離
HAMMING距離はバイナリデータの文字列を測定する。同じ長さの2つの文字列間の距離は、ビットが異なるビット位置の数である。
例えば、1101 1001 と 1001 1101 という2つの文字列があるとする。
11011001 ⊕ 10011101 = 01000100.これには2つの1が含まれるため、ハミング距離d (11011001, 10011101) = 2となる。
BM25類似度
BM25は広く使われているテキスト関連性測定法で、特に全文検索用に設計されている。以下の3つの重要な要素を組み合わせている:
用語頻度(TF):ある用語が文書に出現する頻度を測定する。頻度が高いほど重要度が高いことを示すことが多いが、BM25では飽和パラメータkを使用し、頻度が高すぎる用語が関連性スコアを支配するのを防ぐ。
逆文書頻度(IDF):コーパス全体における用語の重要度を反映する。より少ない文書に出現する用語ほどIDF値が高くなり、関連性に大きく寄与していることを示す。
文書の長さの正規化:長い文書は、より多くの用語を含むため、スコアが高くなる傾向があります。BM25 は文書の長さを正規化することで、このバイアスを軽減する。パラメータb はこの正規化の強さを制御する。
BM25のスコアリングは以下のように計算される:
パラメータの説明
Q: ユーザーが入力したクエリーテキスト。
D: 評価される文書。
TF,用語頻度。用語qが文書 D に出現する頻度を表す。
):逆文書頻度:
N はコーパスの総文書数、n) は用語 q を含む文書数。
:文書D の長さ(用語の総数)。
: コーパスの全文書の平均長。
k :用語頻度がスコアに与える影響を制御する。値が高いほど用語頻度の重要度が増す。典型的な範囲は[1.2, 2.0]であるが、Milvusでは[0, 3]の範囲を許す。
b: 長さの正規化の度合いを0から1の範囲で制御する。値が0の場合、正規化は行われず、値が1の場合、完全な正規化が行われる。