Привет! Я Сергей Кляхандлер, техлид в команде LLM Авито.
В 2024 году мы разработали и выпустили ML-модель, которая автоматически генерирует описания для объявлений из категории «Одежда, обувь, аксессуары». В этом году автогенерацию усовершенствовали, а подход переиспользовали. Теперь мы можем создавать дополнительные ключевые слова для поиска.
Статья будет полезна DS-инженерам, которые работают с мультимодальными LLM-моделями.

Содержание:
Изменения в автогенерации описаний
Кратко напомню: автогенерация — это сервис в интерфейсе Авито, который помогает пользователю составлять более точные и полные описания. Продавец сначала заполняет характеристики товара, а затем нажимает кнопку «Создать автоописание» и получает готовый текст.
Первая версия сервиса содержала два недочёта: могла обрабатывать только одно фото и создавала слишком сухие тексты. Мы разобрались с обеими проблемами.
Подробнее про разработку автогенерации читайте в статье на Хабре: «Как мы разработали LLM-модель, которая генерирует описания товаров для пользователей Авито».
Пересобрали модель. Ранняя версия LLM — полносвязный трансформер. На входе энкодерная часть принимала и кодировала фото, а в декодер подавался промпт, чтобы сгенерировать описание. Устройство энкодера могло принимать только одно изображение, поэтому мы загружали в него главное фото объявления.
Что такое главное фото
Обычно продавцы добавляют несколько фото с разных ракурсов, из которых выбирают главное — то, которое увидят покупатели в результатах поиска. Как правило, это фото самое информативное, поэтому для работы LLM выбрали именно его.
Однако один снимок не может полноценно показать товар, даже если он лучше других фотографий. Получалось, что часть информации с изображений терялась.
Чтобы разобраться с проблемой, мы разорвали явную трансформенную связь между энкодером и декодером. Система перестала использовать cross-attention, вместо этого изображения стали обрабатываться отдельно через image-encoder.
В экспериментах мы применяли image-башню модели CLIP, что помогло эффективно связать текст и изображения. Полученные эмбеддинги вместе с промптом отправили на вход в LLM. Теперь решение не перегружает модель, позволяет учесть все картинки из описания и не потерять информацию.

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

Изменение в модели мы разворачивали отдельным A/B-тестом в категории «Одежда, обувь и аксессуары». В итоге общее количество автогенераций выросло на 5,7%, а продавцы стали получать подходящее описание с первого раза на 10,8% чаще. Это значит, что обновление улучшило сервис, и пользователи это оценили.
Ежедневно через систему создают около 60 тысяч описаний, при этом success rate составляет 99,7%. Пайплайн почти никогда не падает, а сервис работает стабильно.
Сервис доступен в разделах «Одежда, обувь, аксессуары», в «Детской одежде», а также в некоторых частях разделов «Хобби и отдых» и «Электроника».
Автогенерация описаний — не единственное, на что способна наша LLM. Мы выжали больше пользы из картинок: научили систему учитывать даже то, что не прописано в описании. И вот как это сделали.
Генерация ключевых слов для поиска
С этой идеей к нам пришла команда, которая развивает поиск товаров на Авито. Коллеги предложили генерировать в индекс дополнительные характеристики из фото, чтобы пользователи находили больше релевантных объявлений.
Проблема с неполными описаниями. Многие пользователи Авито начинают работу с сервисом через поиск: вводят запрос и получают список предложений. В перечень чаще попадают объявления с объёмными описаниями, поскольку подходят к большему количеству запросов и лучше индексируются. Такие товары обычно продают быстрее.
Если в описании характеристик не хватает, полнотекстовый поиск такие объявления не показывает, хотя они фактически подходят под пользовательские запросы. В результате товары с неполными описаниями продаются дольше, поскольку реже попадают в поле зрения покупателей.

