惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
美团技术团队
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
S
Securelist
T
Tor Project blog
GbyAI
GbyAI
L
LINUX DO - 热门话题
V
Visual Studio Blog
AWS News Blog
AWS News Blog
The Cloudflare Blog
腾讯CDC
K
Kaspersky official blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recorded Future
Recorded Future
李成银的技术随笔
W
WeLiveSecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
M
Microsoft Research Blog - Microsoft Research
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Schneier on Security
Schneier on Security
B
Blog
IT之家
IT之家
爱范儿
爱范儿
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
NISL@THU
NISL@THU
J
Java Code Geeks
博客园 - 聂微东
T
The Exploit Database - CXSecurity.com
Cyberwarzone
Cyberwarzone
博客园 - 叶小钗
MyScale Blog
MyScale Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Project Zero
Project Zero
F
Future of Privacy Forum
D
Darknet – Hacking Tools, Hacker News & Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Hacker News: Ask HN
Hacker News: Ask HN
D
Docker
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
V
Vulnerabilities – Threatpost

Все публикации подряд на Хабре

[Перевод] Нехватка CUDA-памяти при обучении с GRPO: как перестать гадать и начать считать ArchiMate 4: Отказ от слоёв и унификация метамодели Дальнейшая судьба SFP-Master Игровой ПК или PlayStation 5: что выгоднее в 2026 году Flipper One — нам нужна ваша помощь Как мы построили корпоративную LLM-платформу: архитектура, грабли и выводы Устранить нельзя оставить — разбираем ситуацию с уязвимостями в российской виртуализации Bitrix и Laravel: веб-хуки, ERP и все-все-все (часть 5) Поиск секрета популярности лучших репозиториев GitHub за всё время существования платформы Сэкономили на облаке под 1С: ДО — заложили бюджет на штраф. Разбираем 152-ФЗ при работе с 1С Компьютерное зрение: что получается, когда у вас не идеальная лаборатория, а дождь, снег и подвижный манипулятор Параметризация в JUnit 5 и Allure Report Мне 15, и я собираю AI-стартап для недвижки: как я победил GPU, баги PyTorch и очередь в визовый центр Стратегия «Голубого океана»: как системный аналитик влияет на продукт Проектируем с нуля калькулятор на FPGA. Часть 3: Практические численные методы От видимости сети до кибербезопасности: главный миф о сетевой телеметрии, который мешает раскрыть потенциал NetFlow Как интегрировать ТСД с любой конфигурацией «1С: Предприятия»? Человеческие головы, сандалии и лягушки: стегоконтейнеры за тысячи лет до первого компьютера GigaIDE Pro для разработки на Django Как добиться непостоянного момента? Книга: «Kubernetes. Полное руководство по развертыванию и управлению Kubernetes в облачных и локальных средах. 2-е изд.» Почему IT-специалисты остаются: что работает на удержание в 2026 году Соединение деталей 3D-печатных изделий… Простое ли дело? Yamaha RGX121Z RM — современный суперстрат с японским вайбом второй половины 1980-х Как я написал плагин для WooCommerce под Yandex YCP или как купить в 1 клик из Алисы Креативное программирование: визуализация звука Сложно читать IT литературу на кривом русском? Есть решение — книжный ревью (рефакторинг) История о том, как человечество наняло очень странного сотрудника Как мы в отделе документации создали LLM агента для автоматизированного перевода с английского на другие языки Почему e-ink до сих пор не убил LCD, хотя должен был Как оплачивать нейросети и остальное недоступное в РФ в 2026: 9 способов с ценами и рисками, где можно влететь Решение проблем в управлении: почему мидл-менеджеры справляются с кризисами эффективнее топов Сколько телефонов и планшетов продали партнёры: единое хранилище данных для бренда электроники Google Fellow, студент Нанкина и создатель TikTok: кто сделал Seedream и Seedance. Досье SpeShu.AI В прорывном эксперименте из первых в мире полностью искусственных яиц вылупились птенцы Разворачиваем облачный ТОиР на заводе за две недели Vivaldi 8.0 — Унифицированная свобода выбора Как мы с нуля реализовали двустороннее доверие «лес–лес» с Microsoft Active Directory Хакер спас мир и сел в тюрьму: Невероятная история Маркуса Хатчинса и червя WannaCry Построение корпоративной архитектуры в ИТ-проектах, используя методологию TOGAF Пайплайн не должен хранить секрет: безопасное хранение и доставка секретов для CI/CD с Deckhouse Code и Stronghold ОГЭ информатика. 16 задание на Python Asus, MSI и Gigabyte урезают производство материнских плат. Что происходит на рынке Claudex: как я подружил Claude Code с ChatGPT/Codex OAuth без OpenAI API key Как измерить скорость интернета? Почему выгорают не слабые, а ваши Версионирование таблиц репозитория метаданных Sigla Vision Графическая утилита PostgreSQL mini Profiler (в помощь экспертам по технологическим вопросам 1С и не только им) Шахматные программы IV. Термины и методы Почему Я.Директ не приводит премиальных клиентов и что с этим делать – продали элитных туров на 600 млн Реестр отечественного ПО: как бизнесу выбрать решение среди 30 000 записей и не ошибиться Глаза не видят, а код пишется: как я настраиваю и программирую 100+ модулей в умном доме Архитектура AI-сервисов: почему монолит убивает latency и GPU Процессы: чего до сих пор не хватало обычным BPM (Часть 2) Книжный салон — дополнительные книги от издательства «БХВ». Предзаказ Как продакту довести фичу до прода без PMBOK и PRINCE2 Оргмодель, процессы и агенты (Часть 1) Probe-сеть из 10 регионов: что я не учёл про AS-разнесённость Как автоматизировать повторную обработку сообщений из архива в DATAREON Platform Arguments to Config — простая и мощная библиотека для парсинга аргументов в CLI-приложении на C# Как я обучил GPT с нуля на русском языке — и что из этого получилось Миллион алых нод: о выборе баз данных для хранения больших объёмов Билеты, баги и БДСМ: хроники тревел-стартапа От vSphere к VCD: как мы построили хранилище образов и нативный CSI для Kubernetes Фолдинг белка на ноутбуке. De novo дизайн KRAS G12D (Switch II) ингибитора. Докинг, валидация в AlfaFold Server и PyMOL Тебя уволят, и ничего не сломается. Возможно, станет даже лучше ИИ от Anthropic вскрыл банки G20, Цукерберг уволил 8000 человек за один день, а мы это пропустили Один за всех: как я в одиночку тащу фуллстек-проект, который незаметно разросся до соцсети Реакционная лженаука. Как СССР осудил кибернетику — и чем это аукнулось для ИИ Лёгкий мониторинг Proxmox-кластера: Pulse вместо большого Zabbix-стека RAG для тех, кто разочаровался: почему retrieval ломается и как это починить Три уровня субъективной реальности: почему непонимание в командах заложено биологически Дирижёр вместо конвейера: как AI ломает классический pipeline разработки Dart 3.12 — что нового в Dart? Четыре реакции — четыре тела. Можно ли измерить тип личности по сердцебиению? Flutter 3.44 — Что нового во Flutter? Найм инженеров в 2026: ботлнек — это не рынок, это вы Тонкие контроллеры и модели. Использование паттернов проектирования в Rails-приложении Тезис о расширенном разуме Сумасшедшая история Т9: Стартапы, дельфины и буддизм [Перевод] Открыл ли китайский компьютер «Цзючжан 4.0» эру квантового превосходства? Что такое DWH (КХД) и как работает корпоративное хранилище данных Как я создал сервис по написанию формальных документов Как сервисному бизнесу автоматизировать проверку качества обслуживания клиентов GitHub блокируют, Bun переписали за 9 дней, и частный космодром в России AsmX с движком Raptor: Архитектура абсолютного контроля Как я Zabbix с LLM дружил в свободное время. Архитектурный обзор взаимодействия с нейросетью. Часть 3 HLD и немного LLD Каким должен быть язык программирования, чтобы с ним хорошо работали AI-агенты Система распределённого управления на Rust Вы таки хотели реальный пример использования ИИ-агента в буднях DevOps-инженера? Вот он Кошмарная статья JTBD, мотиваторы, теория потребностей, оценка ценности: как четыре методики собрать в одну систему llms.txt в 2026: что это, как написать, и почему вашему сайту это нужно Как auto-update n8n нашёл мину которая лежала 8 месяцев в node_modules Повесть о конфигурации как инженерной гигиене Повесть о конфигурации как инженерной гигиене 12 паттернов, которые приведут твой код в порядок SSH как корпоративный L3-туннель: когда классические VPN-протоколы больше не работают Как улучшить фото в нейросети за минуту — реставрация, резкость и качество без искажений IBM PC/XT своими руками
Окей, Lamoda, что надеть на вечеринку? Как обучить LLM навыкам ИИ-стилиста
a_vasilych ( · 2026-05-21 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение13 мин

Охват и читатели23

Кейс

Как объяснить алгоритму, что кожаная куртка и очки героя мемов Джейсона Стетхема — это не просто одежда, а часть стиля? Классические поисковые системы хорошо работают с запросами, в которых указаны категории и атрибуты товаров, но не «чувствуют» дополнительный fashion-контекст. А это ключевая способность эксперта по моде — понять каждого своего клиента и собрать ему подходящий лук даже для самого оригинального кейса. 

Меня зовут Артем Нигоян, я дата-сайентист в Lamoda Tech и занимаюсь разработкой ИИ-стилиста. Этот продукт помогает подбирать товары и образы для наших пользователей. В его основе наша собственная LLM с навыками стилиста — предельно гибкая и контролируемая, покрывающая максимум разных запросов от пользователей.

В августе 2025 года ИИ-стилист появился в формате Telegram-бота, а в конце декабря был интегрирован в приложение Lamoda. 

В статье я расскажу, как мы обучали и внедряли нашу LLM, как она помогает подбирать образы на разные случаи жизни, в чем преимущество по сравнению с готовыми решениями, и как мы планируем развивать данный продукт дальше.

Почему не готовое решение 

Представим, что наш покупатель — герой мемов Джейсон Стетхем. Давайте посмотрим на то, как готовые проприетарные модели могут справиться с его запросом.

Мы попросили одну из популярных нейросетей собрать образ в стиле популярного актера, и указали, что в результатах хотим увидеть товары с сайта Lamoda. 

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

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

Помимо этого, выбор готовых решений означал бы принятие рисков, критичных для масштабных коммерческих проектов.

Мы сравнили* возможные подходы по ключевым критериям.

Готовое решение вне РФ

Готовое решение в РФ

Свое решение

Юридическая защита (защита данных, ответственность, соответствие регуляторным требованиям)

Низкая

Высокая

Максимальная

Отказоустойчивость, гарантия доступа и поддержки

Низкая: имеются риски блокировок

Высокая: нет риска блокировок, но отсутствует полный контроль

Максимальная: завязаны на внутренний полностью контролируемый контур

Качество в fashion-домене (понимание специфики запросов в сфере fashion, определение атрибутов товаров по фото и т.д.)

Высокое

Среднее

Контролируемо и зависит от обучения

Гибкость, возможность дообучения на особых сценариях

Низкая: контроль только через системный промпт 

Низкая: контроль только через системный промпт 

Высокая: возможность учета обратной связи и точечных улучшений

Широкий выбор LLM

Да

Нет

Да: подойдет любой опенсорсный чекпоинт с коммерческой лицензией

Стоимость при масштабировании

Высокая: оплата за каждый токен

Высокая: оплата за каждый токен

Средняя: достижим компромисс

*Сравнение актуально на лето 2025 года, когда проводился анализ.

Учитывая таблицу выше, а также необходимость встраивания модели в коммерческий контур с контролем данных, стоимость и доступность, мы пришли к выводу, что обучение собственной модели позволит получить более гибкое, надежное и экономически выгодное решение, которое можно максимально адаптировать под наш домен.

Продукт на основе LLM создавался в несколько этапов.

  1. Начало Q3 2025 — версия Magic Search: чат-бот в Telegram генерирует запросы в поиск и показывает товары, но не умеет поддерживать полноценный диалог с пользователем.

  2. Конец Q3 2025 — v1-агент: чат-бот в Telegram генерирует описания товаров, аргументирует их выбор, а также обрабатывает уточнения пользователей, касающиеся цвета, категорий, брендов и ценового сегмента.

  3. Конец 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, роль стилиста — другая. Процесс генерации одного диалога выглядит следующим образом:

  1. Мы получаем запрос от LLM-клиента: «Что надеть на вечеринку».

  2. LLM-стилист может задать уточняющий вопрос: «Нужен мужской или женский образ?» и дождаться ответа LLM-клиента.

  3. При переходе к шагу подбора товаров LLM-стилист вызывает инструмент поиска с подходящими поисковыми запросами и получает ответ — описание товаров с их индексацией в рамках диалога (пример: [0] платье; категория: женщинам — одежда — платья и сарафаны — платье; бренд: nume; …)

  4. Полученные товары описываются LLM-стилистом, и это сообщение отправляется LLM-клиенту.

  5. LLM-клиент может уточнить свой запрос: например, написать, что хочет что-то ярче, дороже, креативнее и так далее.

  6. Диалог продолжается до сходимости — пока 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. Если есть вопросы, задавайте их в комментариях.

Спасибо за внимание!