Как объяснить алгоритму, что кожаная куртка и очки героя мемов Джейсона Стетхема — это не просто одежда, а часть стиля? Классические поисковые системы хорошо работают с запросами, в которых указаны категории и атрибуты товаров, но не «чувствуют» дополнительный fashion-контекст. А это ключевая способность эксперта по моде — понять каждого своего клиента и собрать ему подходящий лук даже для самого оригинального кейса.
Меня зовут Артем Нигоян, я дата-сайентист в Lamoda Tech и занимаюсь разработкой ИИ-стилиста. Этот продукт помогает подбирать товары и образы для наших пользователей. В его основе наша собственная LLM с навыками стилиста — предельно гибкая и контролируемая, покрывающая максимум разных запросов от пользователей.
В августе 2025 года ИИ-стилист появился в формате Telegram-бота, а в конце декабря был интегрирован в приложение Lamoda.
В статье я расскажу, как мы обучали и внедряли нашу LLM, как она помогает подбирать образы на разные случаи жизни, в чем преимущество по сравнению с готовыми решениями, и как мы планируем развивать данный продукт дальше.

Почему не готовое решение
Представим, что наш покупатель — герой мемов Джейсон Стетхем. Давайте посмотрим на то, как готовые проприетарные модели могут справиться с его запросом.
Мы попросили одну из популярных нейросетей собрать образ в стиле популярного актера, и указали, что в результатах хотим увидеть товары с сайта Lamoda.
Нам удалось это сделать, и мы получили неплохое описание подборки. LLM предложила товары, аргументировала свой выбор и даже предоставила ссылки. Однако те оказались не рабочими. Для нас это критично: пользователь должен попадать на карточку товара.

Лишь одна ссылка вела на реальный товар. Но описание не соответствовало карточке, вместо мужских джинс мы увидели женские джинсовые шорты. Такой результат не соответствует задаче, где образ должен быть собран из релевантных товаров.

