Быстрый baseline ранжирования лучше random
Есть релевантные кандидаты поиска, но финальный порядок случайный. Какое простое решение можно запустить быстро?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Начать с popularity/business baseline: продажи, клики, add-to-cart, рейтинг, availability и свежесть.
Подробный разбор
MVP не обязан требовать обучения. Можно посчитать item popularity score по свежему окну, добавить availability, категорию, регион и business boosts, затем использовать это как deterministic reranking. Такой baseline быстро лучше random, дает контрольную точку для A/B и помогает оценить, сколько value приносит сложная модель.
Важно не превращать baseline в вечный костыль: сразу логировать impressions и downstream labels, чтобы перейти к learning-to-rank.
Типичные ошибки
- Сразу строить сложный ranker.
- Не учитывать freshness/availability.
- Оптимизировать только clicks.
Как сказать на собеседовании
- Явно скажи: сначала baseline, затем ML.
- Назови срок запуска и риски.
Target для learning-to-rank из implicit feedback
Как построить target для реранкера товаров, если есть логи показов, кликов, корзины и покупок?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Использовать показы как базу, positives из click/cart/purchase, покупки весить сильнее; target может быть binary, weighted или pairwise/listwise.
Подробный разбор
Единица обучения - query-user-item-impression. Негативы лучше брать из показанных, но не выбранных товаров, с поправкой на position/exposure bias. Сигналы можно взвесить: click меньше add-to-cart, add-to-cart меньше purchase, purchase можно домножать на margin или contribution profit.
После target design нужно проверить, что label доступен без leakage и что offline metric коррелирует с бизнес-целью хотя бы на исторических экспериментах.
Типичные ошибки
- Брать все непокупки как negatives.
- Игнорировать position bias.
- Смешивать цели покупки и маржи без явной функции.
Как сказать на собеседовании
- Проговори unit of training data.
- Скажи, почему нужны именно impression logs.
Фичи для marketplace search ranker
Какие признаки подать в модель ранжирования товаров в поиске маркетплейса?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Фичи нужно группировать по query, item, user, context и cross-сигналам; отдельно проверить availability, freshness, leakage и latency.
Подробный разбор
Единица скоринга - query-user-item в конкретном request context. Query features: нормализованный текст, tokens, intent/category, spelling, query frequency, lexical BM25 score, dense query-item similarity. Item features: category, brand, price, discount, availability, delivery SLA, rating, reviews, sales velocity, returns, margin, freshness, текстовые и image embeddings. User features: регион, устройство, сегменты интересов, история категорий, price sensitivity, средний чек, недавние действия.
Самые сильные признаки часто cross-features: query-item relevance, user-category affinity, user-brand affinity, item availability для региона, matching размера/цвета/категории, session intent, похожесть к последним viewed/cart items. Для marketplace search важно не забыть business и quality constraints: наличие, доставка, дубликаты, promoted items, diversity, adult/safety filters.
Перед добавлением признака нужно ответить: доступен ли он online в момент ранжирования, не смотрит ли в будущее, как часто обновляется, сколько стоит по latency, что делать при пропуске. Тяжелые embeddings и агрегаты лучше precompute в feature store, а online оставлять только быстрые lookups и compact scores.
Типичные ошибки
- Перечислить только user/item без query и context.
- Добавить фичи, которые доступны только после показа или покупки.
- Не оценить freshness, latency и fallback при missing values.
Как сказать на собеседовании
- Группируй фичи по query/item/user/context/cross.
- Сразу говори, какие считаются offline, nearline и online.
- Отдельно проверь leakage и request-path latency.
Online serving архитектура реранкера
Как встроить ML-реранкер в существующий поиск, если candidate generation уже возвращает itemIds?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Добавить reranking service: принять userId/query/itemIds, достать фичи, batch-score моделью, отсортировать и вернуть top-N.
Подробный разбор
Сервис лучше держать отдельным при ясном API и latency budget. Он должен score-ить кандидатов batch-wise, иметь feature store/cache, fallback на baseline, мониторинг качества/скорости и версионирование моделей. Для популярных товаров часть item features и scores можно precompute.
Если кандидатов много, перед реранкером нужен дешевый pre-ranking/top-K cap, иначе тяжелая модель попадет в request path на слишком большом множестве объектов.
Типичные ошибки
- Скорить по одному item.
- Передавать тяжелые признаки через API.
- Не иметь fallback и p95/p99 latency.
Как сказать на собеседовании
- Нарисуй data flow.
- Назови границы сервисов и budget на scoring.
Миллион кандидатов перед реранкером
Запрос вроде "книга" возвращает миллион релевантных товаров. Как не скорить весь миллион тяжелой моделью?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Ввести pre-ranking/top-K cap перед реранкером: lexical/semantic score, popularity, diversity/dedup, clustering или sampling.
Подробный разбор
Pipeline должен иметь дешевый этап отбора до ML-реранкера: retrieval score, business/popularity score, availability, category constraints и dedup. Затем можно обеспечить diversity по категориям или embedding clusters и скорить только допустимый K по latency budget.
K выбирается не на глаз: он связан с latency, стоимостью модели и качеством top-N выдачи.
Типичные ошибки
- Скорить все.
- Брать random sample без quality guarantees.
- Забыть coverage/diversity.
Как сказать на собеседовании
- Свяжи K с p95 latency и качеством выдачи.
Оптимизировать прибыль, а не только покупки
Модель учится на purchase target и поднимает дешевые товары со скидками. Как ранжировать так, чтобы больше зарабатывать?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Включить margin/profit в objective: weight label на expected margin, использовать expected profit = P(purchase) * margin, добавить guardrails.
Подробный разбор
Можно переопределить label/value через цену, маржу или contribution profit, обучать модель на expected business value, либо делать post-ranking rerank с margin multiplier. Важно не сломать conversion, availability, customer experience и долгосрочную лояльность.
Формула expected value обычно сильнее, чем просто "добавим цену в фичи": модель должна оптимизировать ценность действия, а не только вероятность действия.
Типичные ошибки
- Домножать на цену без маржи.
- Игнорировать скидки/returns.
- Резко уронить конверсию ради дорогих товаров.
Как сказать на собеседовании
- Скажи expected value = probability * value.
- Отдельно назови guardrails.