我对NoSQL DBS(如Cassandra,Mongo,Redis等)完全陌生,我想创建这种类型的结构:
{
"item_id": "ABC1",
"x1": 0.55,
"x2": -0.29,
...
"x100": 0.17
}
字符串
基本上,我有数百万个项目,每个项目有100个浮点数。我的主要任务是搜索给定浮点数向量附近的项目(在100维的向量空间中),并获得例如前k个项目或距离小于d的所有项目。
有没有特别适合这种任务的NoSQL数据库?
谢谢你的提示,帕特里克
4条答案
按热度按时间e7arh2l61#
据我所知,目前还没有现成的数据库支持非(2| 3)D空间索引,但你可以在应用层中实现自己的索引。
一般来说,你希望有一个高效的N维最近邻搜索算法,如下所示:
但这两个都是相当棘手的正确实施。
zynd9foi2#
我相信没有一个提到的数据库会给你给予你所需要的,特别是你拥有的数据量,我建议使用Solr,我有类似的情况和Solr是最好的解决方案。
yduiuuwa3#
Elasticsearch为多达2048个特征的向量提供了开箱即用的余弦相似度函数(使用“密集向量”数据类型)。我现在正在使用它,它适用于具有数十万个向量的数据集。
uhry853o4#
2023更新的问题:Cassandra现在是一个很好的替代这个需要.它被创建来处理大量的数据.你可以尝试它与DataStax Astra.只需创建一个免费的帐户,并运行它.
创建DB后,您可以像这样创建表:
字符串
然后,你需要创建一个索引:
型
您可以选择其他指标:余弦,欧几里德或点积。
然后,在加载数据后,您可以使用以下命令进行查询:
型
其中:my_vector是一个100维的向量,我们希望从中找到10个最相似的对象。