【问题标题】:How to efficiently index vectors of 2000 values in PostgreSQL and find nearest neighbours?如何在 PostgreSQL 中有效地索引 2000 个值的向量并找到最近的邻居?
【发布时间】:2020-02-24 13:38:17
【问题描述】:

我有超过 2000 个值的特征向量。例如,假设我有 10,000 个向量,每个向量包含 2000 个十进制值。我需要对它们进行索引并找到查询向量的最近邻居。我可以在 PostgreSql 中使用 R 树对它们进行索引吗?如果是这样,我们该怎么做?还是有任何其他方式或任何其他数据库可以有效地做到这一点?

【问题讨论】:

  • 您可能必须在 PostgreSQL 中实现自己的 GiST 索引。
  • 欧几里得,你是如何测量距离的?

标签: database postgresql indexing nearest-neighbor r-tree


【解决方案1】:

如果弹性搜索是一个选项,请检查这一点。您可以在向量空间中进行分布式搜索:https://blog.mimacom.com/elastic-cosine-similarity-word-embeddings/

【讨论】:

    【解决方案2】:

    2000 维的 R-tree 可能会比顺序扫描差得多。您最好的选择可能是以预先为计算速度而组织的格式将表数据存储在索引中,然后让您自己扫描整个索引。这就是bloom indexes所做的(概念上是对索引进行全扫描。数据的组织和计算当然是不同的。)

    【讨论】:

      猜你喜欢
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2018-04-11
      • 1970-01-01
      • 2016-04-09
      相关资源
      最近更新 更多