Как найти то, что действительно хочется?
Все просто - построить целую экосистему для понимания которой нужны многолетние усилия 🤯 Чтобы понять статью Разбираем на запчасти поисковый сервис в Яндекс Лавке пришлось прочитать еще несколько статей про алгоритмы
🛍 Чтобы всего лишь подсказать вам что погрызть вечерком, Лавке потребовалось пройти не малый путь к реке
История развития поиска в Яндекс Лавке началась с алгоритма Ахо — Корасик в 2020 году. В 2021 году перешли на SaaS, затем на движок Яндекс Маркета и в итоге команда разработала собственную архитектуру на C++ с userver.
Архитектура сервиса поиска состоит из рантайма, системы сбора данных и процесса обучения моделей. Дневная аудитория — сотни тысяч покупателей, RPS — несколько сотен запросов в секунду. Хранятся данные о пользователях и товарах, используются ML-модели для персонализации поиска.
Для фильтрация товаров по наличию используется Quotient filter для быстрого определения наличия товаров на складе. Фильтр гарантирует отсутствие false-negative срабатываний в 0.99 случаев, но возможны false-positive.
Один день из жизни пода ML-сервиса: • Код написан на C++ с использованием userver; • ML-модели получают фичи на основе текста запроса, данных о товарах и пользователе; • Фичи записываются в долгосрочное kv хранилище для обучения.
Откуда берут данные для обучения моделей? Действия пользователей отправляются в User Frontend Logs и становятся доступны в User Actions. Вычисленные фичи складываются в item features. Датасеты используются для обучения ранжирующей и фильтрующей моделей.
Генерация товаров-кандидатов: • Используются нейронные сети DSSM и BERT, а также алгоритм BM25; • DSSM преобразует запросы и товары в эмбеддинги и вычисляет их сходство; • BERT улучшает понимание семантики текста; • BM25 оценивает релевантность на основе частоты термов.
Сравнение моделей кандидатогенераторов: • BERT DSSM хорошо справляется с семантическими запросами; • BM25 лучше находит новые товары; • Модели дополняют друг друга, обеспечивая более точную выдачу.
🧑🎓 Поэтому при следующем заказе пожалейте нейросети, формулируйте и пишите запрос правильно