Vector 用于向量空间搜索的nosqldb
我对NoSQL数据库(如Cassandra、Mongo、Redis等)完全陌生,我想创建这种类型的结构: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我相信
{
"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)中使用结果位向量(与一个给定向量相关)。