Назад к подготовке

Как считать online-фичи для поискового ранжирования

В ranker нужно добавить новые признаки товара, пользователя и запроса. Что считать offline, а что online?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Статические item features и тяжелые агрегаты считаются offline. Свежие session/query features - online или streaming. Для каждого признака нужен freshness SLA, default, point-in-time train join и проверка offline-online consistency.

Полный разбор

Item attributes, text/image embeddings, seller stats и долгие агрегаты лучше считать offline и хранить рядом с индексом или feature store. Они редко меняются и не должны увеличивать latency поиска. User/session features - последние клики, корзина, фильтры, query reformulations - могут требовать online или streaming обновления.

Каждая фича должна иметь контракт: где считается, как часто обновляется, что делать при null, какой TTL, доступна ли она в train на тот же момент времени. Для обучения нужен point-in-time join, иначе модель увидит будущие клики или покупки.

В online ranker нельзя добавлять дорогой запрос в DWH или тяжелую модель на каждый item. Если признак нужен срочно, лучше предварительно агрегировать его в online store или считать только для top-N кандидатов.

Теория

Search features полезны только если их можно стабильно и быстро получить в том же виде, в каком модель видела их при обучении.

Типичные ошибки

  • Считать тяжелую фичу синхронно на каждый запрос поиска.
  • Не задавать default для отсутствующего признака.
  • Собрать train features с leakage из будущего.