Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vector 用于向量空间搜索的nosqldb_Vector_Cassandra_Redis_Distance_Nosql - Fatal编程技术网

Vector 用于向量空间搜索的nosqldb

Vector 用于向量空间搜索的nosqldb,vector,cassandra,redis,distance,nosql,Vector,Cassandra,Redis,Distance,Nosql,我对NoSQL数据库(如Cassandra、Mongo、Redis等)完全陌生,我想创建这种类型的结构: { "item_id": "ABC1", "x1": 0.55, "x2": -0.29, ... "x100": 0.17 } 基本上,我有数以百万计的物品和100个与之相关的浮动。我的主要任务是搜索靠近给定浮点向量的项(在维度100的向量空间中),并获取例如前k个项或距离小于d的所有项 是否有一个NoSQL数据库特别适合这种任务 谢谢你的提示, Patrick我相信

我对NoSQL数据库(如Cassandra、Mongo、Redis等)完全陌生,我想创建这种类型的结构:

{
  "item_id": "ABC1",
  "x1": 0.55,
  "x2": -0.29,
  ...
  "x100": 0.17
}
基本上,我有数以百万计的物品和100个与之相关的浮动。我的主要任务是搜索靠近给定浮点向量的项(在维度100的向量空间中),并获取例如前k个项或距离小于d的所有项

是否有一个NoSQL数据库特别适合这种任务

谢谢你的提示,
Patrick

我相信上面提到的数据库都不能满足您的需要,特别是您拥有的数据量,我建议使用,我有类似的案例,Solr是最好的解决方案。

据我所知,目前还没有数据库支持非(2 | 3)D空间索引,但您可以在应用程序层内实现自己的

通常,您希望有一个高效的N维最近邻搜索算法,如下所示:

  • 整体O(logn)复杂度的KD树
  • 地理哈希

但这两种方法都很难正确实现。

2020更新此问题:Elasticsearch为最多2048个特征的向量提供现成的余弦相似性函数(使用“密集向量”数据类型)。
我现在正在使用它,它适用于具有几十万个向量的数据集。

AFAIK Solr/Elasticsearch没有用于非2D空间搜索的原语。@Abdullah我知道Solr将文档存储在向量空间中,并计算查询向量和文档向量之间的余弦相似性。但是这些向量是在幕后计算的。是否可以存储我自己的向量并搜索最接近某个特定向量的向量?谢谢Shutty。我还考虑使用LSH算法来降维,并在redis键值模式(key:bit vector,value:items,属于这个bucket)中使用结果位向量(与一个给定向量相关)。