Обзор гибридного поиска в Milvus
Milvus 2.4 расширил свои возможности гибридного поиска, представив мультивекторные столбцы в рамках одной коллекции. Это обновление обеспечивает более продвинутый и гибкий поиск данных, позволяя выполнять одновременные запросы по нескольким типам и полям векторов. Затем результаты поиска из каждого поля объединяются и повторно ранжируются с использованием нескольких алгоритмов повторного ранжирования для получения более точных результатов.
Почему эта возможность важна и какие преимущества она дает? Какие проектные стратегии лежат в основе этой функции? В этом посте мы рассмотрим эти вопросы. Мы также приведем практический пример, сравнивающий результаты одновекторного и гибридного поиска, демонстрируя, как эта мощная новая функция может давать более точные результаты.
Что такое гибридный поиск?
Начнем с основ: что такое гибридный поиск в Milvus?
Milvus поддерживает создание до 10 векторных полей для одного и того же набора данных в рамках одной коллекции. На основе этой поддержки гибридный поиск позволяет пользователям выполнять поиск одновременно по нескольким векторным столбцам. Эта возможность позволяет объединять мультимодальный поиск, гибридный разреженный и плотный поиск, а также гибридный плотный и полнотекстовый поиск, обеспечивая универсальную и гибкую функциональность поиска.
Эти векторы в разных столбцах представляют разнообразные аспекты данных, происходящие из разных моделей эмбеддингов или проходящие различные методы обработки. Результаты гибридного поиска объединяются с использованием различных стратегий повторного ранжирования.
как работает гибридный поиск
Как работает гибридный поиск в Milvus
Эта функция позволяет разным столбцам:
Представлять несколько перспектив информации. Например, в электронной коммерции изображения товаров включают виды спереди, сбоку и сверху. Разные виды могут быть представлены различными типами или размерностями векторов.
Использовать различные типы векторных эмбеддингов. Это включает плотные эмбеддинги из моделей, таких как BERT и Transformers, и разреженные эмбеддинги из алгоритмов, таких как BM25, BGE-M3, и SPLADE.
Поддерживать объединение мультимодальных векторов из различных типов неструктурированных данных, таких как изображения, видео, аудио и текстовые файлы. Например, в уголовных расследованиях подозреваемые могут быть представлены через биометрические модальности, такие как отпечатки пальцев, голосовые отпечатки и распознавание лиц, что помогает идентифицировать людей в разных модальностях.
Поддерживать объединение векторного поиска и полнотекстового поиска.
Почему мы улучшили гибридный поиск
Недавний анонс OpenAI своей мультимодальной модели GPT-4o вновь разжег дискуссии о будущем ИИ. Работа с мультимодальными данными становится все более необходимой для достижения Artificial General Intelligence (AGI). Ее появление также подчеркивает идею о том, что "все можно векторизовать." Векторы, метод кодирования эпохи ИИ, являются ключевым звеном, соединяющим разрозненные модальности. Информация, которую они инкапсулируют, становится все более разнообразной и сложной, предъявляя повышенные требования к векторным базам данных для хранения и извлечения векторных данных.
Следовательно, эволюция в сторону гибридного поиска имеет ключевое значение. Именно поэтому Milvus вводит поддержку гибридного поиска в своих последних релизах, чтобы соответствовать этим растущим требованиям. Это стратегическое улучшение позволяет Milvus работать со сложными и мультимодальными представлениями данных и продвигает возможности AI-систем в понимании и обработке всё более сложных наборов данных.
Благодаря этой новой функции Milvus даёт разработчикам возможность исследовать новые возможности в приложениях на базе AI, ещё больше сокращая разрыв между сложностью данных и практическими инсайтами.
Как мы спроектировали гибридный поиск в Milvus
Поддержка векторного поиска по нескольким векторным столбцам потребовала масштабной реструктуризации дизайна Milvus. Например, мы сняли ограничения на хранение и запись, чтобы обеспечить совместимость и стабильность системы, и внедрили продвинутые методы поиска по нескольким векторным столбцам для обработки сложных запросов.
Как работает гибридный поиск?
Ранее Milvus позволял использовать только один векторный столбец на коллекцию в пути записи. Мы сняли это ограничение и ввели значение по умолчанию — четыре векторных столбца на коллекцию, которое можно расширить максимум до десяти. Каждый векторный столбец в коллекции может поддерживать разные типы метрик и индексов.
Важное примечание: Для совместимости системы вы можете запрашивать коллекцию только тогда, когда индексы для всех векторных столбцов созданы и загружены в память.
Мы реализовали многомаршрутное векторное извлечение и стратегию гибридного повторного ранжирования для выполнения поиска по нескольким векторным столбцам в пути чтения. Процесс выглядит следующим образом:
Извлечение: Мы определяем внутренние параметры для управления извлечёнными результатами для каждого маршрута векторного поиска (каждого столбца). Этот шаг поддерживает промежуточные параметры, такие как filter и limit, но не выходные параметры, такие как
output_fieldиgroup_by_field.Повторное ранжирование: После получения результатов из каждого маршрута извлечения следующий шаг — объединить эти результаты в процессе повторного ранжирования. Milvus поддерживает две классические стратегии повторного ранжирования: Ranked Retrieval Fusion (RRF) и WeightedRanker. Кроме того, Milvus также позволяет пользователям использовать модели повторного ранжирования на стороне клиента для переупорядочивания результатов.
каков процесс гибридного поиска в Milvus
Каков процесс гибридного поиска в системе Milvus?
Эта архитектура гарантирует, что Milvus может эффективно справляться со сложностями хранения и извлечения информации в средах, где несколько векторных столбцов являются необходимыми.
Стратегии повторного ранжирования
В настоящее время Milvus поддерживает следующие стратегии повторного ранжирования:
Ranked Retrieval Fusion (RRF): Эта стратегия объединяет результаты на основе их рангов в разных векторных столбцах.
WeightedRanker: Этот подход объединяет результаты, вычисляя взвешенное среднее оценок (или векторных расстояний) из разных векторных поисков. Он назначает веса на основе значимости каждого векторного поля.
Следующая иллюстрация показывает, как работает процесс повторного ранжирования в Milvus.
как работает повторное ранжирование
Как работает повторное ранжирование в Milvus
Ranked Retrieval Fusion (RRF)
RRF — это алгоритм слияния данных, который объединяет результаты извлечения на основе обратной величины их рангов. Он балансирует влияние каждого векторного поля, особенно когда нет явного приоритета важности. Эта стратегия используется, когда вы хотите учитывать все векторные поля в равной степени или когда относительная важность каждого поля неясна.
Базовый процесс RRF выглядит следующим образом:
Сбор ранжирований во время извлечения: Ретриверы по нескольким векторным полям извлекают и сортируют результаты.
Слияние рангов: Алгоритм RRF взвешивает и объединяет ранги от каждого ретривера. Формула следующая:
формула RRF
Здесь 𝑁 представляет количество различных маршрутов извлечения, rank𝑖(𝑑) — это позиция ранга извлеченного документа 𝑑, присвоенная 𝑖-м извлекателем, а 𝑘 — параметр сглаживания, обычно равный 60.
- Комплексное ранжирование: Повторно ранжируйте извлеченные результаты на основе объединенных оценок, чтобы получить окончательные результаты.
WeightedRanker
Стратегия WeightedRanker присваивает разные веса результатам из каждого маршрута векторного извлечения в зависимости от значимости каждого векторного поля. Эта стратегия повторного ранжирования применяется, когда значимость каждого векторного поля различается, позволяя вам выделять одни векторные поля относительно других, назначая им более высокие веса. Например, в мультимодальном поиске текстовое описание может считаться более важным, чем распределение цветов на изображениях.
Базовый процесс WeightedRanker выглядит следующим образом:
Сбор оценок во время извлечения: Соберите результаты и их оценки из разных маршрутов векторного извлечения.
Нормализация оценок: Нормализуйте оценки из каждого маршрута к диапазону [0,1], где значения, более близкие к 1, указывают на более высокую релевантность. Эта нормализация крайне важна, поскольку распределения оценок различаются в зависимости от разных типов метрик. Например, расстояние для IP находится в диапазоне [-∞,+∞], тогда как расстояние для L2 находится в диапазоне [0,+∞]. Milvus использует функцию arctan, преобразуя значения в диапазон [0,1], чтобы предоставить стандартизированную основу для разных типов метрик.
Распределение весов: Назначьте вес
w𝑖каждому маршруту векторного извлечения. Пользователи указывают веса, которые отражают надежность источника данных, точность или другие соответствующие метрики. Каждый вес находится в диапазоне [0,1].Слияние оценок: Рассчитайте взвешенное среднее нормализованных оценок, чтобы получить итоговую оценку. Затем результаты ранжируются на основе этих оценок от наивысшей к наименьшей для формирования окончательно отсортированных результатов.
weightedranker fomula
Сравнение гибридного поиска и поиска по одному вектору на примере
В этом разделе мы сравним результаты поиска изображений с использованием поиска по одному вектору и гибридного поиска соответственно, демонстрируя, как гибридный поиск может улучшить качество результатов поиска. Более подробную информацию см. в полных фрагментах кода в этом ноутбуке.
Набор данных
Мы загрузили изображения, содержащие светофоры, из общедоступных источников в качестве нашего набора данных.
the dataset
Изображение запроса
В этой демонстрации изображение ниже является изображением запроса, которое мы хотим найти в наборе данных.
query image
Извлечение признаков с помощью ResNet и CLIP
Перед выполнением извлечения признаков и вставкой изображений в Milvus мы должны создать коллекцию с несколькими векторными столбцами. В приведенном ниже фрагменте кода мы создали два векторных столбца для хранения векторов признаков изображений, извлеченных с помощью разных моделей эмбеддингов.
Create a collection with multiple vector columns
Для этой демонстрации мы используем ResNet и CLIP в качестве моделей эмбеддингов.
- ResNet (Residual Network): Популярная модель для распознавания и классификации изображений.
resnet.png
- CLIP (Contrastive Language–Image Pre-training): Бимодальная модель эмбеддингов для текста и изображений, которая устраняет разрыв между визуальными и текстовыми данными. Мы используем ее для извлечения признаков из подписей для поиска изображений.
clip
Результаты поиска по одному вектору с векторами ResNet
Если набор данных содержит изображение, идентичное запросу в поиске изображений, одноколоночный поиск по плотным векторам может быстро вернуть правильный результат. Однако в реальных случаях изображения-запросы часто отличаются от изображений в наборе данных из-за различных ракурсов или фонового окружения, что влияет на результаты векторного поиска. В этом примере мы используем конкретные признаки изображения-запроса, в частности сосредотачиваясь на светофоре, чтобы выполнить поиск изображений.
конкретные признаки изображения-запроса — светофор
Как видно из результатов ниже, все возвращенные изображения в основном выделяют объект светофора. Однако само изображение-запрос (No.3) не ранжируется как наиболее похожее. Если мы ограничим результаты поиска только двумя верхними изображениями, изображение-запрос вообще не появится в результатах.
результаты поиска — resnet.png
Результаты одновекторного поиска с векторами CLIP
Далее рассмотрим еще один одновекторный поиск. Благодаря способности CLIP к мультимодальному пониманию мы можем искать изображения с использованием текстового ввода. Здесь поисковый запрос — "images with buildings in the background."
результаты поиска — clip
Результаты показывают, что возвращенные изображения фокусируются на фоновом элементе зданий. Однако изображение-запрос по-прежнему не является самым подходящим совпадением.
Результаты гибридного поиска
Результаты предыдущих двух одноканальных векторных поисков были неидеальными, поэтому мы выполнили гибридный поиск по нескольким векторным колонкам. В этом гибридном поиске результаты из двух маршрутов AnnSearchRequest объединяются с использованием метода взвешенного среднего. Веса для колонок ResNet и CLIP были установлены на 0,7 и 0,8 соответственно.
результаты гибридного поиска
Как видно из результатов выше, на этот раз изображение-запрос было возвращено как наиболее похожее изображение (Top 1).
Этот пример иллюстрирует, как гибридный поиск эффективно интегрирует мультимодальные входные данные из изображений и текста. По сравнению с одновекторными поисками гибридный поиск демонстрирует значительное улучшение итоговых результатов.
Подведение итогов
Hybrid Search — это ключевая функция в Milvus, которая расширяет возможности поиска данных, обеспечивая одновременные запросы по нескольким векторным полям. Эта функция сочетает гибридный разреженный и плотный поиск, мультимодальный поиск, а также гибридный плотный и полнотекстовый поиск; все эти результаты поиска интегрируются и повторно ранжируются с использованием эффективных стратегий повторного ранжирования для получения более точного и релевантного итогового результата.
В дальнейшем мы сосредоточимся на расширении Hybrid Search в различные области. Например, его можно расширить, чтобы использовать повторное ранжирование на основе времени для таких сценариев, как рекомендации популярных социальных тем для Twitter или TikTok. Мы также планируем внедрить более надежные алгоритмы слияния и модели повторного ранжирования, чтобы обеспечить более совершенный поисковый опыт.
Потенциал гибридного поиска выходит за рамки того, что рассмотрено здесь. Следите за нашими обновлениями.
Читать далее

Announcing the General Availability of Single Sign-On (SSO) on Zilliz Cloud
SSO is GA on Zilliz Cloud, delivering the enterprise-grade identity management capabilities your teams need to deploy vectorDB with confidence.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

Proactive Monitoring for Vector Database: Zilliz Cloud Integrates with Datadog
we're excited to announce Zilliz Cloud's integration with Datadog, enabling comprehensive monitoring and observability for your vectorDB deployments.



