Word2vec с elasticsearch для сходства текстов

У меня есть большая коллекция текстов, где каждый текст быстро растет. Мне нужно выполнить поиск подобия.

Идея состоит в том, чтобы вставлять каждое слово как word2vec и представлять каждый текст как нормированный вектор посредством вектора, добавляя в него вложения каждого слова. Последующие дополнения к тексту приведут только к уточнению результирующего текстового вектора путем добавления к нему новых векторов.

Можно ли использовать поиск elastics для подобия косинуса, сохраняя только координаты каждого нормализованного вектора текста в документе? Если да, то какова надлежащая структура индекса для такого поиска?

Ответ 1

Этот плагин elasticsearch реализует функцию оценки (точечный продукт) для векторов, хранящихся с помощью delimited-payload-tokenfilter

Сложность этого поиска является линейной функцией от количества документов, и она хуже, чем tf-idf в терминологическом запросе, так как ES сначала ищет на инвертированном индексе, то он использует tf-idf для оценки документов, поэтому tf-idf не выполняется во всех документах индекс. С помощью вектора, которое вы ищете, является векторное пространство документа с нижним косинусовым расстоянием без преимуществ инвертированного индекса.