メトリクスの種類

類似度メトリクスは、ベクトル間の類似度を測定するために使用されます。適切な距離メトリックを選択することで、分類やクラスタリングのパフォーマンスを大幅に向上させることができます。

現在、milvusは以下の類似度メトリックをサポートしています:ユークリッド距離(L2)、内積(IP)、コサイン類似度(COSINE)、JACCARDHAMMINGBM25 (特に疎なベクトルの全文検索用に設計)。

以下の表は、さまざまなフィールド・タイプと、それらに対応するメトリック・タイプとの対応をまとめたものです。

フィールド・タイプ

次元範囲

サポートされるメトリック型

デフォルトのメトリック型

FLOAT_VECTOR

2-32,768

COSINE L2IP

COSINE

FLOAT16_VECTOR

2-32,768

COSINE L2IP

COSINE

BFLOAT16_VECTOR

2-32,768

COSINE,L2IP

COSINE

INT8_VECTOR

2-32,768

COSINE L2IP

COSINE

SPARSE\_FLOAT\_VECTOR

次元を指定する必要はありません。

IP,BM25 (全文検索にのみ使用)

IP

BINARY_VECTOR

8-32,768*8

HAMMING JACCARDMHJACCARD

HAMMING

  • SPARSE\_FLOAT\_VECTOR 型のベクトル・フィールドについては、全文検索を行う場合にのみBM25 メトリック型を使用する。詳細については、「全文検索」を参照してください。

  • BINARY_VECTOR 型のベ ク ト ル ・ フ ィ ール ド の場合、 次元値 (dim ) は 8 の倍数でなければな り ません。

以下の表は、サポー ト さ れてい る すべての メ ト リ ッ ク タ イ プの類似度距離値の特徴 と 、 その値域をまとめた も のです。

メトリック・タイプ

類似性距離値の特性

類似性距離値の範囲

L2

値が小さいほど類似度が高いことを示す。

[0, ∞)

IP

値が大きいほど類似性が高い。

[-1, 1]

COSINE

値が大きいほど類似度が高い。

[-1, 1]

JACCARD

値が小さいほど類似性が高い。

[0, 1]

MHJACCARD

MinHash署名のビットからJaccard類似度を推定します。

[0, 1]

HAMMING

値が小さいほど類似度が高いことを示す。

