目录
Milvus 的数据落盘逻辑是怎样的?
Mishards 推荐的配置是什么?
Mishards 支持 RESTful API 吗?
什么是归一化?Milvus 中为什么有时候需要归一化?
为什么欧氏距离和内积在计算向量相似度时的结果不一致?
Milvus 对集合和分区的总数有限制吗?
为什么搜索 topk 向量,结果不到 k 条向量?
Milvus 支持的向量维度的最大值是多少?
Milvus 的数据落盘逻辑是怎样的?
插入时把数据写到内存,定时地把缓存里的数据落盘。如果调用 flush 方法,也会触发落盘的动作。
详见 存储操作 > 数据落盘。
Mishards 推荐的配置是什么?
推荐写节点用 GPU 版 Milvus,读节点用 CPU 版 Milvus。比如现在只能用单个写节点,这个写节点可以配置 GPU 资源用来建索引,读节点都配置成 CPU 节点。
Mishards 支持 RESTful API 吗?
目前不支持。
什么是归一化?Milvus 中为什么有时候需要归一化?
归一化指的是通过数学变换将向量的模长变为 1 的过程。如需使用点积计算向量相似度,则必须对向量作归一化处理。处理后点积与余弦相似度等价。
可参阅文章 向量搜索的简明数学基础。
为什么欧氏距离和内积在计算向量相似度时的结果不一致?
如果欧氏距离和内积返回不一致的结果,需要检查数据是否已经归一化。如果没有,请先对数据进行归一化。理论上可以证明,对于未归一化的数据,欧氏距离和内积的结果是不一致的。
Milvus 对集合和分区的总数有限制吗?
collection 数量没有限制。每个 collection 内的 partition 总数不能超过 4096 个。
为什么搜索 topk 向量,结果不到 k 条向量?
在 Milvus 支持的索引类型中,IVF_FLAT 和 IVF_SQ8 是基于 k-means 空间划分的分单元搜索算法。空间被分为 nlist 个单元,导入的向量被分配存储在基于 nlist 划分的文件结构中。搜索发生时,只搜索最近似的 nprobe 个单元。
如果 nlist 和 k 比较大,而 nprobe 又足够小,有可能出现 nprobe 文件中的所有向量总数小于 k。当搜索 topk 向量时,就会出现搜索结果小于 k 条向量的情况。
想要避免这种情况,可以尝试将 nprobe 设置为更大值,或者把 nlist 和 k 设置为更小值。
详见 索引类型。
Milvus 支持的向量维度的最大值是多少?
Milvus 最多能够支持 32,768 向量维度。