Двухэтапный retrieval/ranking для подбора поставщиков
Как спроектировать candidate generation и ranking для подбора поставщиков под закупочную заявку в маркетплейсе корпоративных закупок?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Сначала собрать high-recall candidate pool через hard filters, lexical/vector retrieval и business constraints, затем rerank по признакам заказчика, заявки, поставщика и истории взаимодействий.
Полный разбор
Candidate generation должен быть дешевым и recall-oriented. В него входят hard filters по availability, geography, category compatibility, compliance и ограничениям заказчика; lexical/full-text search по title/description/profile; vector retrieval по заявке и представлению поставщика; возможно несколько generators с merge/dedup.
Ranking stage получает top-N поставщиков из retrieval и считает более дорогие признаки: историю взаимодействий заказчика и поставщика, response rate поставщика, win/bid history, category similarity, geo distance, deadline fit, предпочтения заказчика, ручные удаления/добавления, freshness и diversity constraints. Модель может быть GBDT/LambdaMART/learning-to-rank или более сложный neural reranker, но baseline должен быть простым.
Serving: online-заявка идет в retrieval service, затем ranker, затем post-processing rules. Важно логировать exposure и decision context, чтобы offline evaluation и retraining не теряли, какие поставщики вообще были доступны и показаны.
Теория
Two-stage architecture разделяет recall и precision. Retrieval максимизирует шанс не потерять хорошего поставщика, а ranker оптимизирует порядок и business utility по богатым признакам.
Типичные ошибки
- Делать один universal embedding и считать, что он решит все constraints.
- Не объяснить merge/dedup нескольких candidate generators.
- Забыть business rules после ranker.
Как отвечать на собеседовании
- Назови 3 источника candidates: filters, lexical search, vector search.
- Отдельно проговори post-ranking constraints и logging.