[0, dim(ベクトル)

BM25

用語頻度、反転文書頻度、文書正規化に基づいて関連性をスコア化する。

[0, ∞)

Array of Structsフィールドのベクトルフィールドにインデックスを付けるには、それらのフィールドに格納されているベクトル埋め込みに基づいて、上記のメトリックタイプのセットにMAX_SIM をプレフィックスとして付ける必要があります。例えば

  • FLOAT_VECTORFLOAT16_VECTORBFLOAT16_VECTORINT8_VECTOR 型のベクトル埋め込みを格納するベクトル・フィールドでは、MAX_SIM_COSINEMAX_SIM_IPMAX_SIM_L2 をメトリック型として使用することができます。

  • BINARY_VECTOR 型の埋め込みベクトルを格納するベクトル場では,MAX_SIM_JACCADR またはMAX_SIM_HAMMING をメトリック型として使うことができます.

ユークリッド距離 (L2)

基本的に、ユークリッド距離は2点を結ぶ線分の長さを測る。

ユークリッド距離の公式は以下の通り:

Euclidean Metric ユークリッド距離

ここで、a = (a0,a1,...,an-1)b = (b0,b1,...,bn-1)はn次元ユークリッド空間の2点である。

これは最も一般的に使用される距離メトリックであり、データが連続的である場合に非常に有用である。

Milvusはユークリッド距離が距離メトリックとして選択された場合、平方根を適用する前の値のみを計算します。

内積 (IP)

2つの埋め込み間のIP距離は次のように定義されます:

IP Formula IPの公式

IPは、正規化されていないデータを比較する場合や、大きさや角度を気にする場合に便利です。

IPを使って埋め込み間の類似度を計算する場合、埋め込みを正規化する必要があります。正規化後の内積は余弦類似度に等しくなります。

X'が埋め込みXから正規化されたとします:

Normalize Formula 正規化式

2つの埋め込み間の相関は次のようになります:

Correlation Between Embeddings 埋め込み間の相関

コサイン類似度

コサイン類似度は、2組のベクトル間の角度の余弦を用いて、それらの類似度を測定します。2組のベクトルは、[0,0,...]のような同じ点から出発し、異なる方向を向いている線分と考えることができます。

2組のベクトルA = (a0,a1,...,an-1)B = (b0,b1,...,bn-1)のコサイン類似度を計算するには、次の式を使います:

Cosine Similarity コサイン類似度

余弦類似度は常に区間[-1, 1]にある。例えば、2つの比例ベクトルは1の余弦類似度を持ち、2つの直交ベクトルは0の類似度を持ち、2つの反対ベクトルは-1の類似度を持ちます。余弦が大きいほど、2つのベクトル間の角度が小さくなり、これらの2つのベクトルが互いに似ていることを示します。

2つのベクトルの余弦類似度を1から引くことで、2つのベクトル間の余弦距離を求めることができます。

JACCARD距離

JACCARD距離係数は,2つの標本集合間の類似度を測定し,定義された集合の交点のカーディナリティをそれらの和のカーディナリティで割ったものとして定義される.これは有限の標本集合にのみ適用できる.

JACCARD Similarity Coefficient Formula JACCARD類似度係数公式

JACCARD 距離は,データ集合間の非類似度を測定し,JACCARD 類似度係数を1から引くことによって得られる.

JACCARD Distance Formula 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では飽和パラメータk1k_1kを使用し、頻度が高すぎる用語が関連性スコアを支配するのを防ぐ。

  • 逆文書頻度(IDF):コーパス全体における用語の重要度を反映する。より少ない文書に出現する用語ほどIDF値が高くなり、関連性に大きく寄与していることを示す。

  • 文書の長さの正規化:長い文書は、より多くの用語を含むため、スコアが高くなる傾向があります。BM25 は文書の長さを正規化することで、このバイアスを軽減する。パラメータbbb はこの正規化の強さを制御する。

BM25のスコアリングは以下のように計算される:

score(D,Q)=i=1nIDF(qi)TF(qi,D)(k1+1)TF(qi,D)+k1(1b+bDavgdl)score(D, Q)=\sum_{i=1}^{n}IDF(q_i)\cdot {{TF(q_i,D)\cdot(k_1+1)}\over{TF(q_i, D)+k_1\cdot(1-b+b\cdot {{|D|}\over{avgdl}})}}

パラメータの説明

  • QQ Q: ユーザーが入力したクエリーテキスト。

  • DD D: 評価される文書。

  • TF(qi,D)TF(q_i, D) TF,用語頻度。用語qiq_iqが文書DD D に出現する頻度を表す。

  • IDF(qi)IDF(q_i)):逆文書頻度:

    IDF(qi)=log(Nn(qi)+0.5n(qi)+0.5+1)IDF(q_i)=\log({N-n(q_i)+0.5\over n(q_i)+0.5} + 1)

    NNN はコーパスの総文書数、n(qi)n(q_i)n) は用語qiq_i q を含む文書数。

  • ∣D∣|D|:文書DDD の長さ(用語の総数)。

  • avgdlavgdl: コーパスの全文書の平均長。

  • k1k_1 k :用語頻度がスコアに与える影響を制御する。値が高いほど用語頻度の重要度が増す。典型的な範囲は[1.2, 2.0]であるが、Milvusでは[0, 3]の範囲を許す。

  • bb b: 長さの正規化の度合いを0から1の範囲で制御する。値が0の場合、正規化は行われず、値が1の場合、完全な正規化が行われる。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?