度量類型
相似度量測向量之間的相似性。選擇適當的距離度量有助於大幅改善分類和聚類效能。
目前,Milvus 支援這些類似度量:Euclidean distance (L2), Inner Product (IP), Cosine Similarity (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(vector) |
|
根據詞彙頻率、倒置文件頻率和文件規範化來評分相關性。 |
[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 維歐氏空間中的兩個點。
這是最常用的距離度量,在資料連續時非常有用。
當選擇歐氏距離為距離公制時,Milvus 只會計算應用平方根之前的值。
內積 (IP)
兩個內嵌之間的 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 距離係數衡量兩個樣本集之間的相似性,定義為定義集的交集的卡入度除以它們的合集的卡入度。它只能應用於有限樣本集。
JACCARD 相似度系數公式
JACCARD 距離量度資料集間的不相似性,將 JACCARD 相似度系數從 1 減去即可得到。對於二元變數,JACCARD 距離等同於 Tanimoto 系數。
JACCARD 距離公式
MHJACCARD
MinHash Jaccard(MHJACCARD) 是一種度量類型,用於在大型集上進行有效、近似的相似性搜尋 - 例如文件字元集、使用者標籤集或基因組 k-mer 集。MHJACCARD 並非直接比較原始集,而是比較MinHash 簽署,MinHash 簽署是專門用來有效估計 Jaccard 相似性的精簡表示法。
這種方法比計算精確的 Jaccard 相似性快很多,在大規模或高維度的情況下特別有用。
適用向量類型
BINARY_VECTOR,其中每個向量儲存一個 MinHash 簽章。每個元素對應於套用到原始集合的其中一個獨立切細值函數下的最小切細值。
距離定義
MHJACCARD 量度兩個 MinHash 簽章中有多少位置符合。匹配比率越高,表示底層集越相似。
Milvus 報告:
- 距離 = 1 - 估計相似度 (匹配比率)
距離值範圍從 0 到 1:
0表示 MinHash 簽名完全相同 (估計 Jaccard 相似度 = 1)
1表示任何位置都不匹配 (估計的 Jaccard 相似度 = 0)
有關技術細節的資訊,請參閱MINHASH_LSH。
HAMMING 距離
HAMMING 距離量度二進位資料字串。長度相等的兩個字串之間的距離是位元不同的位元位置數目。
例如,假設有兩個字串,1101 1001 和 1001 1101。
11011001 ⊕ 10011101 = 01000100.由於這包含兩個 1,所以 HAMMING 距離 d (11011001, 10011101) = 2。
BM25 相似度
BM25 是一種廣泛使用的文字相關性測量方法,專門設計用於全文檢索。它結合了以下三個關鍵因素:
詞彙頻率 (TF):測量詞彙在文件中出現的頻率。儘管頻率越高通常表示重要性越高,但 BM25 使用飽和參數k來防止過度頻繁的詞彙主宰相關性得分。
反向文件頻率 (IDF):反映詞彙在整個語料庫中的重要性。出現在較少文件中的詞彙會得到較高的 IDF 值,表示對相關性的貢獻較大。
文件長度規範化:較長的文件往往會因為包含較多的詞彙而得分較高。BM25 藉由文件長度規範化來減緩這種偏差,而參數b 則控制這種規範化的強度。
BM25 評分的計算方式如下:
參數說明:
Q:使用者提供的查詢文字。
D:被評估的文件。
TF,詞彙頻率,表示詞彙q在文件 D 中出現的頻率。
DF):反向文件頻率,計算方式為
其中N 是語料庫中的文件總數,nn) 是包含詞條 q 的文件數目。
D∣:文件長度D (詞彙總數)。
:語料庫中所有文件的平均長度。
k :控制詞彙頻率對分數的影響。較高的值會增加詞彙頻率的重要性。典型的範圍是 [1.2,2.0],而 Milvus 允許的範圍是 [0,3]。
b:控制長度規範化的程度,範圍從 0 到 1。當值為 0 時,不套用規範化;當值為 1 時,套用完全規範化。