Python 框架用于在大型高维数据集中使用不同的局部敏感哈希进行快速(近似)的最近邻搜索。
NearPy 是一个 Python 框架,用于在高维向量空间中使用不同的局部感知哈希方法进行快速(近似)的最近邻搜索。 它允许进行实验和评估新方法,同时也可用于生产。它配备了 Redis 存储适配器。 要安装,只需执行 pip install NearPy。它还会安装 scipy、numpy 和 Redis 等包。 目前支持密集和稀疏(scipy.sparse)向量。 请参阅此处: http://pixelogik.github.io/NearPy/
为了找到查询向量的近似邻居,首先需要对要存储的向量进行索引。对于每个应被索引(即"存储")的向量,都会生成一个哈希值,即一个字符串值。此哈希值用作向量存储到的桶的桶键。在大多数情况下,桶只是向量的列表,这是这些应用程序中使用的术语。
对于查询向量的最近邻查找来说,这种方法并没有用处。因此,这个机制的"秘密"就是使用所谓的局部敏感哈希(LSH)。这些哈希考虑了空间性,因此它们倾向于为接近的向量生成相同的哈希值(桶键)。这使得给定查询向量时,获得接近的向量变得非常快速。由于这是一种非常粗略的方法,因此被称为近似最近邻搜索,因为您可能无法获得真正的最近邻。在许多应用中,这并不成问题,因为您只想获得20个"足够相等"的向量。
使用 NearPy 时,您大多数情况下会通过配置和使用 Engine 对象来实现此操作。Engine 是使用局部敏感哈希 (LSH) 的近邻搜索 (ANNS) 的可配置管道。可以通过接受管道中不同组件的构造函数来配置 Engine:
暂无开放 Issues,或尚未同步最近议题。