TL;DR: Узнайте, как создать приложение обратного поиска изображений с Manticore Search, включая обзор истории обратного поиска изображений, технологий, лежащих в его основе, и практических подходов к системам поиска изображений.
Введение
Обратный поиск изображений изменил способ, которым мы открываем цифровой контент, позволяя пользователям искать с помощью изображений вместо текста. Эта технология имеет множество применений, от помощи покупателям в поиске товаров до возможности дизайнерам проверять свою работу по сравнению с существующими дизайнами. Она стала ключевым компонентом во многих цифровых платформах.
Вы можете попробовать нашу демонстрацию обратного поиска изображений на сайте image.manticoresearch.com , а также ознакомиться с открытой реализацией на GitHub .
Мы подробно рассмотрим, как работает обратный поиск изображений, обсудим его реальные применения и покажем, как технология поиска по векторам делает этот инструмент эффективным и доступным для различных сценариев, от повседневного просмотра до специализированных приложений.
Понимание обратного поиска изображений
Как работает обратный поиск изображений?
Обратный поиск изображений позволяет пользователям искать, загружая изображение или указывая URL изображения, а система возвращает визуально похожие изображения вместе с сопутствующей информацией. Процесс включает несколько ключевых шагов, используя технологию поиска по векторам для эффективной обработки высокоразмерных данных изображений:
- Извлечение признаков: Система анализирует изображение, чтобы определить ключевые визуальные элементы.
- Генерация эмбеддингов: Визуальные признаки преобразуются в числовое векторное представление.
- Сравнение схожести: Этот вектор сравнивается с базой данных сохранённых векторов изображений с помощью поиска по векторам.
- Ранжирование результатов: Результаты упорядочиваются по оценкам схожести.
Роль моделей машинного обучения
Модели машинного обучения, особенно глубокое обучение, произвели революцию в обратном поиске изображений. Ранние системы 2000‑х годов полагались на простые гистограммы цветов и обнаружение краёв, что ограничивало точность. Появление сверточных нейронных сетей (CNN) в 2012 году, таких как AlexNet, значительно улучшило способность понимать сложные визуальные паттерны.
Со временем сервисы, такие как Google Images и Pinterest, перешли от простого сопоставления метаданных к использованию продвинутых моделей глубокого обучения, предоставляя точные результаты поиска. TinEye также продемонстрировал возможность отслеживать изменения и повторное использование изображений в сети.
Современные модели машинного обучения превосходно понимают сложные визуальные паттерны и генерируют детальные эмбеддинги изображений, захватывающие суть каждой фотографии. Эти модели могут понимать контекст, распознавать объекты с разных ракурсов и даже улавливать художественные стили — достижения, недоступные старым методам компьютерного зрения.
Создание системы обратного поиска изображений с TinyCLIP и Manticore Search

