Продуктовый поиск на ElasticSearch

в 15:51, , рубрики: elasticsearch, elk, fuzzy search, rag, поиск, продуктовый подход
  • Введение

  • Видение

  • Подготовка (ака тоже лайфхак)

  • Лайфхак (без кода пока что)

  • Метрики

Введение

Из-за санкций, Elasticsearch многие стали отвергать. Единственное, что его спасает, это RAG'и шмаги. Я первую работу выбрала в поисковом отделе, для меня это было завлекательнее, чем datascience, с которым я была уже знакома. 8 лет назад начала изучать эластик. Наработалась "интуиция" на его функционал, так как с нуля я делала поиск для других компаний несколько раз. Поиск текстовый, GEO поиск, подсказки для поиска (suggester) и с МЛ'ем которым майнились синонимы или кластеризовались запросы.

Аналог Elasticsearch в СНГ теперь хотят создать на Clickhouse, но он будет скорее упрощенным в плане текстового поиска, однако нейронками это можно прикрыть. Пока что я напишу просто постепенно устаревающие наработки, которые очень легко переносятся на самом деле на концепцию с RAG'ом (как сделаю, так напишу)

Видение

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

Пока что мне всегда удавалось доказать, но сначала почти все меня не понимали. По‑моему только на собеседовании в SuperJob более менее поняли.
Можно делать поиск data driven, если есть данные. Так гораздо быстрее можно получить хорошие результаты, при меньших затратах

Подготовка

Когда я приступала к работе, то строила в Miro дерево запросов. Примерное или точное, по мере роста своего как search engineer'a.
0) Это дерево можно всегда пополнять, нумеровать ячейки, добавлять есть опечатка/нет/синоним/продаем или нет/ транслит/пробел — это очень круто помогает говорить с бизнесом,аналитиками, инденерами.
1) Вы учитесь парсить трафик запросов и строить статистику по частотностям каждой группы — WOW (надо посмотреть насколько сейчас с нейронками это можно точно сделать. С точностью до двузначности слов.
2) И когда прилетает ad hoc «я искал обратну сторону коленки ежа» — можно посмотреть важность этого запроса по частотности категории, можно конечно регуляркой примерные варианты написаний еще предугадать и поискать более прецельно
3) Есть «дорожная карта» по тому, как обстоят дела с каталогам, где какие‑проблемы, как они метчатся с запросами пользователей и насколько часто эти проблемы всплывают (ну например, мы сейчас не модерируем описание товаров и поиск по этому полю отключили или в какой‑то категории товаров плохие характеристики, которые никто не использует, плохо назвали)

Продуктовый поиск на ElasticSearch - 1

Лайфхак

Если встает вопрос о быстром старте, то задача скомбинировать (под bool should например) запросы в эластике по самым частотным группам ( multimatch query ) и накрутив им веса соответствующие и вмешать туда еще нечеткий поиск по всем полям с весом таким, чтобы в конце всегда плестись или же вообще сделать взаимоисключенным с основными запросами (fuzzy query). И метрики вверх. Это если кратко очень.

Дальше не хочу утяжелять. В какой‑то момент у людей начинает болеть голова от поиска. Нет опоры, нет идеального решения, очень много всего надо держать в голове? Забейте, выстраивайте постепенно удобства. Иначе будете в одном месте улучшать, в другом ухудшать гораздо чаще.

Метрики

Количество пустых выдач
Топ не продающих запросов
Топ запросов на которых вышлепываются все и идут фильтровать (Number of exits ÷ the number of pageviews = exit rates x 100%)
Конверсия из поиска
DCG (гугл), CTR10, CTR5 (клики на первые 10 или 5 позиций) и общий CTR (клики на позиции в выдачах)
Количество использования фильтров + запрос

И все эти метрики могут быть постепенно разбиты по основным группам
(есть словари категорий, брендов и тп)

P. S.: информация вводная, надеюсь, она еще будет нужна год. Пока нейронки не заменят.
Следующая скорее всего будет про RAG.

Автор: klarabro

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js