Поиск по фото - классическая задача, которую Яндекс с Гуглом решили очень давно, но вот недавно пришлось столкнуться с этим функционалом применительно к поиску конкретного товара и первым в очереди был Ozon. Каково было удивление, когда такой функцию там не оказалось, хотя казалось бы - поиска по фото... Дальше Wildberries: там функция есть, но после пары примеров использования стало ясно, что задача не решается, а поиск по фото с переменным успехом выдается разнообразные предметы кое-как подходящие по цвету и форме.
Скорее всего, существующий алгоритм поиска по фото на WB - классический. Изображение превращается в вектор чисел (эмбеддингов), который потом прогоняется по всей массе товаров маркетплейса с поиском ближайшего похожего вектора и по нему выдается товар. Поэтому в выдаче могут быть как нужные товары, так и полная ерунда, которая просто похожа по длине и кривизне линий на изображении.
Минусы такой реализации:
для юзера
Один и тот же товар на двух картинках будет показывать разную выдачу, обрежьте 30% фотографии для примера. Я уже не говорю о фотографии на столе, в руках, на человеке и т.д.
если ты знаешь какие-то конкретные детали этого предмета, очень логично использовать это для фильтрации выдачи (например, материал, или его назначение), а это невозможно
для бизнеса
Не понятно, что конкретно искал клиент. Качество алгоритма можно оценить только косвенно. Например, по конверсии в покупку из выдачи, или посчитать топ категорий среди выдачи... в общем, не однозначно.
Плюсы:
для юзера
Он как-то работает :) можно найти "круглый бежевый пуфик с волнистым рельефом", НО сфотографированный под идеальным светом, нужным углом, стоящий на похожего цвета ламинате
для бизнеса
алгоритм понятный, есть множества его реализаций в открытом доступе
цена. Поиск по векторам весьма дешево стоит с точки зрения вычислительных мощностей
Какова альтернатива? - Сперва определить конкретный элемент на картинке, который человек хочет купить, и уже этот предмет со своими характеристиками искать на маркетплейсе. Делается это любой мультимодальной (или в простом приближении img2text) моделью, можно взять открытую LLAMA 3.2 или российский GigaChat по API. В качестве доказательства такого подхода мы в Statzilla буквально за 3 часа собрали телеграмм бота. На вход кидаешь картинку, плюс можно добавить какой-то текст, а на выходе ссылки на 4 маркетплейса.
Плюсы:
для юзера
более релевантная выдача
Переход в категорию товара сразу с фильтрами, причем если иметь доступ к фильтрам на моменте обработки изображения, то можно автоматом их заполнить и вести пользователя сразу на отфильтрованную выдачу
для бизнеса
более релевантная выдача повышает вероятность продажи. В выдаче будут релевантные связанные товары (а не просто что-то по форме напоминающее искомый предмет), но возможно с другими характеристиками: покупатель искал круглый пуфик, таких нет, но есть квадратные.
качественная продуктовая аналитика по поиску - легко понять в каких категориях эта функция востребована, где ее можно улучшать. И улучшать легко, просто меняя промпт в модели. Мы, для простоты, берем описание из 4-5 слов, если больше, будет точнее, но там уже ограничение классического поиска.
Возможность прогнать все товары со всеми карточками через алгоритм и автоматически проиндексировать все товары и заполнить характеристики, что в целом улучшает стандартный поиск маркетплейса. И вообще, это может быть платной опцией для селлеров - проиндексировать все картинки товаров.
Минусы:
для бизнеса
Цена. Чтобы так организовать поиск по картинке, нужно не просто построить вектор по картинке, но и скормить это LLM модели, что при закупке токенов у облачного провайдера обойдется примерно в 1 рубль (для картинки нужно порядка 500-1000 токенов), на собственном железе дешевле, но не принципиально. НО, можно использовать дешевый аналог, например популярный img2text - BLIP, там стоимость можно сократить в несколько раз, что уже близко к стоимости векторизации и поиска схожего вектора, который суммарно обходится примерно в 10 копеек.
Работает примерно на секунду дольше стандартного поиска
100% совпадений получить почти невозможно, потому что мы сжимаем целую картинку до нескольких слов запроса с фильтрами. НО и при классическом поиске по фото это сложно, ввиду различного окружения/фона.
Выводы
Выбор конечно не очевидный, но альтернативный вариант поиска занимает в реализации день работы, день тестов и недельку деплоя. Почему это не является дефолтной фичей всех магазинов и маркетплейсов - не понятно. Доля поиска по картинке вряд ли большая, а, значит, затраты на ее реализацию в виде предложенного алгоритма по затратам не превысит несколько десятков млн руб в год.