目录

简介

相似性搜索的概念是在n维空间中通过比较数据之间的相似性,寻找与输入点最接近的目标点。

解决方案

为了解决该问题,最常用解决方案就是对数据集使用索引技术。通过事先对数据集进行索引,从而达到高效搜索n维空间数据的目的。在相似性搜索中,数据索引的方案可以分为三大类,分别是哈希索引、树索引以及图索引。

哈希索引

一种常用的索引方法是局部敏感哈希(Locality Sensitive Hashing,LSH)算法。LSH的方法通常更适合于范围搜索,而非近邻搜索。

下面是LSH函数h的条件:
1. 如果 d(x,y)<=d1,则 P(h(x)=h(y))>=p1
2. 如果 d(x,y)>=d2,则 P(h(x)=h(y))<=p2

树索引

常见树索引方案:R树、kd树。

常见开源库:FLANN(Fast library for approximate nearest neighbors)。

图索引

图索引的方法是通过近邻图寻找最近的节点。最近邻图(NNG)中的每一个点通过距离计算被连接到最接近的点上。由于需要对所有节点计算最邻近点,通常KNNG在构建的时候随着节点数量的上升会非常耗时。但在实际运用中,采用一种ANNG的方案可以大大优化构建过程。2015年基于ANNG发布的NGT的开源项目,也已经被应用在多项实际业务上了。

参考