Помимо этого, выбор готовых решений означал бы принятие рисков, критичных для масштабных коммерческих проектов.
Мы сравнили* возможные подходы по ключевым критериям.
Готовое решение вне РФ | Готовое решение в РФ | Свое решение | |
Юридическая защита (защита данных, ответственность, соответствие регуляторным требованиям) | Низкая | Высокая | Максимальная |
Отказоустойчивость, гарантия доступа и поддержки | Низкая: имеются риски блокировок | Высокая: нет риска блокировок, но отсутствует полный контроль | Максимальная: завязаны на внутренний полностью контролируемый контур |
Качество в fashion-домене (понимание специфики запросов в сфере fashion, определение атрибутов товаров по фото и т.д.) | Высокое | Среднее | Контролируемо и зависит от обучения |
Гибкость, возможность дообучения на особых сценариях | Низкая: контроль только через системный промпт | Низкая: контроль только через системный промпт | Высокая: возможность учета обратной связи и точечных улучшений |
Широкий выбор LLM | Да | Нет | Да: подойдет любой опенсорсный чекпоинт с коммерческой лицензией |
Стоимость при масштабировании | Высокая: оплата за каждый токен | Высокая: оплата за каждый токен | Средняя: достижим компромисс |
*Сравнение актуально на лето 2025 года, когда проводился анализ.
Учитывая таблицу выше, а также необходимость встраивания модели в коммерческий контур с контролем данных, стоимость и доступность, мы пришли к выводу, что обучение собственной модели позволит получить более гибкое, надежное и экономически выгодное решение, которое можно максимально адаптировать под наш домен.
Продукт на основе LLM создавался в несколько этапов.
Начало Q3 2025 — версия Magic Search: чат-бот в Telegram генерирует запросы в поиск и показывает товары, но не умеет поддерживать полноценный диалог с пользователем.
Конец Q3 2025 — v1-агент: чат-бот в Telegram генерирует описания товаров, аргументирует их выбор, а также обрабатывает уточнения пользователей, касающиеся цвета, категорий, брендов и ценового сегмента.
Конец Q4 2025 — чат-бот в приложении Lamoda: полноценный диалоговый ассистент.
1 этап. Magic Search: переводчик сложных запросов на язык поискового движка
Любая современная поисковая система справится с тем, чтобы найти товар по конкретным значениям атрибутов — цвету, фасону, материалу и другим признакам. Она же на лету переранжирует товары, чтобы как можно быстрее показать то, что будет наиболее актуально для вас. Однако если вы хотите подобрать, например, образ в стиле барбикор, скопировать стиль знаменитости или собраться на гендер-пати, то стандартный поисковый движок, скорее всего, будет бессилен — с такими сложными запросами мы почти всегда будем получать пустую выдачу.
Как это изменить? Использовать LLM в качестве переводчика с человеческого языка на поисковый.
В этом случае пайплайн работы такого продукта будет выглядеть следующим образом:
→ получаем сложный запрос клиента и отправляем его в LLM,
→ LLM генерирует поисковые запросы,
→ с ними идем в наш поиск,
→ выдаем клиенту релевантные товары.
Для этого нам нужна была обучающая выборка, которую мы собрали из двух частей.
1. Реальные запросы
Чтобы получить реальные пользовательские запросы, мы протестировали LLM-решение на наших коллегах в Lamoda. Так у нас появилось много диалогов, и из них мы смогли извлечь различные интенты (намерения), с которыми клиенты потенциально могут прийти к ИИ-стилисту.
Еще одну часть обучающей выборки мы получили, собрав реальные поисковые запросы клиентов в приложении, по которым была короткая выдача или низкая конверсия в добавление в корзину.
Примеры того, что мы увидели:
запросы конкретных товаров: «шорты багги», «джинсовые шорты», «молочные джинсы»,
запросы товаров со сложными атрибутами: «ремень цепочка», «шорты багги джинсовые»,
запросы, связанные с конкретными мероприятиями или событиями: «утро невесты», «образ на гендер-пати».
2. Синтетические запросы
Разнообразия реальных запросов нам не хватило, поэтому мы решили сгенерировать с помощью другой LLM дополнительный список интентов, с которыми к нам потенциально могут обратиться пользователи Lamoda.
Остановились на двухэтапной генерации:
а) Собрали список стилей, поводов (occasion), законодателей мод, и на их основе сгенерировали профайлы различных «синтетических» клиентов: указали гендер (men/women/boys/girls), возраст, профессию, увлечения, а также стиль общения и возможные интенты, с которыми каждый такой пользователь мог бы прийти на сайт Lamoda.
Пример описания персонажа:
Марина, 32 года, маркетолог в IT-компании, высокий доход, занимается йогой и пилатесом, любит путешествия по Азии, не замужем, увлекается фотографией.
Стиль общения:
дружелюбный и открытый, любит делиться деталями жизни, задает много вопросов, ценит эмоциональный контакт и понимание.
Интенты:
«образ в стиле квайет лакшери», «йогакор аутфит», «деловой гардероб для офиса», «платье как у Уэнсдей», «образ для фотосессии», «кэжуал лук на выходные».
б) Затем для этих персонажей мы сгенерировали эталонные ответы на их запросы.
Пример №1: Образ в стиле Джеймса Бонда
Гендер: men
Поисковые запросы:
«черный смокинг приталенный»
«рубашка белая хлопок классическая»
«галстук черный шелк»
«туфли оксфорды черные кожа»
«наручные часы металл»
Пример №2: Quiet Luxury образ с платьем для презентации
Гендер: women
Поисковые запросы:
«платье миди черное шелк приталенное»
«жакет кремовый приталенный с пуговицами»
«туфли лодочки кремовые кожа»
«клатч черный кожа без декора»
«серьги золотистые минималистичные»
Выбор и обучение модели
Для обучения нашей LLM мы использовали видеокарту А100 на 80 Гб, в обучающей выборке было порядка 11 тысяч примеров.
Все модели, с которыми мы провели эксперименты, можно разделить на два класса:
4b и 8b — для них проводили файнтюнинг всех весов модели
14b — обучали только LoRA-адаптер, rank = alpha = 384
Качество ответов оценивалось при помощи модели-судьи, в роли которой выступала GPT-4o. Оценка в диапазоне от 0 до 5 выставлялась по заранее определенным ключевым критериям.
Посмотрим на результаты сравнения:
Стартовый чекпоинт | Qwen3-14B-Base | RuadaptQwen3-4B-Instruct | QVikhr-3-4B-Instruct | Qwen3-8B-Instruct | Qwen3-8B-Base | Qwen3-14B-Base |
Обучающая выборка | Диалоги | Интенты | Диалоги + Интенты | |||
Оценка G-eval | 3.958 | 3.989 | 4.090 | 4.319 | 4.491 | 4.506 |
Какие выводы мы сделали:
1. Файнтюнинг под конкретную задачу позволяет уменьшить размер модели почти в 3,5 раза.
Это видно в сравнении первых двух моделей, обученных с чекпоинтов Qwen3-14B-Base и RuadaptQwen3-4B-Instruct: уменьшив количество параметров с 14 до 4 млрд и обучив мéньшую модель генерировать запросы на интентах, мы получили небольшой прирост в качестве.
Таким образом, файнтюнинг под конкретную задачу позволяет увеличить скорость инференса и оптимизировать используемые ресурсы.
2. При старте обучения с Base-чекпоинта можно получить чуть более высокие метрики, чем при старте с Instruct-модели.
Посмотрим на метрики моделей Qwen3-8B-Instruct и Qwen3-8B-Base: несмотря на то, что они обучались на абсолютно одинаковых диалогах, можно заметить статистически значимое превосходство модели, полученной из Base-чекпоинта.
3. При обучении моделей с одного чекпоинта наибольший прирост качества мы получили благодаря task-specific примерам.
К этому выводу можно прийти, если сравнить первый и последний столбец: в качестве стартового чекпоинта использовалась модель Qwen3-14B-Base. Но в первом случае в обучающей выборке используются только fashion-диалоги, а во втором к ним добавляются подборки на основе интентов, процесс генерации которых был описан выше.
Сравниваем с готовыми решениями
При обучении собственной модели всегда хочется посмотреть на нее в сравнении с готовыми решениями — GPT-5 или большой open-source моделью. Мы протестировали несколько LLM, подав в них тот же системный промпт, который используем для нашей.
Посмотрим, что получилось (в качестве судьи использована GPT-4o).
Модель | Qwen3-14B-Base | openai/gpt-oss-120B | t-tech/T-pro-it-2.0 32B | GPT-5 |
Обучающая выборка | Диалоги + Интенты | Без обучения (только системный промпт) | ||
Оценка G-eval | 4.506 | 3.778 | 4.139 | 4.458 |
Оказалось, что метрики на тестовой выборке для нашей 14-миллиардной модели сравнимы с GPT-5 — за счет того, что наша LLM заточена именно под fashion-задачу. У других тестируемых моделей метрики оказались значительно ниже.
Делаем вывод, что обучение LLM на доменных знаниях существенно повышает качество ответов и позволяет использовать модели с небольшим количеством параметров.
Magic Search: примеры запросов
Посмотрим на примеры с поиском конкретных товаров. Например, попросим найти рубашки в яркую клетку. Видим, что с этим запросом умный поиск хорошо справился.

