- 文档首页
云搜索服务
最佳实践
向量检索
使用 DiskANN 向量引擎
使用 DiskANN 向量引擎
本文介绍如何在火山引擎云搜索服务中使用 DiskANN 向量引擎,并通过 RaBitQ 量化技术实现更低成本的向量存储和检索能力。
传统的向量引擎和算法都将索引结构和图放在内存里以加速计算,在几亿至千亿的海量多模态数据搜索的场景下,这种方式会占用大量的内存,造成系统稳定性差且成本极高。针对这一情况,火山引擎云搜索服务则利用了 IO 的能力来分担内存的压力,将 DiskANN 算法引入到 OpenSearch 中,实现了性能型和容量型的最优结合,并通过 RaBitQ 量化技术进行更高性能、更低成本的迭代,实现更大数据规模下更低成本的向量存储和检索能力。
说明
- DiskANN + RaBitQ 功能和 DiskANN 功能均已正式发布。
"space_type": "cosinesimil",
"quant_type": "rabitq",
在火山引擎云搜索服务中,space_type 参数支持的取值如下:
- l2:向量的差的平方求开方,没有方向只有距离,适合只需要距离的场景,一般用来表示高维坐标的正距离。
- cosinesimil:0~1 的归一化分值, 既有方向又有距离,适合语义搜索场景。
- innerproduct:非归一化分值, 既有方向又有距离,适合语义搜索场景。
"number_of_replicas": 0,
"knn.algo_param.diskann.store_strategy": "MEMORY",
"knn.algo_param.diskann.distance_strategy": "MULTI_BITS",
"knn.algo_param.diskann.sl": 200
注意
store_strategy 和 sl 参数支持索引级别和集群级别配置,若同时设置了索引级别和集群级别的配置,则索引级别的配置会覆盖集群级别的配置。因此,若仅需针对某个索引进行配置,则直接在索引配置中设置相关参数即可,无需在集群配置中再次设置。
"index.knn.algo_param.diskann.store_strategy": "MEMORY",
"index.knn.algo_param.diskann.distance_strategy": "MULTI_BITS",
"index.knn.algo_param.diskann.sl": 200
参数说明:
- index.knn.algo_param.diskann.b:代表 PQ 的估算内存大小,默认为 0.03 GB。
- index.knn.algo_param.diskann.m:代表 V 图的大小,默认为 5 GB。
- index.knn.algo_param.diskann.sl:代表 search list 的大小,默认为 100。
- index.knn.algo_param.diskann.cache_nodes_number:代表下载图的时候,缓存节点的个数,默认为 0。
- index.knn.algo_param.diskann.beam_search:代表 DiskANN 查询的时候 BeamSearch 的大小,默认为 1。
- index.knn.algo_param.diskann.store_strategy:代表 DiskANN 加载的时候是 Disk,Memory,Hybrid,默认为 Disk。
- Hybrid 降低 50%~60% 成本,且亚秒级响应。
POST _plugins/_knn/clear_cache/{index_pattern}
GET _plugins/_knn/warmup/{index_pattern}
"space_type": "cosinesimil",
在上述配置中,space_type 参数支持的取值如下:
- L1:是指两个向量的差,一般用来表示高维坐标距离。
- L2:向量的差的平方求开方,没有方向只有距离,适合只需要距离的场景,一般用来表示高维坐标的正距离。
- cosinesimil:0~1 的归一化分值, 既有方向又有距离,适合语义搜索场景。
- innerproduct:非归一化分值, 既有方向又有距离,适合语义搜索场景。
- hamming:适合位级别的距离,适合基因序列搜索或者推荐的 simhash 向量等。
"number_of_replicas": 0
说明
如无特殊要求可不进行集群配置,不影响引擎的正常使用。
"cache_nodes_number": "100000",
参数说明:
- index.knn.algo_param.diskann.b:代表 PQ 的估算内存大小,默认为 0.03 GB。
- index.knn.algo_param.diskann.m:代表 V 图的大小,默认为 5 GB。
- index.knn.algo_param.diskann.sl:代表 search list 的大小,默认为 100。
- index.knn.algo_param.diskann.cache_nodes_number:代表下载图的时候,缓存节点的个数,默认为 0。
- index.knn.algo_param.diskann.beam_search:代表 DiskANN 查询的时候 BeamSearch 的大小,默认为 1。
- index.knn.algo_param.diskann.store_strategy:代表 DiskANN 加载的时候是 Disk,Memory,Hybrid,默认为 Disk。
- Hybrid 降低 50%~60% 成本,且亚秒级响应。
POST _plugins/_knn/clear_cache/{index_pattern}
GET _plugins/_knn/warmup/{index_pattern}
最近更新时间:2026.03.03 17:07:08