摘要
本篇论文来自于 SIGMOD 2023,介绍了一种可靠和有效的距离比较操作的高维近似最近邻搜索。主要工作1.提出一种随机算法 ADSampling; 2.基于 ADSampling ,开发了两种算法特定的技术作为插件来增强现有的 AKNN 算法。
论文背景
提出问题:
在高维空间中,几乎所有 AKNN 算法的时间消耗都由距离比较操作(DCOs)所占据。对于每个操作,它扫描一个对象的全部维度,因此在维度上运行的时间是线性的。
解决方法:
提出了一种随机算法,名为 ADSampling,它在大多数距离比较操作(DCOs)中运行时间是对数级别,并且具有高概率成功。特点概括起来便是1. 缩短比较时间;2. 成功率高。
论文主要工作:
(1)提出一种随机算法 ADSampling;
(2)基于 ADSampling,我们开发了两种算法特定的技术作为插件来增强现有的AKNN算法。
其中,两种特定技术为:HNSW++和 IVF++。
HNSW++ 是基于 HNSW 算法的改进,通过使用更好的近似距离和更高效的候选生成策略来提高搜索速度。
IVF++ 是基于 IVF 算法的改进,通过重新组织数据布局和调整维度顺序来提高缓存友好性,从而减少内存访问开销,提高搜索速度。
传统方法:
1、FDScanning:计算对象的距离(从查询点),然后将计算的距离与阈值进行比较。(需要扫描对象的全部维度来执行操作)
2、PDScanning:增量扫描原始向量的维度,并在基于部分扫描的𝑑维度的距离(如下图公式)大于距离阈值𝑟时终止该过程。
ADSampling 核心:
将对象投影到具有不同维度的空间中,并基于投影向量进行比较操作(DCOs)以提高效率。
原理:对于远离查询的负对象来说,将它们投影到维数更少的空间就足以进行可靠的比较操作(DCOs); 而对于靠近查询的负对象,它们应该被投影到具有更多维数的空间中以进行可靠的比较操作(DCOs)。
实现步骤:
(1)通过随机正交变换对对象进行预处理。(注:这一步仅是随机地旋转对象而不扭曲它们的距离。)
(2)在查询阶段处理不同对象的比较操作(DCOs)时,它会对其转换后的向量进行不同维度的采样。
注:ADSampling 根据查询期间对象的 DCO 自适应地决定每个对象要采样的维度数量,而不是在索引阶段预设一个确定的数量(这需要具有专业知识,实践中难以设置)
ADSampling实现流程
随机向量投影过程
给定一个对象 x,我们首先对 x(向量) 应用一个随机正交矩阵 𝑃' ∈ R 𝐷×𝐷,然后对其上的𝑑行进行采样(为简单起见,使用前𝑑行)。
结果表示为(𝑃' x)|[1,2,…,𝑑]。
我们将转换后的向量表示为 y := 𝑃′x
基于采样的维度,我们可以计算出 x 的近似距离,表示为 dist'
其中 d 是采样的维度数量。值得注意的是,基于采样维度计算近似距离的时间复杂度为 O(d)。
假设检验寻找合适 d
待解决问题:如何确定需要采样多少个 y 的维度,才能对距离比较操作(DCOs)做出足够自信的结论(即是否决定 𝑑𝑖𝑠 ≤ 𝑟)
假设检验的步骤:
(1)定义一个零假设 H0: dis ≤ r 和它的备择假设 H1: dis > r。
(2)使用 𝑑𝑖&#x