Q:milvus 使用 l2 欧式距离计算向量的距离,计算出来的距离的最大值是多少?
A:归一化之后,最大值是4
Q:归一化的是怎么操作的?调用 collection.search 之后获得的向量,已经是归一化了吗?还是需要自己对 milvus 的搜索结果再做归一化?
A:需要自己的对向量做归一化
Q:有样例代码吗
A:可以用np.linalg.norm
Q:归一化是查询之前做,还是获取查询结果后,对距离做归一化?
A:查询之前做,查询的向量,和入底库的向量,都需要做归一化
import numpy as np
import milvus
# 连接 Milvus 服务器
client = milvus.Milvus(host='localhost', port='19530')
# 定义查询向量
query_vector = np.array([0.1, 0.2, 0.3, 0.4, 0.5], dtype=np.float32)
# 查询向量归一化
query_vector_norm = query_vector / np.linalg.norm(query_vector)
# 构建查询参数
search_param = {
"metric_type": "L2",
"params": {"nprobe": 16}
}
# 在 milvus 中查询向量
search_result = client.search(collection_name='my_collection', query_records=[query_vector_norm.tolist()], top_k=10, params=search_param)
# 处理查询结果
for result in search_result:
print(result.id, result.distance)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。