TL;DR: Узнайте, как Manticore Search позволяет осуществлять поиск по тексту и изображению, сочетая обработку естественного языка с векторным извлечением изображений. Изучите различные подходы, от традиционных методов до продвинутого векторного поиска, и попробуйте нашу демонстрацию поиска по тексту и изображению , чтобы увидеть это в действии.
Введение
Найти нужное изображение, описав его на естественном языке — например, "закат над пляжем" — больше не просто мечта о будущем. Поиск по тексту и изображению делает это возможным, безупречно соединяя язык с визуальным контентом.
Традиционные методы, такие как сопоставление ключевых слов или ручная разметка, имеют свои ограничения в точности и масштабируемости. Современные подходы, такие как тот, который поддерживается Manticore Search, используют семантическое понимание и векторные эмбеддинги для предоставления более точных и контекстно-осведомленных результатов. Независимо от того, создаете ли вы платформу электронной коммерции, управляете медиа-библиотекой или разрабатываете творческий инструмент, поиск по тексту и изображению может упростить взаимодействие пользователей с вашим контентом.
Хотите увидеть это в действии? Попробуйте нашу демонстрацию поиска по тексту и изображению .
Разные подходы к поиску по тексту и изображению
1. Традиционный поиск на основе ключевых слов
Поиск на основе ключевых слов — один из самых простых методов для реализации поиска по тексту и изображению. Для начала вам нужно настроить соответствующую структуру данных:
CREATE TABLE images (
title text,
description text,
tags text,
path string stored
);
Чтобы это работало эффективно, вам сначала нужно вручную размечать каждое изображение. После разметки вы можете искать, используя такие запросы:
SELECT * FROM images WHERE MATCH('@tags red dress');
Или вы также можете искать по заголовку и описанию, которые вы добавили к своим изображениям:
SELECT * FROM images WHERE MATCH('@(title,description) red dress');
Этот подход основывается на сопоставлении текстовых метаданных с поисковыми терминами. Хотя он прост, этот подход требует ручной разметки и имеет несколько ограничений. Он не учитывает семантические связи между терминами, не может понять более широкий контекст и ограничен точными совпадениями, а не концептуальным сходством.
2. Поиск на основе категоризации
Чтобы улучшить функциональность поиска для продуктов, вы можете реализовать категоризацию. Этот подход позволяет вам фильтровать изображения на основе выбора категории, одновременно применяя полнотекстовый поиск к пользовательским атрибутам. Этот метод двойного поиска помогает пользователям более эффективно находить именно то, что им нужно.
Вам следует организовать свои изображения, сортируя их по различным категориям самостоятельно. Вот как может выглядеть структура таблицы:
CREATE TABLE images (
category_id int,
subcategory_id int,
attributes json,
path string stored
);
Этот метод организует изображения в заранее определенные категории, предоставляя более структурированный подход, чем поиск на основе ключевых слов, при этом он легче для навигации. Однако он ограничен жесткой категоризацией и требует ручной классификации изображений в конкретные группы.
3. Использование Manticore Search с подписями изображений
Существует множество ИИ-моделей, способных генерировать подписи к изображениям. Хотя эти подписи могут быть недостаточно отшлифованы для контента, ориентированного на клиентов, они могут быть ценными для улучшения функциональности поиска. Этот подход дополняет традиционные методы на основе ключевых слов, предлагая дополнительный уровень возможностей поиска.
Неважно, как вы организуете свои изображения — через категории или ручную разметку — вам нужно будет использовать операторы полнотекстового поиска, чтобы эффективно находить изображения, осуществляя поиск по заполненным полям.
Давайте рассмотрим, как может развиваться рабочий процесс, если вы решите реализовать ручное создание подписей:
- Вставьте свои данные с правильно отформатированными подписями:
INSERT INTO images (id, auto_caption, indexed_caption, path) VALUES (1, 'Человек, идущий по пляжу во время заката', 'пляж закат человек', '/images/sunset_beach.jpg'), (2, 'Красный автомобиль, припаркованный в городских условиях', 'автомобиль красный городской парковка', '/images/red_car.jpg'); - Выполните базовые текстовые поиски, используя поле indexed_caption:
SELECT * FROM images WHERE MATCH('@indexed_caption пляж закат'); - Используйте продвинутые операторы поиска для более точных результатов:
-- Сопоставление фраз SELECT * FROM images WHERE MATCH('"красный автомобиль"'); -- Булевы операторы SELECT * FROM images WHERE MATCH('@indexed_caption (пляж | закат) -ночь');
Ключевые моменты для оптимального поиска:
- Предварительная обработка подписей для удаления стоп-слов
- Использование стемминга для лучшего сопоставления
- Учет синонимов для общих терминов
- Реализация оценки релевантности для лучших результатов
Вы также можете комбинировать полнотекстовый поиск с дополнительными фильтрами:
SELECT path, WEIGHT() as relevance
FROM images
WHERE MATCH('@indexed_caption sunset')
AND category_id = 1
ORDER BY relevance DESC
LIMIT 10;
4. Векторный поиск (рекомендуемый подход)
Как мы уже исследовали, традиционные методы, такие как поиск на основе ключевых слов или категоризации, наряду с улучшенными вариантами с использованием подписей, предлагают различные уровни эффективности и сложности. Хотя эти подходы могут быть ценными в определенных контекстах, они часто не справляются с нюансированными или неоднозначными запросами.
Чтобы преодолеть эти ограничения, векторный поиск с Manticore Search предлагает мощную альтернативу. Используя векторные эмбеддинги, этот подход преодолевает разрыв между текстом и изображениями, позволяя семантическое понимание и точное сопоставление. Давайте разберем, как это работает и шаги для его реализации.
Как работает векторный поиск
Векторный поиск основывается на эмбеддингах — числовых представлениях данных, которые кодируют семантическое значение. Мультимодальная модель обрабатывает как текстовые, так и изображенческие входные данные для генерации этих эмбеддингов, позволяя системе сопоставлять запросы и изображения на основе смысла, а не буквальных ключевых слов. Рабочий процесс включает:
- Генерацию эмбеддингов как для изображений, так и для текста с использованием модели машинного обучения.
- Хранение этих эмбеддингов в базе данных, оптимизированной для поиска по сходству.
- Запрос базы данных для нахождения наиболее релевантных совпадений для данного ввода.
Чтобы помочь визуализировать этот процесс, следующая диаграмма иллюстрирует, как текст и изображения преобразуются в эмбеддинги и сопоставляются через Manticore Search:

