【问题标题】:Distributed LSH (locality sensitive hashing)分布式 LSH(局部敏感散列)
【发布时间】:2011-04-29 15:40:32
【问题描述】:

我想使用 LSH 构建一个包含数百万个高维向量的大型可扩展数据库。由于我必须将所有数据保存在 ram 中以进行快速查询,因此必须将数据分布到多个服务器上以保存所有对象。

一种天真的方法是将所有对象分散到不同的服务器,然后向每个服务器发送一个查询。具有最佳答案的服务器正确地具有正确的对象。

我确信一定有更好的解决方案,其中不必将查询发送到所有服务器节点,并且类似的对象在一个服务器上组合在一起。

分布式 LSH 表的好方法是什么?也许还有一些项目在那里?

感谢任何提示。

【问题讨论】:

标签: database distributed hash


【解决方案1】:

首先,您要考虑访问数据的键。您想要散列的正是这些键 - 如果您知道要访问的确切键,您可以对它们进行散列以确定要查询的服务器 - 无需查询每个服务器。

如果您不知道确切的键(我怀疑是您的情况),事情会变得更加困难 - LSH 会为您的记录生成一个总排序 - 其中相似的记录可能(但不能保证)具有相同的哈希值.例如,我认为这是超平面到其法线向量从原点的长度的映射......因此,例如,如果搜索与 4 到 5 之间的相似(但不相同)的超平面距离原点的单位,开始寻找的好地方是距离原点 4 到 5 个单位之间的其他超平面。因此,如果这个“与原点的距离”是您的位置敏感哈希函数,您可以使用它shard 您的数据,并且这样做 - 您可以通过仅搜索带有匹配“与原点的距离”LCH。使用这种特定的 LCH,其中相似性与散列线性相关,可以在仅访问分布式服务器的子集时获得确定的结果。并非所有 LSH 函数都是如此。

恕我直言,一切都取决于您的 LSH 功能 - 而选择取决于您的应用程序的具体情况。

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 2016-09-19
    • 2012-12-27
    • 2020-05-19
    • 2016-09-25
    • 2012-12-08
    • 2016-03-16
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多