System Design Space
Граф знанийНастройки

Обновлено: 5 апреля 2026 г. в 20:34

Архитектура ранжирования и рекомендаций для ML-систем

средний

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

Системы ранжирования и рекомендаций ценны тем, что показывают ML не как одну модель, а как рабочий контур из генерации кандидатов, слоя правил и обратной связи.

Глава помогает связать свежесть данных, продуктовые ограничения, путь деградации и эксперименты в одну архитектуру выдачи.

Для интервью это особенно полезно там, где нужно объяснить, почему качество рекомендации зависит не только от модели, но и от всей системы вокруг неё.

Практическая польза главы

Контур ранжирования

Разложить поиск кандидатов, модель, слой правил и сборку выдачи по отдельным управляемым слоям.

Обратная связь и эксперименты

Понять, как показы, реакции и эксперименты двигают следующий выпуск системы.

Свежесть и ограничения

Увязать свежесть, разнообразие выдачи, продуктовые правила и бюджет задержки.

Материал для интервью

Получить сильный кейс вместо абстрактного разговора про рекомендатели.

Связанная глава

Recommendation System

Более широкий кейс, где ранжирование вписано в полную продуктовую архитектуру рекомендательной системы.

Читать обзор

Архитектура ранжирования и рекомендаций — это не история про «обучили модель на кликах и отсортировали список». Это рабочий контур, где , само , слой правил и обратная связь влияют на продукт не меньше, чем отдельная модель.

Проблема и контекст

Представьте продукт с несколькими точками выдачи: домашняя лента, похожие объекты, рекомендации при оформлении заказа и смешанная поисковая выдача. Нужно спроектировать систему, которая укладывается в бюджет задержки, переживает , держит , соблюдает продуктовые правила и не учится на собственных перекосах.

Функциональные требования

  • Формировать персонализированную выдачу для ленты, блоков рекомендаций, похожих объектов и смешанной поисковой выдачи.
  • Поддерживать многоступенчатый контур: генерацию кандидатов, сбор контекста, ранжирование, слой правил и сборку итогового списка.
  • Учитывать ограничения продукта: разнообразие выдачи, свежесть данных, безопасность, лимиты инвентаря, отделение рекламы и редакционные правила.
  • Собирать показы, клики, пропуски, скрытия, время взаимодействия и запаздывающие сигналы для обучения и экспериментов.

Нефункциональные требования

  • Задержка p95 итоговой выдачи должна оставаться ниже 180 мс для пользовательских сценариев.
  • Нужен резервный путь: популярный список, кешированная выдача или облегчённый маршрут ранжирования при деградации зависимостей.
  • Требуется устойчивый SLA по свежести для новых объектов и изменений каталога, чтобы горячие поверхности не устаревали.
  • Нужна наблюдаемость по качеству сегментов, покрытию показов, доле переопределений слоем правил и хвостовой задержке на каждом этапе.

Нагрузка и масштаб

DAU

20M+

Выдача меняется по сценарию показа, сегменту, устройству и контексту сессии, поэтому ранжирование работает как общий рабочий контур.

Пул кандидатов

100K-10M объектов

Нельзя передавать весь каталог в дорогую модель ранжирования, поэтому нужен дешёвый первый этап с акцентом на полноту.

Пиковый QPS

80K

Пики зависят от рассылок, прайм-тайма, маркетинговых кампаний и всплесков поиска.

Цель по свежести

<= 5 мин для горячего каталога

Новинки, изменения цены и доступности должны быстро попадать в пул кандидатов и слой правил.

Задержка меток

часы, дни, недели

Удержание и долгосрочная ценность становятся видны заметно позже клика, поэтому нельзя учиться только на мгновенном CTR.

Референсная архитектура ранжирующего контура

Такой контур удобно читать как стек слоёв: от каталога и входящих сигналов через и ранжирование до сборки выдачи и следующего цикла обучения.

Источники сигналов и каталог
каталогпрофиль пользователяконтекст сессииредакционные сигналы
Переход между слоями
Генерация кандидатов
поиск кандидатовэмбеддингиграфовые сигналыжёсткие фильтры
Переход между слоями
Контекст и признаки
свежестькеш признаковсигналы пользователясигналы объекта
Переход между слоями
Ранжирование и правила
модель ранжированияразнообразие выдачибизнес-правилаограничения безопасности
Переход между слоями
Сборка выдачи и резервный путь
сборка спискапопулярный списоккешированный списокпустое состояние
Переход между слоями
Обратная связь и эксперименты
логирование показовA/Bзапаздывающие сигналыследующий цикл обучения