В Manticore Search мы исследовали несколько подходов к построению эффективной системы обратного поиска изображений. Мы искали практичное решение, использующее мощный поиск по векторам Manticore, остающееся доступным, и это привело нас к TinyCLIP — упрощённой модели, которая эффективно работает на обычных CPU.
TinyCLIP идеально подходит для нашей реализации, поскольку сочетает эффективность обработки с точностью. В отличие от более крупных моделей, требующих специализированной GPU‑инфраструктуры, TinyCLIP может работать на обычном оборудовании, что делает её идеальной для лёгких, контейнеризованных развертываний.
Являясь частью семейства CLIP (Contrastive Language-Image Pre-training), TinyCLIP может создавать векторные эмбеддинги как для изображений, так и для текста, позволяя:
- Искать изображения, используя другие изображения (обратный поиск изображений).
- Искать изображения по текстовым описаниям.
- Находить связанный текстовый контент по изображению.
- Сопоставлять тексты друг с другом на основе схожести.
TinyCLIP сохраняет хорошую точность, одновременно уменьшая:
- Размер модели (меньше места для хранения и памяти).
- Вычислительные требования (работает на CPU).
- Время вывода (быстрее отклика).
- Размер контейнера (простое развертывание и масштабирование).
Интегрируя TinyCLIP с векторным хранилищем Manticore Search, мы создали практическую основу для построения развертываемых мультимодальных поисковых систем.
Поиск по векторам и Manticore Search
Поиск по векторам — эффективный подход к обратному поиску изображений, позволяющий быстро и точно сравнивать высокоразмерные векторы. Manticore Search, открытый движок, поддерживает поиск по векторам, что делает его мощным выбором для реализации обратного поиска изображений.
Реализация обратного поиска изображений с Manticore Search
Мы воплотили обратный поиск изображений в жизнь с помощью возможностей Manticore Search. Ниже представлено пошаговое руководство:
- Настройка Manticore Search: Установите и настройте Manticore Search, следуя этим инструкциям .
- Создание таблицы для векторных изображений: Определите схему таблицы для хранения векторных изображений:
CREATE TABLE IF NOT EXISTS <table name> ( id bigint, image_path text, caption text, embeddings float_vector knn_type='hnsw' knn_dims='512' hnsw_similarity='COSINE' ) - Генерация эмбеддингов изображений: Используйте TinyCLIP для преобразования ваших изображений в векторные эмбеддинги.
Генерация эмбеддингов изображений: Используйте TinyCLIP для преобразования изображений в векторные эмбеддинги. Мы создали легковесный Python‑сервер для генерации и получения этих эмбеддингов.
Если вам интересно использовать модель с Python, это довольно просто и выглядит примерно так:from transformers import CLIPProcessor, CLIPModel, AutoProcessor, AutoModelForCausalLM clip_model = CLIPModel.from_pretrained("wkcn/TinyCLIP-ViT-61M-32-Text-29M-LAION400M") clip_processor = CLIPProcessor.from_pretrained("wkcn/TinyCLIP-ViT-61M-32-Text-29M-LAION400M") try: image_bytes = base64.b64decode(request.image) image = Image.open(io.BytesIO(image_bytes)) inputs = clip_processor(images=image, return_tensors="pt") with torch.no_grad(): image_features = clip_model.get_image_features(**inputs) print(image_features.squeeze().tolist()) except Exception as e: raise HTTPException(status_code=400, detail=f"Error processing image: {str(e)}") - Индексация векторных изображений: Импортируйте ваши векторные данные в таблицу Manticore Search.
Сначала обработайте каждое изображение, чтобы получить его текстовое представление эмбеддинга, затем сохраните эти векторы в вашей таблице Manticore Search. Этот важный шаг преобразует ваши визуальные данные в поисковые числовые значения, делая их готовыми к эффективному извлечению при поиске.
Посмотрите на этот скрипт , который мы разработали для импорта данных в наш демо, используя упомянутый ранее API Python‑сервера. Всё, что вам нужно сделать, — обработать вашу коллекцию изображений через модель, которая сгенерирует векторы, которые затем можно сохранить в Manticore Search. - Реализация поиска изображений: Интегрируйте векторные возможности Manticore Search для поиска визуально похожих изображений.
Вот практическая реализация и базовый рабочий процесс, демонстрирующие, чего вы можете достичь с Manticore. Для простоты некоторые детали опущены, но полный код можно найти в нашем репозитории .Также в этом скрипте вы можете увидеть, как мы обрабатываем эмбеддинги изображений и выполняем поиск векторного сходства с помощью Manticore Search для получения релевантных результатов.// Upload image and get embeddings first $image = Image::upload($file['tmp_name'])->unwrap(); $embeddings = $Embed->getImageEmbeddings($image->getPath())->unwrap(); // Search with Manticore Search $client = new Manticoresearch\Client(config('manticore')); $query = new Manticoresearch\Query\KnnQuery('embeddings', $embeddings, 10); $docs = $client->index('image')->search($query)->get(); // Finally do something with images found foreach ($docs as $doc) { $row = ['id' => (int)$doc->getId(), ...$doc->getData()]; $items[] = $row; }
Демонстрация поиска изображений Manticore
Мы разработали демо, демонстрирующее возможности векторного поиска, которое вы можете исследовать на image.manticoresearch.com . Это демо использует AI‑модель TinyCLIP для преобразования изображений в векторы и выполнения быстрых поисков сходства.
Ключевые возможности
- Обратный поиск изображений (поиск изображение‑к‑изображению): Загрузите или укажите ссылку на изображение, чтобы найти визуально похожий контент.
- Поиск по тексту (Text-to-Image Search): Используйте текстовые описания для поиска релевантных изображений. Эта функция возможна благодаря способности TinyCLIP создавать текстовые эмбеддинги, совпадающие с эмбеддингами изображений, обеспечивая эффективный кросс‑модальный поиск. Хотя эта статья сосредоточена на обратном поиске изображений, в будущем мы создадим отдельную статью, посвящённую поиску по тексту.
- Эффективная обработка на CPU: TinyCLIP обеспечивает быстрые результаты без необходимости специализированного оборудования.
Применения обратного поиска изображений
Обратный поиск изображений открывает множество возможностей:
- Электронная коммерция: Обратный поиск изображений может помочь клиентам найти визуально похожие товары, загрузив фотографию. Например, если клиент видит понравившееся платье, но не может найти его в интернете, он может загрузить его изображение, и система покажет визуально похожие платья, доступные для покупки. Эта функция улучшает поиск товаров и повышает качество покупательского опыта.
- Управление контентом: Выявление дублирующихся изображений — серьезная задача для организаций с большими библиотеками контента. Обратный поиск изображений позволяет менеджерам контента быстро находить и удалять избыточные изображения, оптимизировать пространство хранения и обеспечивать эффективное управление контентом. Он также помогает отслеживать несанкционированное использование изображений на разных платформах, поддерживая соблюдение авторских прав.
- Рекомендации: Предоставление визуально релевантных предложений помогает повысить вовлечённость пользователей, упрощая им поиск связанного контента. Например, пользователь, загрузивший фото определённого предмета мебели, может увидеть похожие изделия, соответствующие стилю или цвету, что облегчает им дополнение набора или поиск аналогичных вариантов. Эта возможность может быть применена в моде, домашнем декоре и многих других секторах, обеспечивая более интуитивный и визуально ориентированный опыт рекомендаций.
Заключение и дальнейшие направления
Обратный поиск изображений прошёл долгий путь, эволюционировав от простого сопоставления цветов до продвинутого векторного анализа сходства. С моделями, такими как TinyCLIP и Manticore Search, создание системы обратного поиска изображений теперь возможно для разработчиков любого уровня.
Наш демо‑поиск изображений, доступный на image.manticoresearch.com , позволяет вам непосредственно ознакомиться с этими технологиями. Независимо от того, хотите ли вы добавить визуальный поиск в своё приложение или просто интересуетесь, это демо — отличное место для начала изучения возможностей современного обратного поиска изображений.
