我是NoSQL DBS的新手,如Cassandra,Mongo,Redis等,我想创建这种类型的结构:
{
"item_id": "ABC1",
"x1": 0.55,
"x2": -0.29,
...
"x100": 0.17
}
基本上,我有数以百万计的物品和100个浮子与它们相关联。我的主要任务是搜索给定浮动向量附近的项目(在维度为100的向量空间中),并获得前k个项目或距离小于d的所有项目。
NoSQL数据库是否特别适合此类任务?
谢谢你的提示, 帕特里克
答案 0 :(得分:2)
据我所知,目前还没有对非(2 | 3)D空间索引提供开箱即用支持的数据库,但您可以在应用层内部实现自己的数据库。
一般来说,您希望有一个有效的N维最近邻搜索算法,如下所示:
但是两者都很难正确实施。
答案 1 :(得分:1)
我相信没有提到过的数据库会给你所需要的东西,特别是你拥有的数据量,我建议使用Solr,我有类似的情况,Solr是最好的解决方案。
答案 2 :(得分:0)
2020年此问题的更新:Elasticsearch具有开箱即用的余弦相似性功能,可用于具有多达2048个特征(使用“密集矢量”数据类型)的矢量。 我现在正在使用它,它对于具有数十万个向量的数据集非常适用。