У меня есть база данных postgres, содержащая таблицу документов с вложениями слов 100 измерений и использующая ее для поиска похожих документов.
CREATE TABLE documents(
id bigint,
title text,
body text,
vector double[],
PRIMARY KEY(id)
);
Я установил расширение cube
и использую его для сортировки документовтаким образом, по подобию выбранного документа (как объяснено здесь ):
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));
Я получаю результаты, как и ожидалось, но время запроса неоправданно велико ~ 30-45 секунд для таблицы размером ~ 2 миллиона строк.Как повысить производительность, чтобы снизить ее до приемлемых уровней, т. Е. <1 с на миллионах строк? </p>