相似度类型
在度量向量相似性时,相似度类型发挥着关键作用。选择恰当的相似度类型可以极大地提升分类与聚类的效果。
目前,Zilliz Cloud 支持以下相似度类型:欧氏距离(L2)、内积(IP)、余弦相似度(COSINE)、JACCARD (Beta) 和 HAMMING (Beta)。
下表总结了不同字段类型与其对应的相似度类型的映射关系。
字段类型 | 维度范围 | 支持的相似度类型 | 默认相似度类型 |
---|---|---|---|
FLOAT_VECTOR | 2-32,768 | Cosine, L2, IP | Cosine |
FLOAT16_VECTOR (Beta) | 2-32,768 | Cosine, L2, IP | Cosine |
BFLOAT16_VECTOR (Beta) | 2-32,768 | Cosine, L2, IP | Cosine |
SPARSE_FLOAT_VECTOR (Beta) | 无需指定维度 | IP | IP |
BINARY_VECTOR (Beta) | 8-32,768*8 | HAMMING (Beta), JACCARD (Beta) | HAMMING (Beta) |
对于 BINARY_VECTOR
类型的向量字段:
维度值(
dim
)必须为 8 的倍数;可选的相似度类型为
HAMMING
和JACCARD
。
欧氏距离(L2)
欧氏距离主要是用来计算连接两点的线段的实际长度。
其计算公式如下:
其中,a = (a0, a1,..., an-1) 和 b = (b0, b1,..., bn-1) 表示 n 维欧氏空间中的两个点。
L2 是最普遍的距离度量方法,在处理连续性数据时尤为有效。
在选择 L2 作为度量标准时,Zilliz Cloud 仅计算开方之前的数值。
内积(IP)
两个 Embedding 向量间的 IP 距离可按以下方式定义:
当处理未归一化的数据或关注数据的大小和方向时,内积尤为重要。
使用 IP 计算 Embedding 向量间的相似度时,须先对 Embedding 向量进行归一化。之后,内积即可等同于余弦相似度。
例如,Embedding 向量 X 归一化为 X':
两个 Embedding 向量间的关联度如下所示:
余弦相似度(COSINE)
余弦相似度是通过计算两组向量之间的夹角余弦来衡量它们的相似度。可以把这两组向量想象为从同一起点(如 [0,0,...])出发,但朝向不同的线段。
计算两组向量 A = (a0, a1,..., an-1) 和 B = (b0, b1,..., bn-1) 之间的余弦相似度,可使用以下公式:
余弦相似度的值总是介于 [-1, 1] 之间。比如,两个向量的夹角越接近 0 度,余弦相似度越接近 1;两个向量的夹角为 90 度时,其相似度为 0;两个向量的夹角越接近 180 度,两个向量相似度越接近 -1。余弦值越大,表示两向量之间的夹角越小,意味着它们越相似。
通过 1 减去两向量间的余弦相似度,可以得到它们之间的余弦距离。
该相似度类型目前还在测试阶段。升级您的集群至 Beta 版即可体验 COSINE 相似度类型。