Подтвердить что ты не робот

Сходство документов в ElasticSearch

Я хочу рассчитать сходство между двумя документами, индексированными в elasticsearch. Я знаю, что это можно сделать в lucene, используя термин векторы. Каков прямой способ сделать это?

Я обнаружил, что есть модуль подобия, выполняющий именно это: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-similarity.html

Как мне интегрировать это в мою систему? Я использую pyelasticsearch для вызова команд elasticsearch, но я открыт для использования REST api для подобия, если это необходимо.

4b9b3361

Ответ 1

Я думаю, что документация Elasticsearch легко может быть неправильно интерпретирована.

Здесь "сходство" - это не сравнение документов или полей, а скорее механизм подсчета совпадающих документов на основе совпадений терминов из запроса.

В документации указано:

Сходство (модель оценки/ранжирования) определяет, как соответствующие документы.

Алгоритмы подобия, поддерживаемые Elasticsearch, являются вероятностными моделями, основанными на распределении термов в корпусе (индексе).

В отношении терминальных векторов это также может быть неправильно интерпретировано.

Здесь термин "векторы вектора" относится к статистике для условий документа, которые могут быть легко запрошены. Кажется, что любые измерения подобия по векторам векторов затем должны были бы выполняться в вашем post post-query приложения. Документация по векторам векторов:

Возвращает информацию и статистику по срокам в полях конкретный документ.

Если вам нужна метрика подобия (быстрого) показания по очень большому корпусу, вы можете подумать о низкоуровневом встраивании ваших документов, хранящихся в индексе, для проведения приблизительных поисков ближайшего соседа. После поиска KNN, который значительно снижает набор кандидатов, вы можете сделать более дорогостоящие метрические вычисления для ранжирования.

Вот отличный ресурс для оценки приближенных решений KNN: https://github.com/erikbern/ann-benchmarks