メトリクスの種類
類似度メトリクスは、ベクトル間の類似度を測定するために使用されます。適切な距離メトリックを選択することで、分類やクラスタリングのパフォーマンスを大幅に向上させることができます。
現在、milvusは以下の類似度メトリックをサポートしています:ユークリッド距離(L2
)、内積(IP
)、コサイン類似度(COSINE
)、JACCARD
、HAMMING
、BM25
(特に疎なベクトルの全文検索用に設計)。
以下の表は、さまざまなフィールド・タイプと、それらに対応するメトリック・タイプとの対応をまとめたものです。
フィールド・タイプ | 次元範囲 | サポートされるメトリック型 | デフォルトのメトリック型 |
---|---|---|---|
| 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] |
| 値が小さいほど類似度が高いことを示す。 | [0, dim(ベクトル) |
| 用語頻度、逆文書頻度、文書正規化に基づいて関連性をスコア化する。 | [0, ∞) |
ユークリッド距離 (L2)
基本的にユークリッド距離は2点を結ぶセグメントの長さを測定する。
ユークリッド距離の公式は以下の通り。
ユークリッド距離の公式
ここで、a = (a0,a1,...,an-1)とb = (b0,b1,...,bn-1)はn次元ユークリッド空間の2点である。
これは最も一般的に使用される距離メトリックであり、データが連続的である場合に非常に有用である。
Milvusはユークリッド距離が距離メトリックとして選択された場合、平方根を適用する前の値のみを計算します。
内積 (IP)
2つの埋め込み間の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 距離の公式
ハンミング距離
HAMMING 距離はバイナリ・データ文字列を測定する.同じ長さの2つの文字列間の距離は、ビットが異なるビット位置の数である。
例えば、1101 1001 と 1001 1101 という2つの文字列があるとする。
11011001 ⊕ 10011101 = 01000100.これには2つの1が含まれるため、ハミング距離d (11011001, 10011101) = 2となる。
BM25類似度
BM25は広く使われているテキスト関連性測定法で、特に全文検索用に設計されている。以下の3つの重要な要素を組み合わせている。
用語頻度(TF):ある用語が文書に出現する頻度を測定する。頻度が高いほど重要度が高いことを示すことが多いが、BM25では飽和パラメータk1を使用して、頻度が高すぎる用語が関連性スコアを支配するのを防ぐ。
逆ドキュメント頻度(IDF):コーパス全体における用語の重要度を反映する。より少ない文書に出現する用語ほどIDF値が高くなり、関連性に大きく寄与していることを示す。
文書の長さの正規化:長い文書は、より多くの用語を含むため、スコアが高くなる傾向があります。BM25は文書の長さを正規化することでこのバイアスを軽減し、パラメータbはこの正規化の強さを制御する。
BM25のスコアリングは以下のように計算される。
BM25類似度の式
パラメータの説明
Q
:ユーザーによって提供されたクエリーテキスト。D
:評価対象の文書。TF(qi,D)
:用語頻度。用語qi
が文書D
に出現する頻度を表す。IDF(qi)
:逆文書頻度。IDF式
ここで、
N
はコーパスに含まれる文書の総数、n(qi)
は用語qiを含む文書の数である。∣D∣
:文書の長さD
(用語の総数)。avgdl
:コーパスの全文書の平均長。k1
:用語頻度がスコアに与える影響を制御する。値が高いほど用語頻度の重要度が増す。一般的な範囲は[1.2, 2.0]ですが、Milvusでは[0, 3]の範囲で設定できます。b
:長さの正規化の度合いを0から1の範囲で制御する。値が0の場合、正規化は行われず、値が1の場合、完全な正規化が行われます。