Как Wildberries находит одинаковые товары у разных продавцов
Покупателю нужен тот же товар дешевле или с быстрой доставкой. Визуально похожая вещь ещё не является его дубликатом. Отбор по векторам, две последовательные проверки пары и анализ графа сужают миллионы вариантов до групп совпадений.
Статья · на русском
Быстрый матчинг товаров на маркетплейсе WildberriesПавел Саликов · Опубликовано: 24 января 2025 г.
Пересчитывают изменения, а не весь каталог
Конвейер работает итерациями: находит новые и изменённые товары и сравнивает их с текущими. В описанной системе около 130 миллионов товаров, дубликаты находят более чем для трети.
Для кандидатов используют E5 Small, дообученную на текстах Wildberries, и уже рассчитанные изображения ViT-H. GPU-индекс Faiss быстро ищет соседей, а собственное хранение на mmap даёт доступ к векторам. На этом этапе важнее не потерять настоящий дубль.

Конвейер поиска и объединения дубликатов.
Источник: Иллюстрация из оригиналаПочему пару проверяют дважды
Быстрая модель получает готовые текстовые и визуальные векторы. Для обучения важны сложные отрицательные примеры из той же категории: отличать одинаковые футболки от похожих полезнее, чем от холодильников.
Более дорогой cross-encoder совместно читает тексты оставшихся пар. Ему дают название, бренд и характеристики, но убирают описание: оно помогало находить кандидатов, однако шум снижал точность финальной проверки. Только первая модель давала хуже качество, только вторая — слишком медленную обработку.

Два этапа проверки пары товаров.
Источник: Иллюстрация из оригиналаОдна ошибочная связь может испортить группу
Если просто соединить все связанные пары, ложная перемычка объединит две разные группы товаров и породит множество неверных дублей. Поэтому авторы выделяют плотно связанные сообщества графа и обрезают слабые связи между ними.
После этого покрытие заметно снизилось, но выручка выросла. Пример показывает, почему максимальное число найденных пар не равно полезности блока для покупателя.

Ошибочная связь между группами снижает точность.
Источник: Иллюстрация из оригиналаЧто изменилось по метрикам
mmap и Faiss дали более чем десятикратное ускорение. Замена визуальной модели подняла точность с 80% до 90% без снижения выручки и покрытия. После анализа сообществ онлайн-проверка асессорами также достигла примерно 90%.
Добавление cross-encoder снова замедлило итерацию, но выигрыш остальных метрик оправдал его. Это последовательность разных изменений; статья не позволяет приписать все улучшения одному компоненту.

Сравнение конфигураций из оригинальной статьи.
Источник: Иллюстрация из оригинала