度量類型
相似度量測向量之間的相似性。選擇適當的距離度量有助於大幅改善分類和聚類效能。
目前,Milvus 支援這些類似度量:Euclidean distance (L2
), Inner Product (IP
), Cosine Similarity (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 維歐氏空間中的兩個點。
這是最常用的距離度量,在資料連續時非常有用。
當選擇歐氏距離為距離公制時,Milvus 只會計算應用平方根之前的值。
內積 (IP)
兩個嵌入之間的 IP 距離定義如下。
內積公式
如果您需要比較非規範化的資料,或是關心幅度和角度時,IP 會比較有用。
如果您使用 IP 來計算嵌入式之間的相似性,您必須將您的嵌入式歸一化。歸一化之後,內積等於余弦相似度。
假設 X' 是由嵌入 X 規範化而成。
規範化內積公式
兩個嵌入式之間的相關性如下。
嵌入式之間的相關性
余弦相似性
余弦相似度使用兩組向量之間角度的余弦來衡量它們的相似程度。您可以將兩組向量視為從相同點 (例如 [0,0,...])開始,但指向不同方向的線段。
要計算兩組向量A = (a0,a1,...,an-1)和B = (b0,b1,...,bn-1) 的余弦相似度,請使用下列公式。
余弦相似度公式
余弦相似度總是在區間[-1, 1]。舉例來說,兩個成正比的向量的余弦相似度為1,兩個正交的向量的相似度為0,兩個相反的向量的相似度為-1。余弦越大,兩個向量之間的角度越小,表示這兩個向量之間的相似度越高。
將它們的余弦相似度從 1 減去,就可以得到兩個向量之間的余弦距離。
JACCARD 距離
JACCARD 相似度系數量度兩個樣本集之間的相似度,定義為定義集的交集的 cardinality 除以它們的結合的 cardinality。它只適用於有限樣本集。
JACCARD 相似度系數公式
JACCARD 距離量度資料集間的不相似性,將 JACCARD 相似度系數從 1 減去即可得到。對於二元變數,JACCARD 距離等同於 Tanimoto 系數。
JACCARD 距離公式
HAMMING 距離
HAMMING 距離量度二進位資料字串。長度相等的兩個字串之間的距離是位元位置不同的位元數。
例如,假設有兩個字串,1101 1001 和 1001 1101。
11011001 ⊕ 10011101 = 01000100.由於這包含兩個 1,所以 HAMMING 距離 d (11011001, 10011101) = 2。
BM25 相似度
BM25 是一種廣泛使用的文字相關性測量方法,專門設計用於全文檢索。它結合了以下三個關鍵因素。
詞彙頻率 (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 時,套用完全規範化。