高效图搜索:提升最近邻查找速度

4 阅读4分钟

更高效的近似最近邻搜索

新方法将基于图的搜索速度提升20%至60%,且不依赖特定的图构建方法。

作者:Hsiang-Fu Yu
2023年6月6日
阅读时长:4分钟

会议信息

The Web Conference 2023

相关论文

FINGER: 用于基于图的近似最近邻搜索的快速推理

技术正文

当今许多机器学习应用都涉及最近邻搜索:数据被表示为高维空间中的点;查询(例如要匹配到数据点的照片或文本字符串)被嵌入到该空间中;然后检索距离查询最近的数据点作为候选解。然而,计算查询与数据集中每个点之间的距离通常非常耗时,因此模型构建者转而使用近似最近邻搜索技术。其中最流行的方法之一是基于图的近似法,即将数据点组织成图结构。搜索算法遍历该图,并定期更新当前已遇到的离查询最近的点列表。

在一篇发表于今年Web Conference的论文中,我们描述了一种新技术,可大幅提升基于图的最近邻搜索效率。该技术基于以下观察:当计算查询与那些比当前候选列表中任何点都更远的点之间的距离时,使用近似距离度量通常就足够了。据此,我们提出了一种非常高效地计算近似距离的方法,并表明它能将近似最近邻搜索所需的时间减少20%到60%。

基于图的搜索

广义上讲,近似k最近邻搜索算法——即寻找离查询向量最近的k个邻居——分为三类:量化方法、空间划分方法和基于图的方法。在多个基准数据集上,基于图的方法迄今表现出了最佳性能。

给定查询q的嵌入表示,基于图的搜索会选取图中的一个点c,并探索其所有邻居(即与c共享边的节点)。算法计算这些节点到查询的距离,并将最近的那些点添加到候选列表中。然后,从这些候选中选择离查询最近的点,探索其邻居,并按需更新列表。此过程持续进行,直到未探索的图节点与查询向量之间的距离开始增加——这标志着算法正在离开真正最近邻的邻域。

距离近似

考虑查询向量q、当前正在探索邻居的节点c以及c的某个邻居d(我们想要计算d到q的距离)。

FINGER通过参考先前已探索节点c的向量来定义查询向量q与新图节点向量d之间的距离。q和c都可以表示为沿c方向上的投影(q_proj和d_proj)与垂直于c的“残差”向量(q_res和d_res)之和。

如果算法正在探索c的邻居,意味着它已经计算过c与q之间的距离。在我们的论文中,我们证明,利用已有计算结果以及对节点向量值的某些预处理(可预先计算并存储),估计q与d之间的距离就简化为估计它们残差向量之间的夹角。

我们论证,该夹角可以从c的即时邻居(即图中与c共享边的节点)的残差向量之间的夹角进行合理近似。核心思想是:如果q足够接近c以至于c值得探索,那么如果q是图的一部分,它很可能也是c的最近邻之一。因此,c的其他邻居的残差向量之间的关系,能够反映其中一个邻居d的残差向量与q的残差向量之间的关系。

性能评估

为了评估我们的方法,我们将FINGER的性能与三种先前的基于图的近似方法在三个不同数据集上进行了比较。在一系列不同的recall@10比率(即模型在排名前10的候选中找到查询真正最近邻的比率)下,FINGER的搜索效率均优于其所有前身。在某些情况下差异相当显著——在一个数据集上,当召回率达到98%的高水平时,效率提升达50%;在另一个数据集上,当召回率为86%时,效率提升接近88%。

研究领域

  • 搜索与信息检索

标签

  • The Web Conference

关于作者

Hsiang-Fu Yu
某机构高级应用科学家FINISHED