Попробуем ввести запрос, который в основном поиске приложения был проблемным кейсом с низкой конверсией — «шорты багги джинсовые». Здесь можно заметить, что Magic Search справляется с таким запросом и сразу предоставляет довольно широкий выбор.

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

И конечно, мы не могли обойти запрос образа в стиле Стетхема. На этот раз результат нас более чем устроил.

Архитектура решения
Рассмотрим архитектуру нашего решения:
Сервис работает на базе бота в Telegram, куда клиент приходит со своим запросом.
Запрос обогащается системным промптом и поступает на vLLM-сервер с развернутой моделью.
Мы получаем поисковые запросы, которые отправляются в отдельный сервис для поиска товаров (SKU retrieval service). В ежедневно обновляемом индексе он находит подходящие товары.
Мы показываем эти товары клиенту в боте.
А так выглядит упрощенная схема:

2 этап. v1-агент: полноценный чат-бот
Следующим этапом нашей работы стало создание полноценного диалогового чат-бота. Его преимущество по сравнению с предыдущей версией в том, что он не только показывает товары, но и отвечает на отдельные пожелания по атрибутам и ценовым категориям — например, может показать пользователю мужскую одежду в премиум-сегменте или подобрать товары в определенном стиле.
Для того, чтобы обучить такую LLM, нам понадобилось множество диалогов на fashion-тематику. Мы искали их на известной открытой платформе Hugging Face, но там обнаружилось мало датасетов, лучший среди них — всего 3000 диалогов, которые сгенерированы GPT-3.5 на английском языке.
Поэтому решили самостоятельно генерировать синтетические диалоги, для чего написали отдельный фреймворк с двумя «собеседниками»: клиентом и стилистом. Роль клиента отыгрывает одна LLM, роль стилиста — другая. Процесс генерации одного диалога выглядит следующим образом:
Мы получаем запрос от LLM-клиента: «Что надеть на вечеринку».
LLM-стилист может задать уточняющий вопрос: «Нужен мужской или женский образ?» и дождаться ответа LLM-клиента.
При переходе к шагу подбора товаров LLM-стилист вызывает инструмент поиска с подходящими поисковыми запросами и получает ответ — описание товаров с их индексацией в рамках диалога (пример:
[0] платье; категория: женщинам — одежда — платья и сарафаны — платье; бренд: nume; …)Полученные товары описываются LLM-стилистом, и это сообщение отправляется LLM-клиенту.
LLM-клиент может уточнить свой запрос: например, написать, что хочет что-то ярче, дороже, креативнее и так далее.
Диалог продолжается до сходимости — пока LLM-клиент не сгенерирует специальный токен завершения беседы, описанный в его системной инструкции.

