我在 2.3 中通过搜索 Milvus 集合返回距离结果。 我使用级别 1 的 L2 度量类型。我通过运行带有平方差异的快速 Python 3 数学来检查距离数字。
数字不一样。
Milvus 返回 0.001152675598859787 数学说 0.00664182539563
所有向量都以 float32 值的形式存储在服务器端 Miilvus 的对象存储中。
即使您在代码中使用 float64 值,这些值也会在客户端转换为 float32 值,并通过 grpc 接口作为 float32 值传输。
当您使用“output_fields”返回向量时,milvus 服务器返回 float32 值给客户端,python 客户端会自动将其转换为 float64 值。虽然你看到的是 float64 值,但实际上只有 6 ~ 7 位是精确的。 这样浮点转换就会出现问题。