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

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

e963406937960e3988bf0dff8cdc47c0.jpeg

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

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

для юзера

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

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

для бизнеса

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

Плюсы:

для юзера

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

для бизнеса

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

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

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

Плюсы:

для юзера

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

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

для бизнеса

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

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

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

Минусы:

для бизнеса

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

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

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

ВЫВОДЫ:

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

© Habrahabr.ru