milvus 中的 metric_type="COSINE"
在 Milvus 中,metric_type
指定用于向量相似性搜索的距离度量算法。COSINE
是其中一种常用的距离度量标准。
COSINE Metric
含义: 余弦相似性(Cosine Similarity)用于衡量两个向量之间的相似度,其值范围在 [-1, 1] 之间。余弦相似度主要关注两个向量在向量空间上的方向而不是长度。
公式: 余弦相似性计算公式为:
[
\text{Cosine Similarity} = \frac{A \cdot B}{|A| \times |B|}
]其中 ( A ) 和 ( B ) 是两个向量,"(\cdot)" 符号表示向量点积,"(||)" 符号表示向量的范数(或长度)。
应用: 余弦相似性特别适用于衡量文本数据和高维稀疏向量的相似性,例如自然语言处理中的文本相似性计算。由于它对向量的大小不敏感,因此对归一化数据效果很好。
在 Milvus 中使用 COSINE
当在 Milvus 中创建集合或者在搜索中指定 metric_type="COSINE"
时,Milvus 将使用余弦相似性来进行最近邻搜索。以下是一个基本设置示例:
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
# 连接到 Milvus
connections.connect("default", host="localhost", port="19530")
# 定义字段
field1 = FieldSchema(name='id', dtype=DataType.INT64, is_primary=True, auto_id=True)
field2 = FieldSchema(name='embedding', dtype=DataType.FLOAT_VECTOR, dim=128)
# 设置集合模式
schema = CollectionSchema(fields=[field1, field2], description="Example collection with COSINE metric")
# 创建集合
collection = Collection(name="example_collection", schema=schema)
# 索引参数
index_params = {
"metric_type": "COSINE", # 指定使用余弦相似性
"index_type": "IVF_FLAT",
"params": {"nlist": 128}
}
# 创建索引
collection.create_index(field_name="embedding", index_params=index_params)
print("Collection and index created with COSINE similarity.")
注意事项
- 归一化: 在使用余弦相似性作为度量标准时,确保向量已经过归一化处理(即向量长度变为 1),以便余弦相似性能够准确地反映向量间的角度关系。
- 性能: 根据数据规模和实际应用场景,选择合适的索引类型如
IVF_FLAT
、IVF_SQ8
等,以优化搜索性能和资源使用。
通过使用余弦相似性,Milvus 可以在高维空间中有效地计算向量间的相似度,从而为各种数据分析任务提供支持。