Остановимся подробнее на одной из ключевых частей — вызове функции поиска товаров. Дело в том, что сама LLM не знает ничего о товарах, которые представлены на Lamoda, она умеет генерировать только текст. Для получения товаров модель «вызывает» инструмент поиска — отдельную нейросеть, обученную искать товары на сложных реальных и синтетических поисковых запросах.
Функцию необходимо вызвать в момент, когда модель генерирует текст в специальном формате между служебными токенами <tool_call> и </tool_call> (актуально для Qwen-архитектур).
Пример вызова функции:
<tool_call>{
"name": "get_retrieval",
"arguments": {
"gender": "men",
"queries": ["middle брюки треккинговые мужские серые",
"middle кроссовки треккинговые мужские коричневые с протектором"]
}
}</tool_call>Между служебными токенами заключается тело запроса к инструменту, а именно:
get_retrieval— название инструмента, к которому обращается модель,gender— раздел каталога (men, women, boys, girls) — LLM понимает, какой аргумент проставить исходя из контекста в рамках диалога,queries— список поисковых запросов с указанием ценового сегмента для дополнительной фильтрации (economy, middle и premium).
Пример запроса в чат-боте:



Архитектура модели для поиска товаров
Модель для поиска товаров по сложным запросам имеет двухбашенную архитектуру с двумя эмбеддерами — для товара (SKU) и для запроса (query). Картиночный энкодер модели используется для получения эмбеддинга изображения товара, а текстовый энкодер кастомной CLIP-модели для fashion-домена — для получения эмбеддинга текстового описания. Полученные эмбеддинги конкатенируются, прогоняются через еще один слой, и мы получаем эмбеддинг товара. Эмбеддинг запроса получается при помощи того же текстового энкодера с добавлением поверх него обучаемого слоя. В идеальном сценарии векторное представление любого поискового запроса должно быть максимально близко к векторным представлениям релевантных товаров.

Обучающая выборка состояла из двух частей:
пара «реальный запрос - товар» на основе добавлений в корзину,
пара «синтетический запрос - товар», полученные при помощи проприетарной LLM.
Всего в обучающей выборке было 843 тысячи товаров. При контрастивном обучении мы использовали функцию потерь Circle Loss. Полученная модель успешно прошла тест в основном поиске.
О том, как мы оценивали качество модели, расскажу ниже, а пока посмотрим на новый этап ее развития.
3 этап. Где теперь живет ИИ-стилист
В конце декабря 2025 года мы перенесли чат-бот из Telegram в приложение Lamoda. Он вошел в экосистему «Г(ии)д по стилю», носит название ИИ-стилиста и доступен с главной страницы.
Найти эту фичу можно слева в нижней части экрана. Также точки входа есть в каталоге и в избранном, а в ближайшем будущем могут появиться в других разделах приложения — в поисковой строке и в каталоге.

