以阿里云OpenSearch为例谈向量检索技术选型
向量检索应用场景
非结构化数据(语音、图像、视频)检索
大模型知识记忆
搜索、推荐、广告
常见向量检索方法
Brute Force方法
ANN方法
基于树的方法
基于聚类的方法
基于量化的方法
基于哈希的方法
基于图的方法
异构计算
向量检索性能优化
HNSW算法分析
图结构
检索过程
从表 1 可以看到,在各种数据集的场景下,HNSW 的检索都存在不必要的计算,部分场景的有效计算甚至不到总计算量的 20%。倘若可以在检索时进行判断,提前终止游走,就可以节省这部分距离计算,从而在不影响召回率的情况下提升 qps。
构建阶段的优化:优化图结构,使图的出度入度更加合理,更利于 ANN 搜索;
检索阶段的优化:减少距离计算操作的开销,以及预测检索游走时所需的总步数,当到达预期步数时可以提前终止检索,以减少计算开销。
自适应终止算法
自适应距离比较算法
。
虚无假设H0 : 当前真实距离。
对立假设。
取显著值p为, 其中c0是常量,而是一个调出来的经验值。
假设H0成立,这样根据Johnson–Lindenstrauss lemma 事件的概率一定小于显著值p。
我们检测 事件 𝑑𝑖𝑠′ > (1 + 𝜖0/ 𝑑) · 𝑟 是否发生,如果发生那么H0不成立,及对立假设成立,反之亦然。
可以看出随着d的增大近似距离dis'会逐渐更加精确,那么对于的object会更容易被假设检验识别出来,而且真实距离dis越大的object越容易在更小的d维度就被假设检验识别出来(占大多数的negative DCO),从而大大节省计算量。
实验结果
(a). gist,top 10
(b). sift,top 100
在 gist 数据集上,召回率由 99.53% 变为 99.51% 时,qps 由 125.11 上升为 240.61,提升 92.3%;
在 sift 数据集上,召回率为 99.88% 时,qps 由 670.40 上升为 814.80,提升 21.5%;
在拍立淘数据集上,召回率由 99.20% 变为 99.19% 时,qps 由 80.42 上升为 139.72,提升 73.7%。
典型向量检索产品功能对比
向量检索性能对比
阿里云OpenSearch vs. Milvus vs. ElasticSearch
异构计算性能对比(阿里云OpenSearch vs. Milvus)
对比总结
阿里云开发者社区,千万开发者的选择
阿里云开发者社区,百万精品技术内容、千节免费系统课程、丰富的体验场景、活跃的社群活动、行业专家分享交流,欢迎点击【阅读原文】加入我们。
微信扫码关注该文公众号作者