在推荐和搜索场景下,召回recall是一个关键的步骤,这个步骤通常需要在海量的目标中,召回部分与用户特征相近的item,所以有一个快速,并且准去的算法是非常有必要的,HNSW(Hierarchical Navigable Small World)就是其中一种方法,当然HNSW也不止用于此。
对于召回的场景下,每个需要进行召回的item已经用户的特征都是多维的,在多个特征维度的空间中,找到与用户特征最相近的topK。所以召回的问题其实可以抽象化为在多维空间中,找到与某个点邻近的topK个点。
HNSW(Hierarchical Navigable Small World)
翻译成中文为分级导航小世界,是基于图数据结构的搜索算法,将复杂问题转化成ANN
,来解决此类问题。
ANN(Artificial Neural Network)人工神经网络。
NSW(Navigable Small World)
在HNSW
之前提出的NSW
是HNSW的基础,这个算法解决了邻近点搜索的基本问题。
比如我们现在将问题就从多维简化为二维,并且推荐item和用户都的当成一个点的话,那么我们的问题就可以简化为,二维平面中存在海量的点,我们收集到一个用户的特征,就相当于二维空间中给用户找到了他的坐标,那么我们现在要在这些海量的点中找出离用户坐标最近的topK,这就是问召回也就是NSW和HNSW要做的。
构建索引结构
首先