В эпоху AI неструктурированные данные, такие как изображения, видео, аудио и текст, быстро растут. Традиционный поиск по ключевым словам не может эффективно работать с неструктурированными данными, поскольку он не способен захватывать глубокие семантические или визуальные признаки. Чтобы обеспечить эффективный поиск по неструктурированным данным, CSS предоставляет решение векторного поиска, которое обеспечивает высокопроизводительный, высокоточный поиск ближайшего соседа или приближённый поиск ближайшего соседа. Типичные сценарии использования включают поиск изображений, поиск видео, рекомендации похожих продуктов, семантический поиск текста и кросс‑модальный поиск (например, поиск изображений с помощью текста).
Преимущества
- Эффективно и надёжно: встроенный векторный поисковый движок CSS обеспечивает высокий пропускной объём поиска и низкую задержку. На основе нативной распределённой архитектуры OpenSearch, CSS предоставляет гарантии надёжности корпоративного уровня, включая мульти‑репликацию, Снапшоты и управление правами.
- Гибкая адаптация: CSS поддерживает несколько алгоритмов индексации, включая поиск с перебором, графовые алгоритмы (например, HNSW), квантование продукта (PQ) и IVF‑HNSW; а также несколько методов измерения схожести, включая эвклидово, скалярное произведение, косинусное и Хамминг.
- Совместимость с экосистемой Elasticsearch: CSS vector search совместим с открытым языком запросов OpenSearch и API. Он бесшовно интегрирует инструменты экосистемы OpenSearch, такие как Cerebro, OpenSearch Dashboards и Logstash; и поддерживает основные клиентские языки, такие как Python, Java, Go и C++, упрощая разработку и интеграцию.
Как это работает
CSS vector search использует поиск приближенных ближайших соседей (ANN) для снижения интенсивной вычислительной нагрузки поиска k-ближайших соседей (k-NN), идеально балансируя эффективность поиска и точность. Key points include:
- Сокращение набора кандидатов: Традиционный текстовый поиск отфильтровывает нерелевантные документы через обратные индексы, тогда как векторный поиск быстро извлекает потенциально релевантные векторы, используя структуры индексов, такие как графы HNSW или IVF-PQ, избегая сканирования полного набора данных. For example, HNSW использует многослойную структуру для быстрого определения ближайших соседей к вектору запроса.
- Снижение вычислительной сложности: Модель воронки сначала выполняет грубую квантизацию (например, IVF-PQ) векторов, чтобы быстро получить набор кандидатов. Затем она выполняет тонкое извлечение или переранжирование (например, косинусную схожесть) на наборе кандидатов. Квантизация использует алгоритм продуктовой квантизации (PQ) для кодирования многомерных векторов в компактные коды, снижая затраты на хранение и вычисления.
- Балансировка производительности и точности: параметры индексирования (например, количество слоёв HNSW и количество кластеров IVF) могут динамически настраиваться для компромисса между recall и задержкой запросов.
Процедура
- Подготовка данных: используйте AI‑модель (например, CNN и Transformer) для обработки ваших неструктурированных данных (например, изображений, видео и текста) и извлечения векторных признаков.
- Создание индекса: создайте векторные индексы в вашем кластере OpenSearch и определите сопоставления векторных полей, включая указание размерности вектора, алгоритмов индексирования и методов измерения схожести.
- Запись данных: сохраните векторные признаки (обычно вместе с оригинальными данными или метаданными) в эти индексы.
- Векторный поиск: используйте стандартный OpenSearch query DSL (например, KNN query) чтобы передать вектор запроса (сгенерированный той же моделью) и указать количество (k) ближайших соседей, которые вы ожидаете получить.
- Результат: CSS векторный поисковый движок выполняет эффективный ANN поиск и возвращает k наиболее релевантные результаты и их коэффициенты сходства. Ваше приложение может затем обрабатывать эти результаты (например, показывая похожие изображения или предлагая соответствующие товары).
Ограничения
Встроенный CSS векторный поисковый движок доступен только для кластеров OpenSearch 1.3.6 и 2.19.0.