当前位置 : 首页 » 文章分类 :  开发  »  Milvus

Milvus

Milvus 开源向量相似度检索引擎,向量数据库

https://github.com/milvus-io/milvus


向量索引

https://milvus.io/cn/docs/v2.0.x/index.md

FLAT 无索引100%召回

FLAT 是指对向量进行原始文件存储,是唯一可以保证精确的检索结果的索引。FLAT 的结果也可以用于对照其他召回率低于 100% 的索引产生的结果。
对于每个查询,目标输入都要与数据集中的每个向量进行比较。

FLAT 是对向量的暴力搜索(brute-force search),速度最慢,但召回率最高(100%),磁盘空间占用最小。

IVF_FLAT 聚类

IVF_FLAT 索引通过聚类方法把空间里的点划分至 nlist 个单元,然后比较目标向量与所有单元中心的距离,选出 nprobe 个最近单元。然后比较这些被选中单元里的所有向量,得到最终的结果,极大地缩短了查询时间。
IVF_FLAT 索引不会对原始向量进行压缩,IVF_FLAT 索引文件的大小与原始数据文件大小相当。

建索引参数
nlist 聚类单元数,取值范围 [1, 65536]

查询参数
nq 输入向量个数
nprobe 查询取的单元数,取值范围 [1, 65536]

IVF_SQ8 聚类+压缩

IVF_SQ8 索引在 IVF_FLAT 基础上进行向量压缩。
IVF_SQ8 通过对向量进行标量量化(scalar quantization),能把原始向量中每个FLOAT(4 字节)转为UINT8(1 字节),从而可以把磁盘及内存、显存资源的消耗量减少为原来的 1/4 至 1/3。同样以 sift-1b 数据集为例,生成的 IVF_SQ8 索引文件只有 140 GB。


性能测试报告

https://milvus.io/docs/benchmark.md

100 万 128 维 SIFT 向量,建立 IVF_FLAT 索引,nlist=2048,1比n检索返回top1,入参 nprobe=16,并发检索,可达 440 qps、120 ms 平响
5000 万 128 维 SIFT 向量,建立 IVF_FLAT 索引,nlist=4096,1比n检索返回top1,入参 nprobe=16,并发检索,10个 query nodes 可达 90qps,216 ms 平响

百万512维,falt,(16c16g)*2,tp99 200ms,240qps
千万512维,flat,(16c32g)*2,tp99 2s,20qps
https://www.51cto.com/article/740699.html


距离计算方式

https://milvus.io/cn/docs/v2.0.x/metric.md


上一篇 2022年7月装机

下一篇 Arthas

阅读
评论
551
阅读预计2分钟
创建日期 2022-07-08
修改日期 2024-04-17
类别
标签

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论