如何用合理的时间计算DB中的大量记录
How to calculate a lot of records in DB with reasonable time
如果我的应用程序中有一个向量(例如: (5,4,6,8)
)并且我想找到与我的数据库中其他向量的相似性,为简单起见,我正在计算两个向量之间的距离Manhattan distance.
我需要一种方法来计算我的向量与存储在我的数据库中的所有向量之间的算法(在我的示例中为曼哈顿距离),我可以在几秒钟内完成 1000 万个向量吗?
如果您真的要处理大量数据,那么您真正需要的是一个近似近邻 - http://en.wikipedia.org/wiki/Nearest_neighbor_search#Approximate_nearest_neighbor implementation. Take look at Annoy - https://pypi.python.org/pypi/annoy/1.8.0 项目页面。有一个与其他 ANN 项目的基准,您会发现它很有趣。也许有一个作为 DB 插件的实现,但我不知道这样。然而,ANN 也可以用于预先计算 top-n NN,并将它们作为 User/Item 的列表存储在 DB 中。
如果我的应用程序中有一个向量(例如: (5,4,6,8)
)并且我想找到与我的数据库中其他向量的相似性,为简单起见,我正在计算两个向量之间的距离Manhattan distance.
我需要一种方法来计算我的向量与存储在我的数据库中的所有向量之间的算法(在我的示例中为曼哈顿距离),我可以在几秒钟内完成 1000 万个向量吗?
如果您真的要处理大量数据,那么您真正需要的是一个近似近邻 - http://en.wikipedia.org/wiki/Nearest_neighbor_search#Approximate_nearest_neighbor implementation. Take look at Annoy - https://pypi.python.org/pypi/annoy/1.8.0 项目页面。有一个与其他 ANN 项目的基准,您会发现它很有趣。也许有一个作为 DB 插件的实现,但我不知道这样。然而,ANN 也可以用于预先计算 top-n NN,并将它们作为 User/Item 的列表存储在 DB 中。