用于在向量中搜索的 NoSQL DB space

NoSQL DB for searching in vector space

我完全不熟悉 NoSQL DBS,例如 Cassandra、Mongo、Redis 等,我想创建这种类型的结构:

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

基本上,我有数百万个项目和 100 个与每个项目关联的浮点数。我的主要任务是搜索靠近给定浮点向量的项目(在维度 100 的向量 space 中),并获取例如前 k 个项目或距离小于 d 的所有项目。

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

感谢您的任何提示, 帕特里克

我相信 none 提到的 DB 会满足您的需求,尤其是对于您拥有的数据量,我建议使用 Solr ,我有类似的情况,而 Solr 是最好的解决方案.

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

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

  • 整体复杂度为 O(log N) 的 KD 树
  • Geohash

但要正确实施它们都非常棘手。

此问题的 2020 年更新:Elasticsearch 具有 out-of-the-box 余弦相似度函数,适用于具有多达 2048 个特征的向量(使用“密集向量”数据类型)。 我现在正在使用它,它适用于具有多个 hundred-thousand 向量的数据集。