DiskANN十亿级规模向量检索方案论文浅谈

个人主页:mzwang.top

论文信息

题目:DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node

作者:Suhas Jayaram Subramanya, Devvrit, Rohan Kadekodi, Ravishankar Krishaswamy, Harsha Vardhan Simhadri; 发表于NeurIPS 2019

前言

一些优秀的中文解读:(1)https://www.jianshu.com/p/07ed2202f107(简书);(2)https://mp.weixin.qq.com/s/KgjpRGF4AoUskFESZR4lxQ(微信)

一些相关资料:https://mp.weixin.qq.com/s/WQcO5tLMwVODHeOtrNvo7A(微信)

概览

之前读这篇论文并做了简单记录,再读这篇论文,我主要考虑以下几个问题:

(1)如何划分大数据集?在划分数据集时存在的两个普遍问题,即子集不平衡问题和相邻子集的边界问题,是如何解决的?

(2)数据集划分后,分别在每个子集构建子图,而后子图如何合并?

(3)文中裁边时的 α \alpha α​​是如何影响搜索时磁盘IO次数的?想看到实验研究和相应的观测分析。

(4)对文中其他减少磁盘IO次数的方案的实验研究。

对于问题(1),如果划分数据集为多个不相交的子集,而如果查询刚好处在多个子集的交界处,则我们需要访问多个子集,这会带来很多麻烦(最近了解到一些公司在寻求仅访问一个子集便可较精确的获取查询结果的方案)。本文通过k-means划分数据集。子集不平衡问题,本文没有说明如何处理。相邻子集的边界问题,本文将每个元素划分到离它最近的 l l l​​​(本文设置取2)个子集(集簇)里面。

对于问题(2),本文采用对边取并集来合并子图,由于每个元素同时存在两个子集中,因此这很容易实现。

对于问题(3),本文提供一个Vamana, NSG, HNSW三者在SIFT1M上搜索跳数(给定召回下)对比,随着图邻居上限(出度)的增大,Vamana跳数明显下降,而NSG和HNSW变化不大,这可以理解。不过,这个实验太过简单,本人认为最大出度(Max degree)不是一个好的指标,更有价值的指标应该是:实际的平均出度。由于NSG,HNSW裁边策略的特点,增加Max degree,它们的实际平均出度可能没有明显变化,而Vamana由于 α > 1 \alpha > 1 α>1的缘故,它的实际平均出度会随Max degree的增大而增大。因此,Vamana具有更小的跳数可能仅仅是由于它的边更多,而NSG和HNSW的边较少。文中的实验和分析很容易让读者以为它们三者在相同的出度情况下,Vamana有更多的长边使它的跳数较小,而实际可能并非如此(如上面分析)。

对于问题(4),本文给出了一些优化思路和推荐设置,也给出了一些intuition,但没有从研究的角度去系统分析不同设置的影响。一些技巧包括:索引布局、集束搜索、缓存频繁访问的顶点。涉及到的参数都是可研究的内容。

一些考虑

增大 α \alpha α会增加长边,这一点严格来说不太准确。 α = 1 \alpha=1 α=1​​​时,即NSG的裁边策略,它的基本思想是(参考前沿中中文解读(2)):如果一个候选邻居相比目标点更靠近目标点的已有邻居,则该候选邻居不必加入到邻居点集中。沿着这一思想,如果增大 α \alpha α,则某些不满足以上规则的候选邻居可能会加入到邻居点集中,这与增加长边并没有直接关系,因为 α = 1 \alpha=1 α=1​​时的选边本身就是增加长边的一种策略(不仅仅连接距离目标点最近的邻居,而且还要连一些其它方向距离目标点较远的邻居,即长边)。其实增大 α \alpha α​以增加长边是在我们已首先获取距离目标点较远的候选邻居的前提下实现的,比如在较大的 α \alpha α​下我们就可以连上那些候选邻居,它与目标点和目标点的已有邻居共线(或近似共线,可参考图2),这样的候选邻居在 α = 1 \alpha=1 α=1​时无法选上。然而,要想获取到距目标点远的候选邻居,我们需要增加获取到的候选邻居的尺寸,这对增加长边来说是更关键的。因此,“增大 α \alpha α会增加长边”是需要有前提的,而且更确切地说增大 α \alpha α​​会增加边,无论长边还是短边

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值