Что держать под контролем

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

Цена качества

CTR и удержаниеконверсиядоля жалоботделение рекламы

Рабочие ограничения

p95 задержкиSLA по свежестидоля попаданий в кешхвостовая задержка

Контур обучения

холодный стартбюджет на исследованиеконтрфактическая оценкаразбор по сегментам

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

Как ранжирующий контур формирует выдачу и записывает обратную связь

Сравнение синхронного пути показа и пути поздней обратной связи

Активный шаг

Синхронный путь формирования выдачи

1. Запрос и контекст точки выдачи

Система получает запрос, определяет сценарий показа, пользователя, сессию и активные продуктовые ограничения.

Интерактивный прогон

  • Жёстко ограничен задержкой.
  • Хороших кандидатов нельзя потерять слишком рано.
  • Правила и резервный путь могут сильно менять финальный порядок.
Бюджет задержкиСвежестьРезервный путь

Ключевые разборы

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

Холодный старт и резервная выдача

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

Свежесть против стабильности

Чем быстрее новые объекты и сигналы попадают в контур ранжирования, тем отзывчивее выглядит продукт, но тем сложнее удерживать стабильность выдачи и разбирать регрессии по сценариям и сегментам.

Исследование против использования

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

Смещение показов и ловушки обратной связи

Логи кликов отражают не только интерес пользователя, но и то, что система уже решила показать. Поэтому логирование показов, контрфактическая оценка и разбор по сегментам обязательны для честного обучения.

Режимы деградации

Нужен явный путь деградации: кешированные списки, популярная выдача, упрощённый набор признаков или облегчённая модель ранжирования. Без этого весь контур превращается в зависимость по принципу «всё или ничего» и бьёт по UX при любой просадке.

Офлайн-метрики

Метрики полноты на K, NDCG, MAP, калибровка, качество по сегментам и проверки на перекосы нужны для быстрой итерации, но сами по себе не показывают полный продуктовый эффект без свежего контекста и реального состава показов.

Онлайн-метрики

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

Сбои и режимы деградации

Подвисает получение признаков или резко падает доля попаданий в кеш на горячем сценарии показа.
Доля вмешательств слоя правил внезапно растёт, и оценка модели почти перестаёт влиять на выдачу.
Новая модель ранжирования улучшает CTR, но просаживает удержание и разнообразие выдачи на длинном горизонте.
Свежий каталог не попадает в пул кандидатов из-за отставания контура загрузки или устаревшего индекса.

Ключевые компромиссы

  • Более сильная модель ранжирования повышает качество, но увеличивает задержку и стоимость запроса.
  • Агрессивная персонализация повышает краткосрочное вовлечение, но может ухудшить разнообразие выдачи и объяснимость решения.
  • Высокая свежесть делает систему отзывчивее, но усложняет стратегию кеширования и разбор регрессий.
  • Слишком маленький бюджет на исследование замораживает контур обучения, слишком большой — временно просаживает продуктовые метрики.

Антипаттерны

Сводить ранжирование к одной модели без контура генерации кандидатов, слоя правил и резервного пути.
Оптимизировать только CTR и не смотреть на удержание, долю жалоб и продуктовые цели второго порядка.
Учиться только на кликах без логирования показов и делать вид, что обратная связь объективна сама по себе.
Прятать продуктовые правила внутри признаков вместо явного слоя правил после ранжирования.

Рекомендации

Держите ранжирование как многоступенчатую систему: поиск кандидатов, признаки, модель ранжирования, слой правил и сборка списка должны управляться отдельно.
Разделяйте оценку модели и финальное решение, чтобы разнообразие выдачи, безопасность и бизнес-ограничения не растворялись в одной формуле.
Смотрите на офлайн- и онлайн-качество как на две разные плоскости и отдельно проверяйте деградации по сегментам.
Продумывайте резервный путь, бюджет на исследование и логирование показов до первого инцидента, а не после него.

Что стоит проговорить на интервью

  • Как вы устроите генерацию кандидатов, чтобы не потерять хорошие объекты и не выйти за бюджет задержки?
  • Где в архитектуре должны жить разнообразие выдачи, свежесть и продуктовые правила: внутри модели или в отдельном слое правил?
  • Как вы отделите реальное улучшение модели от ловушки обратной связи, которую система сама создаёт своими показами?
  • Что произойдёт при просадке свежести признаков или недоступности ранжирующего контура, и что увидит пользователь?

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки