Как считать 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 из будущего.