背景
本文介绍一种叫做DiskANN的磁盘索引算法,它基于Vamana graph,DiskANN在大数据集上搜索非常有效。
为了提高查询性能,我们可以为每个向量字段设置特定的索引类型。
注意:当前,一个向量字段仅仅支持一个索引类型,milvus会在切换新的索引类型的时候自动删除旧的索引类型。
前置条件
如果使用DiskANN,请注意:
- DiskANN默认是开启的,如果我们倾向于选择内存索引而不是磁盘索引,建议我们禁用该功能来获得更好的性能
- 禁用:我们可以修改milvus的配置文件的配置项: queryNode.enableDisk为false
- 启用:设置 queryNode.enableDisk 为true
- milvus实例运行在Ubuntu 18.04.6或者更高的版本上
- 为了更好的性能,milvus数据路径应该挂载到 NVMe SSD
- 如果milvus是独立部署,容器里面运行的milvus实例的数据路径应该配置为:/var/lib/milvus/data
- 如果milvus是集群部署,容器里面运行的QueryNodes和IndexNodes的数据路径应该配置为:/var/lib/milvus/data
限制
为了使用DiskANN,需要确保:
- 只能使用浮点数向量,并且我们的向量至少是一维的。
- 只能使用欧几里得距离(L2)或者内积(IP)来计算向量之间的距离
索引和查询设置
- 索引构建参数
- 当构建DiskANN索引,使用 DISKANN作为索引类型