В первом квартале 2026 года мы внесли несколько полезных обновлений:
Добавили праздничные интенты: сценарии подбора подарков и образов на особые события.
Ускорили генерацию: оптимизировали системную инструкцию и изменили формат сообщений с описанием подборки.
Уменьшили нагрузку на поиск: стали кэшировать выдачу по старым запросам в рамках диалога и отправлять только новые поисковые запросы.
Сделали шаг к обновлению визуала: LLM уже научилась генерировать флаг «образ/не образ», а скоро различное отображение таких подборок будет реализовано в приложении.
Оценка качества
Опишу, как мы оцениваем работу модели в метриках.
Оффлайн-оценка осуществляется моделью-судьей на отложенной выборке.
В каждом диалоге отдельно оценивается каждый ответ LLM-стилиста.
Оценка проходит по 28 критериям, расположенным в порядке убывания критичности.
Каждая оценка лежит в диапазоне от 0 до 5, где 0 — это критическая ошибка, связанная с безопасностью ответа или техническими проблемами обработки, а 5 — идеальный ответ. Финальная оценка — это среднее по всем ответам.
Сравним три наши версии. Здесь New — это оптимизированный промпт, а Old — бот для версии в Telegram.
Модель | Модель-учитель | Модель 2025 Q3 | Модель 2025 Q3 | Модель 2026 Q1 |
Системный промпт | New | Old | New | New |
Оценка LLM-as-a-Judge | 4.358 | 3.368 | 4.242 | 4.347 |
Видим, что при переходе на оптимизированный системный промпт мы получили существенный прирост метрики. Менее существенный, но также заметный и значимый рост мы получаем и за счет дообучения модели на новых fashion-диалогах.
Вместе оба подхода позволяют нам максимально приблизить качество ответов модели к качеству модели-учителя. В нашем узком fashion-домене это позволяет «переложить» почти все знания модели-учителя GLM-4.5 от Z.AI в модель всего на 8 млрд параметров. Это позволяет разворачивать такие модели даже на партиции видеокарты и, тем самым, упрощает масштабирование.
Планы и дальнейшие шаги
Дальнейшее развитие продукта основано как на наших внутренних представлениях, так и на фидбэке пользователй. Идеи для развития складываются в три основных группы:
1. Качество подбора
Обучение чувству стиля: использование образов от стилистов в обучающей выборке
Модель для первых запусков была обучена на синтетических диалогах, сгенерированных LLM-стилистом, из-за чего все знания о мире моды и о сочетаниях товаров были унаследованы также от LLM-учителя, а она не специализируется в fashion. Чтобы сделать подборки более стильными, мы добавили в обучение диалоги на основе образов из каталога Lamoda, которые были размечены реальным стилистом под различные интенты.
База знаний о моде
Сейчас модель знает о моде только то, что в нее заложено на этапе претрейна и SFT. Но тренды меняются быстро, и знания устаревают. Получить новые данные возможно только через дообучение модели.
Альтернативный подход — разработка обновляемой базы fashion-экспертизы, к которой LLM будет обращаться, если потребуется более глубокий анализ в контексте моды и трендов.
2. Персонализация
Переход к использованию гибридного поиска
На текущий момент товары для LLM-стилиста ищет отдельная модель-ретривер, которая хорошо справляется со сложными запросами, но не учитывает персональные предпочтения клиентов на основе их действий на сайте и в приложении. В целевой архитектуре инструментом поиска для LLM станет основной поиск Lamoda, в котором будут заложены знания модели-ретривера.
Реализация долгосрочной памяти: максимальный уровень персонализации
Зачастую пользователи в ходе диалога рассказывают о своих предпочтениях и стиле жизни намного больше, чем мы знаем о них на основе действий на Lamoda. Это приводит к логичной идее — реализовать механизм долгосрочной памяти, который позволит сделать рекомендации от LLM-стилиста максимально персонализированными.
3. Новые сценарии
Обучение VLM — учет мультимодальных входных данных
Добавление визуальной компоненты позволит расширить спектр задач для ИИ-стилиста: он сможет учитывать цветотип пользователя, его тип фигуры, проводить детальный анализ гардероба. На текущий момент уже обучен VLM-стилист в LoRA сетапе, мы активно прорабатываем наиболее релевантные продуктовые сценарии.
Переход к агентской архитектуре: новые инструменты в арсенале бота
Поскольку ИИ-стилист должен выступать в роли универсального помощника, в планах научить его подбирать нужный инструмент для пользователя сразу в окне диалога — найти товары по фото, примерить, заменить товары на похожие, сравнить их друг с другом, поискать тренды в интернете и так далее.
Заключение
Мы прошли путь от идеи до работающего продукта в приложении примерно за полгода. Выбор собственного решения оказался оправданным, а узость fashion-домена не стала ограничением — так мы смогли использовать компактную модель и упростить масштабирование.
По данным на 20 марта 2026 года, к ИИ-стилисту обратились 292 тысяч уникальных пользователей, и он обработал 1,45 млн сообщений. 62% запросов конвертируются в клик на карточку товара, 7% — в добавление в корзину.
Теперь вы узнали больше о том, как работает ИИ-стилист в Lamoda. Если есть вопросы, задавайте их в комментариях.
Спасибо за внимание!
