Настройка векторного поиска с Manticore
Вот как вы можете реализовать поиск на основе векторов шаг за шагом:
- Настройте свою мультимодальную модель
Используйте модель, такую как TinyCLIP, легковесную версию CLIP, для генерации векторов для изображений и текста. Загрузите модель и ее процессор:from transformers import CLIPProcessor, CLIPModel 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") - Создайте структуру базы данных
Настройте таблицу в Manticore Search для хранения векторов:CREATE TABLE images ( id bigint, image_path text, embeddings float_vector knn_type='hnsw' knn_dims='512' hnsw_similarity='COSINE' ); - Сгенерируйте и вставьте векторы
Обработайте ваши изображения через модель, чтобы создать векторы и сохранить их в базе данных. Для получения рекомендаций по реализации этого шага обратитесь к скрипту load-dataset на GitHub . Хотя этот скрипт не предназначен для прямого использования, он служит подробной справкой для создания векторов и их вставки в базу данных. - Запросите базу данных
$embeddings = $Embed->getImageEmbeddings($image->getPath()); $query = new Manticoresearch\Query\KnnQuery('embeddings', $embeddings, 10); $docs = $client->index('image')->search($query)->get();
Преимущества поиска на основе векторов
Реализуя поиск изображений на основе векторов с Manticore, вы получаете несколько ключевых преимуществ:
- Семантическое понимание: Сопоставляет запросы и изображения на основе их значения, а не точных ключевых слов.
- Сопоставление визуальных концепций: Точно захватывает сложные визуальные идеи и связывает их с текстовыми описаниями.
- Совместимость с естественным языком: Легко обрабатывает запросы на естественном языке, позволяя интуитивно искать.
- Улучшенная точность: Предоставляет самые точные результаты, даже для абстрактных или тонких вводов.
- Масштабируемость: Снижает ручные усилия и работает без проблем с большими наборами данных.
Сравнение подходов
Вот как разные методы работают в реальных сценариях:
| Подход | Описание | Точность | Сложность настройки | Обслуживание | Скорость запроса |
|---|---|---|---|---|---|
| Поиск по ключевым словам | Сопоставляет запросы пользователей с вручную добавленными тегами или метаданными. Простой, но не имеет семантического понимания. | Низкая | Низкая | Высокая | Быстрая |
| Поиск по категориям | Организует изображения в заранее определенные категории и позволяет структурированную фильтрацию. | Средняя | Средняя | Высокая | Быстрая |
| Использование подписей | Использует сгенерированные ИИ или вручную созданные подписи для улучшения возможностей поиска на основе текста. | Средняя | Высокая | Средняя | Быстрая |
| Поиск на основе векторов | Использует векторы для семантического поиска, связывая текст и изображения значимым образом. | Высокая | Высокая | Низкая | Средняя |
Попробуйте демонстрацию на GitHub
Хотите увидеть, как это все работает вместе? Мы открыли исходный код нашей демонстрации, так что вы можете исследовать и даже создать свою собственную реализацию. Посетите репозиторий GitHub для полного исходного кода: Демонстрация поиска изображений Manticore .
Репозиторий включает подробные инструкции и образцы скриптов, чтобы помочь вам настроить и адаптировать ваше приложение для поиска по тексту и изображениям. Независимо от того, экспериментируете ли вы с демонстрацией или планируете решение, готовое к производству, это отличная отправная точка.
Заключение
Поиск по тексту и изображениям на основе векторов с использованием Manticore Search предлагает значительные преимущества по сравнению с традиционными подходами. Он предоставляет:
- Превосходную точность в сопоставлении запросов пользователей с соответствующими изображениями
- Отсутствие необходимости в ручной разметке или подписывании
- Лучшее понимание семантических отношений
- Масштабируемую производительность для растущих коллекций изображений
Хотя другие методы, такие как основанные на ключевых словах или категоризации, могут быть полезны для конкретных случаев использования, поиск на основе векторов представляет собой наиболее современное и эффективное решение для современных требований поиска по тексту и изображениям.
Попробуйте нашу демонстрацию на image.manticoresearch.com или погрузитесь в исходный код на GitHub: Демонстрация поиска изображений Manticore .