Бэкенд. Мы решили использовать мультимодальный пайплайн: загрузить в модель главную фотографию из объявления и сгенерировать набор ключевых характеристик, которые описывают товар. Создавать удобочитаемый текст не требовалось, достаточно было перечислить все слова через запятую или списком, а затем добавить их в индекс.

Модель создавала набор слов, куда иногда попадали неудачные формулировки, например, «яркий принт», «красивый узор». Это описания подходили к любому товару, поэтому не годились для индексации. Чтобы избавиться от такого «мусора», мы стали следить за подобными неинформативными словами с помощью поствалидации и автоматически их удалять.
Всего через модель пропустили около 200 000 иллюстраций, создали наборы характеристик и отвалидировали их. Затем провели офлайн-тест. Собрали выборку из актуальных объявлений и пул поисковых запросов в категории «Одежда, обувь, аксессуары», а потом сделали два замера: стандартная работа поиска и такой же поиск, но с добавлением сгенерированных ключевых слов.
Результаты теста показали, что покупатель видел на 22% больше релевантных предложений. Это подтвердило, что механизм увеличивает полноту поиска и предлагает больше объявлений.
Реализация. Когда пользователь размещает объявление на площадке, информация об этом отправляется в шину данных. Модель принимает эти события на вход, читает и определяет, что произошло: создали новое объявление или обновили старое. Если новое, читает событие целиком, а если это обновление, проверяет, изменилась ли главная фотография. Если фото обновилось, запускается процесс генерации слов по новому снимку.
Главное фото скачивается в модель и векторизуется с помощью энкодера, затем картиночное представление передаётся в языковую модель, которая генерирует ключевые слова. Наконец, событие о создании новых слов отправляется в шину данных, а в redis сохраняются созданные слова по ID объявления.
Поисковый движок получает событие, что текст создан, затем берёт ключевые слова из redis и добавляет их в поисковый индекс.

Почему только одно фото
Система обрабатывает все объявления Авито в категории «Одежда, обувь, аксессуары» — это около 200 тысяч в день. Нагрузка большая, обрабатывать все иллюстрации затратно, да и значительного прироста в качестве это не даёт, поэтому мы скорим только одно главное фото.
Когда система заработала, покупатели стали реже видеть пустые поисковые выдачи — показатель упал на 3,5%. А количество уникальных пар покупатель-продавец повысилось на 0,8%. Мы смогли повысить разнообразие в сделках, чтобы покупатели легче находили подходящие товары, а продавцы быстрее продавали свои вещи.
Резюме
В 2024 году мы с командой разработали LLM-модель, чтобы помогать пользователям создавать более информативные описания в своих объявлениях. В 2025 году это решение модернизировали:
Пересобрали модель, чтобы она могла анализировать не только главное фото, но и все остальные фотографии в объявлениях.
Разобрались с излишне лаконичными описаниями — теперь сервис создаёт более живые тексты, которые легче читать.
Ещё мы переиспользовали это решение и адаптировали модель под новую задачу:
заметили, что некоторые объявления плохо индексировались из-за неполного описания;
научили LLM создавать дополнительные ключевые слова по фотографиям и добавлять их в индекс.
Теперь покупатели в Авито могут находить больше подходящих объявлений, а продавцы быстрее продавать.
Больше новостей из мира ИИ, инсайты и видео с конференций, вакансии, конкурсы и многое другое ищите в телеграм-канале Доска AI-объявлений.
Как думаете, что ещё можно усовершенствовать в модели? Делитесь своими идеями в комментариях!
А если хотите вместе с нами помогать людям и бизнесу через технологии — присоединяйтесь к командам. Свежие вакансии есть на нашем карьерном сайте.
Комментарии (0)
lleo_aha
19.09.2025 13:38А может Авито перестать исправлять в строке поиска то что пишешь? Ну например я если пишу там "Поиск-1" мне, внезапно, это барахло и требуется :)
IgnatF
Скрытый текст
Так и не понял, что это за ПАРКА ЖЕНСКАЯ на фото.