指引 (Reference)
指标(Metric)

相似性度量

在 Milvus 中,相似性度量用于衡量向量之间的相似性。选择一个好的距离度量方法能够显着提高分类和聚类性能。

以下表格展示了这些常用的相似性度量方法与各种输入数据形式和 Milvus 索引的对应关系。

相似性度量方法索引类型
欧几里得距离(L2)FLAT IVF_FLAT IVF_SQ8 IVF_PQ GPU_IVF_FLAT GPU_IVF_PQ HNSW DISKANN
内积(IP)
余弦相似度
距离度量方法索引类型
JaccardBIN_FLAT BIN_IVF_FLAT
Hamming

欧几里得距离(L2)

欧几里得距离本质上衡量了连接两个点的线段的长度。

欧几里得距离的公式如下:

euclidean

其中 a = (a 0 , a 1 ,..., a n-1 ) 和 b = (b 0 , b 1 ,..., b n-1 ) 是 n 维欧几里得空间中的两个点。

这是最常用的距离度量方法,在数据连续时非常有用。

内积(IP)

两个嵌入向量之间的内积距离定义如下:

ip

如果你需要比较非归一化的数据或关心其幅度和角度,内积距离更为有用。

假设 X'是从嵌入向量 X 归一化得到的:

normalize

两个嵌入向量之间的相关性如下:

normalization

余弦相似度

Cosine 相似度使用两组向量之间的夹角的余弦来衡量它们的相似性。你可以将这两组向量想象为起点相同([0,0,...])但指向不同方向的两条线段。

要计算两组向量 A = (a 0 , a 1 ,..., a n-1 )B = (b 0 , b 1 ,..., b n-1 ) 之间的余弦相似度,请使用以下公式:

cosine_similarity

余弦相似度始终在区间 [-1, 1] 内。例如,两个成比例的向量的余弦相似度为 1,两个正交的向量的相似度为 0,两个相反的向量的相似度为 -1。余弦越大,两个向量之间的角度越小,表示这两个向量越相似。

通过将其与 1 相减,可以得到两个向量之间的余弦距离。

Jaccard 距离

Jaccard 相似系数测量两个样本集之间的相似性,定义为定义集合的交集的基数除以其并集的基数。它只能应用于有限样本集。

Jaccard similarity coefficient

Jaccard 距离测量数据集之间的不相似性,通过从 1 中减去 Jaccard 相似系数来得到。对于二元变量,Jaccard 距离等价于 Tanimoto 系数。

Jaccard distance

Hamming 距离

Hamming 距离测量二进制数据字符串之间的距离。等长字符串之间的距离是位不同的位置的数量。

例如,假设存在两个字符串,1101 1001 和 1001 1101。

11011001 ⊕ 10011101 = 01000100。由于这包含两个 1,Hamming 距离 d(11011001,10011101)= 2。

结构相似性

当一个化学结构作为另一个化学结构的一部分出现时,前者称为子结构,后者称为超结构。例如,乙醇是乙酸的子结构,乙酸是乙醇的超结构。

结构相似性用于确定两个化学式是否相似,即一个是另一个的超结构或子结构。

要确定 A 是否是 B 的超结构,请使用以下公式:

superstructure

其中:

  • A 是要检索的化学式的二进制表示
  • B 是数据库中化学式的二进制表示

一旦返回 0A 就不是 B 的超结构。否则,结果相反。

要确定 A 是否是 B 的子结构,请使用以下公式:

substructure

其中:

  • A 是要检索的化学式的二进制表示
  • B 是数据库中化学式的二进制表示

一旦返回 0A 就不是 B 的子结构。否则,结果相反。

常见问题解答

下一步

  • 了解更多有关于 Milvus 中支持的 index types