【问题标题】:postgres cube euclidean distance query performance issuespostgres 立方体欧式距离查询性能问题
【发布时间】:2019-06-16 10:28:24
【问题描述】:

我有一个 postgres 数据库,其中包含一个包含 100 维词嵌入的文档表,并使用它来查找相似的文档。

CREATE TABLE documents(
   id bigint,
   title text,
   body text,
   vector double[],
   PRIMARY KEY(id)
);

我已经安装了cube 扩展程序,并使用它从所选文档中按相似度对文档进行排序(如here 所述):

SELECT id,title,body FROM documents ORDER BY cube(documents.vector) 
 <-> '(0.0990813672542572021,.. 0.0537704713642597198)'::cube  LIMIT 10;

我在这里设置了索引: CREATE INDEX ix_vect ON documents USING gist (cube(vector));

我得到了预期的结果,但是对于大约 200 万行的表,查询时间非常长,大约 30-45 秒。如何提高性能以将其降低到可接受的水平,即数百万行

【问题讨论】:

    标签: postgresql performance cube


    【解决方案1】:

    docCUBE的正确使用方法:

    SELECT c FROM test ORDER BY c <-> cube(array[0.5,0.5,0.5]) LIMIT 1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多