用于在向量空间中搜索的NoSQL DB

时间:2015-05-27 17:20:14

标签: vector cassandra redis distance nosql

我是NoSQL DBS的新手,如Cassandra,Mongo,Redis等,我想创建这种类型的结构:

{
  "item_id": "ABC1",
  "x1": 0.55,
  "x2": -0.29,
  ...
  "x100": 0.17
}

基本上,我有数以百万计的物品和100个浮子与它们相关联。我的主要任务是搜索给定浮动向量附近的项目(在维度为100的向量空间中),并获得前k个项目或距离小于d的所有项目。

NoSQL数据库是否特别适合此类任务?

谢谢你的提示, 帕特里克

3 个答案:

答案 0 :(得分:2)

据我所知,目前还没有对非(2 | 3)D空间索引提供开箱即用支持的数据库,但您可以在应用层内部实现自己的数据库。

一般来说,您希望有一个有效的N维最近邻搜索算法,如下所示:

  • 具有总体O(log N)复杂度的KD-Tree
  • 地理散列

但是两者都很难正确实施。

答案 1 :(得分:1)

我相信没有提到过的数据库会给你所需要的东西,特别是你拥有的数据量,我建议使用Solr,我有类似的情况,Solr是最好的解决方案。

答案 2 :(得分:0)

2020年此问题的更新:Elasticsearch具有开箱即用的余弦相似性功能,可用于具有多达2048个特征(使用“密集矢量”数据类型)的矢量。 我现在正在使用它,它对于具有数十万个向量的数据集非常适用。