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

Как сформулировать ML System Design-задачу подбора поставщиков

Fairmarkit -- маркетплейс для корпоративных закупок: заказчик создает заявку, а система предлагает подходящих поставщиков. Как сформулировать ML-задачу подбора поставщиков перед выбором модели?

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

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

Загрузка

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

Сначала нужно описать продуктовый сценарий: заказчик создает заявку, система предлагает поставщиков, заказчик редактирует список, поставщики отвечают bid/no-bid/ignore, затем выбирается победитель.

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

Начинать стоит не с "возьмем embeddings", а с границ решения. Fairmarkit управляет стартовым списком поставщиков для закупочной заявки. Дальше заказчик может удалить или добавить поставщиков, отправить приглашения, получить bid/no-bid/ignore и выбрать победителя.

Формулировка ML-задачи: по заказчику, заявке и доступной базе поставщиков вернуть top-K поставщиков, которые с высокой вероятностью окажутся релевантными для приглашения и дадут полезный результат закупки. При этом нужно учитывать обязательные поля заявки, категории заказчика, географию, сроки, количество/единицы измерения и историю взаимодействий.

Важно отделить цель продукта от proxy labels. Бизнес хочет экономить время заказчика и повышать качество закупки, а модель может оптимизировать recall подходящих поставщиков, вероятность ответа/ставки, вероятность не быть удаленной заказчиком и downstream winner signal. Эти сигналы не равнозначны, поэтому их нужно обсуждать явно.

Теория

В ML System Design для marketplace/recsys кейсов постановка задачи должна связывать пользовательский сценарий, действие модели, доступные данные и метрики. Без этого легко оптимизировать удобный label, который не отражает ценность продукта.

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

  • Сразу выбирать embedding model без описания сценария закупки.
  • Считать winner единственной истиной релевантности.
  • Не отделить поставщиков, которых заказчик удалил, добавил вручную или которые проигнорировали приглашение.

Как отвечать на собеседовании

  • Начни с одного предложения: "мы ранжируем поставщиков до отправки приглашений".
  • Перечисли события процесса и скажи, какие из них могут стать labels.