Привет, Хабр! Меня зовут Виталий Кулиев и я Data Science Tech Lead из Wildberries & Russ. На конференции HighLoad++ 2024 поделился опытом своей команды в решении задачи матчинга товаров с помощью больших языковых (LLM) и визуально-языковых (VLM) моделей.
Дисклеймер: в этой статье показан один из вариантов матчинга товаров, который был реализован в конце 2024 года. С того момента матчинг с помощью LLM улучшался и изменялся, о чем мы расскажем в других статьях. Мы также используем более классические алгоритмы матчинга с использованием машинного обучения.
Разбираемся, что такое матчинг
Матчинг — это поиск идентичных товаров на разных площадках или в разных карточках одного маркетплейса. Задача, критически важная для e-commerce: она нужна для мониторинга цен конкурентов, группировки одинаковых товаров под одной карточкой и улучшения поиска. Классические подходы на основе эмбеддингов и градиентного бустинга часто дают сбой, особенно когда атрибуты извлекаются плохо или когда требуется анализ изображений.

Традиционный пайплайн матчинга выглядит примерно так:
Поиск кандидатов: используем эмбеддинги (текстовые, визуальные) для грубого отбора похожих товаров.
Извлечение атрибутов: для каждого товара-кандидата извлекаем ключевые характеристики (бренд, модель, цвет, размер и т.д.) с помощью отдельных моделей или правил.
Классификация: обучаем модель (часто градиентный бустинг типа CatBoost/XGBoost) на парах товаров, используя извлеченные атрибуты и схожесть эмбеддингов, чтобы предсказать, являются ли товары полным совпадением (матчем).
Какие при этом могут возникнуть проблемы?
Качество: не всегда удается достичь нужной точности и полноты.
Извлечение атрибутов: некоторые атрибуты (особенно неструктурированные или сложные) плохо извлекаются классическими методами.
Сравнение атрибутов: даже извлеченные атрибуты бывает сложно сравнивать (например, «1 ТБ» vs «1024 ГБ», разные оттенки цвета, синонимы).
Визуальный матчинг: для категорий вроде одежды или обуви часто решающим фактором является изображение, а классические CV-подходы для матчинга не всегда справляются с вариациями ракурсов, освещения и фона.
LLM спешат на помощь! Новый пайплайн
В Wildberries & Russ предложили усовершенствованный подход, где LLM и VLM встраиваются в ключевые этапы:
Поиск кандидатов остается прежним (через эмбеддинги)
Извлечение атрибутов: LLM
Сравнение атрибутов: LLM
Матчинг по изображениям: VLM (Vision Language Model)
Давайте рассмотрим каждый LLM/VLM этап подробнее.
LLM-матчинг по тексту
Извлечение атрибутов Qwen2.5-72B-Instruct
I have product card from category "Смартфоны" from marketplace. I need to extract and format attributes from it.
key_attributes_list = [
{
"name": "model",
"attribute_comment": "phone model. add brand or company. exclude color."
},
{
"name": "screen_resolution",
"attribute_comment": "You can find it in title or in attributes with key 'Разрешение экрана'. if product misses information about screen resolution then set value to null."
},
{
"name": "RAM",
"attribute_comment": "the value is measured in 'gb' or 'гб'."
}...
Вместо набора узкоспециализированных моделей или сложных правил для каждого атрибута можно использовать одну большую LLM. Ей на вход подается текстовое описание товара (заголовок, описание, характеристики) и промпт, указывающий, какие атрибуты нужно извлечь и в каком формате.

Как видно, модель успешно извлекла и нормализовала (например, RAM/ROM в «ГБ») нужные данные, даже объединив информацию из разных полей (цвет).
Сравнение атрибутов с помощью LLM
После извлечения атрибутов для двух товаров-кандидатов, их нужно сравнить. И здесь LLM снова показывает свою силу, особенно при сравнении нечетких или синонимичных значений. Для каждого типа атрибута создается свой промпт:
I have two product cards from category "Смартфоны" from marketplace.
I need to compare attribute "model". Change '+' -> 'plus' in both values.
"explanation" - write explanation about comparison. match_flag is boolean.
Answer in json format:
```
{
"explanation": explanation,
"match_flag": match_flag
}
```
Примеры ответов нейросети:
{
"explanation": "The models 'TECNO Camon 30' and 'POCO M6 Pro' do not match.
The models are from different brands and have different names.",
"match_flag": false
}
{
"explanation": "The colors 'белый мрамор' (marble white) and 'Uyuni Salt White' are both shades of white, while 'черный' (black) and 'black' are both shades of black. Since the colors are different (white vs. black), the match_flag is false.",
"match_flag": false
}
{
"explanation": "The CPU 'MediaTek G99 Ultimate' and 'Helio G99' are different.
'MediaTek G99 Ultimate' is not a standard naming convention and might be a marketing term, while 'Helio G99' is a known CPU model from MediaTek. Therefore, they do not match.",
"match_flag": false
}
{
"explanation": "The screen resolutions of both products are exactly the same,
1080x2436 pixels. Since the difference is 0 pixels, which is within the 50-pixel threshold, they are considered a match.",
"match_flag": true
}
LLM-матчинг по картинкам (VLM)
Для ряда товаров в категории «смартфоны» текстовой карточки товара недостаточно для матчинга. Необходимо анализировать картинки. Промпт для матчинга с помощью нейросети InternVL2 76b:
I have product card from category "Смартфоны" from marketplace. I need to compare color of smartphones.
compare_flag - result of color comparison.
Answer in json format:
```
{{
"compare_flag": true_or_false
}}
```

Нейросеть Qwen2-VL-72B. Промпт для категории «Одежда»:
As a fashion expert, you are comparing two photographs of t-shirts from a marketplace.
The left image shows one product, and the right image shows another.
Your task is to thoroughly analyze the t-shirts in both images.
Very Important:
- Only compare the t-shirts itself. Ignore any other clothing items visible in the photos, even if they are part of the outfit or similar in style.
Also ignore different poses or body movements if the clothing is worn.
Finally, based on your observations, answer:
- Are these t-shirts identical or an exact match?
- Answer "Yes" or "No" and provide your reasoning in one concise sentence.


Технические детали LLM-матчинга
Что можно использовать в качестве основы? Например:
-
gpt-4-turbo / gpt-4o
закрытые модели от OpenAI
лучшее качество на конец 2024 года
-
Llama 3 70b instruct
первая открытая текстовая модель с достаточным качеством для матчинга от Meta (запрещена в РФ)
70млрд параметров
-
Microsoft Phi-3 / Phi-3.5
быстрая открытая модель на 4 млрд параметров
поддерживает работу с картинками
-
InternVL2 76b
одна из первых открытых моделей с достаточным качеством для матчинга с поддержкой картинок
76млрд параметров
-
Qwen2.5-72B-Instruct
лучшая открытая текстовая модель в декабре 2024 года
72млрд параметров
-
Qwen2-VL-72B-Instruct
лучшая открытая модель с поддержкой картинок в декабре 2024 года 72млрд параметров
Какие в итоге получили метрики? И выводы по ним
LLM-подход позволяет достичь высокой точности (precision 92-96%), но полнота (recall 30-80%) сильно варьируется в зависимости от категории и качества данных. Время ответа на один матчинг (пара товаров) на Nvidia A100 составляет 2-7 секунд.
Плюсы LLM-матчинга:
Высокое качество, недостижимое ранее для сложных случаев.
Мало данных для старта: для zero-shot промптинга достаточно ~100 примеров в разметке, чтобы подобрать хороший промпт.
Нет этапа обучения (для zero-shot): можно быстро запустить решение.
Быстрая разработка: итерации с промптами гораздо быстрее, чем переобучение классических моделей.
Минусы:
Высокие требования к вычислениям: нужны мощные (и дорогие) GPU.
Подход с использованием LLM и VLM кардинально меняет игру в задаче матчинга товаров. Он позволяет достичь нового уровня качества, особенно в сложных случаях с неструктурированными данными или при необходимости визуального анализа. Хотя это требует значительных вычислительных ресурсов. Методы вроде квантизации и дообучения меньших моделей (дистилляция) делают технологию все более доступной. Опыт Wildberries & Russ показывает, что LLM – это не просто хайп, а реально работающий инструмент для решения сложных бизнес-задач в e-commerce.
А вы уже пробовали использовать LLM для матчинга или похожих задач? С какими трудностями столкнулись? Делитесь опытом в комментариях!
Запись выступления доступна на Ютубе: «Современные подходы к матчингу товаров с использованием LLM». Также подписывайтесь на мой канал и следите за обновлениями!
23 и 24 июня 2025 в Санкт-Петербурге пройдёт конференция разработчиков высоконагруженных систем. Планируйте свое участие заранее. Информация о докладчиках, докладах и обо всем остальном — на официальном сайте.
А больше о том, как Wildberries & Russ при помощи ML делает маркетплейс лучше для продавцов и покупателей, рассказываем в Telegram-канале @wb_space.
Andriljo
Хорошее гибридное решение, остается только вопрос, в конце атрибуты и результаты матчинга с LLM и VLM идут в бустинг как фичи или в этом пайпе бустинга нет?
В остальном конечно,для оффлайн матчинга ок, действительно дорого по времени и выч ресурсам получается. Надеюсь будут статьи про то,как вы юзаете LMки для онлайн матчинга.
kvmax Автор
В этом пайплайне бустинга нет.
LLM быстро улучшаются в качестве. Последние MOE модели(qwen 3) дают сильный буст в скорости работы нейронки. Выходит новое железо, что тоже ускоряет и удешевляет LLM матчинг.