Поиск по фото для Ozon и WB за 3 часа

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Поиск по фото - классическая задача, которую Яндекс с Гуглом решили очень давно, но вот недавно пришлось столкнуться с этим функционалом применительно к поиску конкретного товара и первым в очереди был Ozon. Каково было удивление, когда такой функцию там не оказалось, хотя казалось бы - поиска по фото... Дальше Wildberries: там функция есть, но после пары примеров использования стало ясно, что задача не решается, а поиск по фото с переменным успехом выдается разнообразные предметы кое-как подходящие по цвету и форме.

Скорее всего, существующий алгоритм поиска по фото на WB - классический. Изображение превращается в вектор чисел (эмбеддингов), который потом прогоняется по всей массе товаров маркетплейса с поиском ближайшего похожего вектора и по нему выдается товар. Поэтому в выдаче могут быть как нужные товары, так и полная ерунда, которая просто похожа по длине и кривизне линий на изображении.

Минусы такой реализации:

для юзера

  • Один и тот же товар на двух картинках будет показывать разную выдачу, обрежьте 30% фотографии для примера. Я уже не говорю о фотографии на столе, в руках, на человеке и т.д.

  • если ты знаешь какие-то конкретные детали этого предмета, очень логично использовать это для фильтрации выдачи (например, материал, или его назначение), а это невозможно

для бизнеса

  • Не понятно, что конкретно искал клиент. Качество алгоритма можно оценить только косвенно. Например, по конверсии в покупку из выдачи, или посчитать топ категорий среди выдачи... в общем, не однозначно.

Плюсы:

для юзера

  • Он как-то работает :) можно найти "круглый бежевый пуфик с волнистым рельефом", НО сфотографированный под идеальным светом, нужным углом, стоящий на похожего цвета ламинате

для бизнеса

  • алгоритм понятный, есть множества его реализаций в открытом доступе

  • цена. Поиск по векторам весьма дешево стоит с точки зрения вычислительных мощностей

Какова альтернатива? - Сперва определить конкретный элемент на картинке, который человек хочет купить, и уже этот предмет со своими характеристиками искать на маркетплейсе. Делается это любой мультимодальной (или в простом приближении img2text) моделью, можно взять открытую LLAMA 3.2 или российский GigaChat по API. В качестве доказательства такого подхода мы в Statzilla буквально за 3 часа собрали телеграмм бота. На вход кидаешь картинку, плюс можно добавить какой-то текст, а на выходе ссылки на 4 маркетплейса.

Плюсы:

для юзера

  • более релевантная выдача

  • Переход в категорию товара сразу с фильтрами, причем если иметь доступ к фильтрам на моменте обработки изображения, то можно автоматом их заполнить и вести пользователя сразу на отфильтрованную выдачу

для бизнеса

  • более релевантная выдача повышает вероятность продажи. В выдаче будут релевантные связанные товары (а не просто что-то по форме напоминающее искомый предмет), но возможно с другими характеристиками: покупатель искал круглый пуфик, таких нет, но есть квадратные.

  • качественная продуктовая аналитика по поиску - легко понять в каких категориях эта функция востребована, где ее можно улучшать. И улучшать легко, просто меняя промпт в модели. Мы, для простоты, берем описание из 4-5 слов, если больше, будет точнее, но там уже ограничение классического поиска.

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

Минусы:

для бизнеса

  • Цена. Чтобы так организовать поиск по картинке, нужно не просто построить вектор по картинке, но и скормить это LLM модели, что при закупке токенов у облачного провайдера обойдется примерно в 1 рубль (для картинки нужно порядка 500-1000 токенов), на собственном железе дешевле, но не принципиально. НО, можно использовать дешевый аналог, например популярный img2text - BLIP, там стоимость можно сократить в несколько раз, что уже близко к стоимости векторизации и поиска схожего вектора, который суммарно обходится примерно в 10 копеек.

  • Работает примерно на секунду дольше стандартного поиска

  • 100% совпадений получить почти невозможно, потому что мы сжимаем целую картинку до нескольких слов запроса с фильтрами. НО и при классическом поиске по фото это сложно, ввиду различного окружения/фона.

Выводы

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

Источник: https://habr.com/ru/articles/857750/


Интересные статьи

Интересные статьи

Статья направлена на решение проблемы "зависания" выгрузки результатов опросов при использовании модуля Vote 1С-Битрикс в случае, если в опросе много вопросов или ответов. Так-же в статье реализована ...
Всем привет! Пару месяцев назад у нас возникла задача запилить лендос для нашего онлайн сервиса. Наш стек - Create React App + .Net Core. Погугля немного, мы решили, что хотим запилить лендос на Next ...
Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 с ЗУП без 1С-ника В жизни так бывает, причём бывает чаще чем хотелось б...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...
Предлагаемый усилитель предназначен для одного из самых классических датчиков пульса — оптического. Той самой «прищепки» на мочку уха или палец, как у некоторых тренажёров. Только здесь прище...