XueJian-Zhang
XueJian-Zhang
你好,我遇到了跟你一样的问题,创建milvus向量字段类型是FloatVector,然后插入的向量是这种的  但是获取到以后是这样的  请问有什么解决办法么?
> > 你好,我遇到了跟你一样的问题,创建milvus向量字段类型是FloatVector,然后插入的向量是这种的  但是获取到以后是这样的  请问有什么解决办法么? > > 请问你怎么生成的向量?然后怎么打印的向量 floatvector打印出来不可能有那么多位数的 这个是python一个自定义的工具类,用于提取照片的某些特征值生成的向量。
> 大概率你这个数据存错了,用了double格式。这点精度对于搜索不会有任何区别 经过提醒。我查看了代码。没有用double,因为定义集合时设置了向量类型是FloatVector,在存储数据时,不能用double格式的,那样会产生“Type mismatch for field 'feature': Float vector field's value type must be List”错误,所以用的List。然后存储的时候向量值是  ,但是在milvus的可视化平台中,存储的向量值和postman中发送的请求参数一致。 
> > 但是获取到以后是这样的 > > 请问你是用什么办法获取的? restful api? @XueJian-Zhang 直接调用milvus的api就可以获取到,网上有很多教程。你可以参考下这位博主的方法:https://blog.csdn.net/lsqingfeng/article/details/138212915
> > > 大概率你这个数据存错了,用了double格式。这点精度对于搜索不会有任何区别 > > > > > > 经过提醒。我查看了代码。没有用double,因为定义集合时设置了向量类型是FloatVector,在存储数据时,不能用double格式的,那样会产生“Type mismatch for field 'feature': Float vector field's value type must be List”错误,所以用的List。然后存储的时候向量值是  ,但是在milvus的可视化平台中,存储的向量值和postman中发送的请求参数一致。  > > 他们目前不支持double,至于attu客户端显示的向量小数位数,是因为js会自动补小数,并不能当真。 好的,谢谢。
> python/javascript这些语言的浮点型是跟系统的位数走的,64位系统就会以64位来表示浮点数,但实际上在调用milvus rpc接口的时候其实都是以float32传输。对于用户来说就像变了个魔术似的。 但java是强制要求Float也就是32位输入,熟悉java的用户不应该有这种迷惑。 以32位浮点输入就已经明确告诉你向量在后台是以32位数据传输,存储,以及计算。所以它根本不可能再变出64位精度的小数给你。 向量近似近邻检索已经是一个模糊检索的概念,用来比对相似的事物。如果说我们要比较两张人脸是否相似,难道我们会去关心这两人的头发数量是否相等么?在大部分场景下,用64位精度的向量就相当于掩耳盗铃,非但对召回率没什么影响,计算负载和内存负载还大了一倍,得不偿失。 你好,我使用python的两种方式查询了同一个id的向量值,可是得到的向量值却不相同,一种是根据向量id,另一种是根据向量值。请问为什么查询结果向量值的精度会不一样呢? 