Сравнение глубины векторных баз данных: Weaviate, Milvus и Qdrant

堆友AI

В области искусственного интеллекта и машинного обучения, особенно при создании таких приложений, как системы RAG (Retrieval Augmented Generation) и семантический поиск, эффективная обработка и извлечение огромных объемов неструктурированных данных приобретает решающее значение. Векторные базы данных стали основной технологией для решения этой задачи. Это не только специализированные базы данных для хранения высокоразмерных векторных данных, но и ключевая инфраструктура для создания следующего поколения приложений искусственного интеллекта.

В этой статье мы рассмотрим концепции, принципы и сценарии применения векторных баз данных, а также сравним и проанализируем современные векторные базы данных с открытым исходным кодом Weaviate, Milvus и Qdrant, с целью предоставить читателям полное и глубокое руководство по векторным базам данных, которое поможет вам понять ценность векторных баз данных и сделать обоснованный технический выбор в реальных проектах.

 

Что такое векторная база данных? От традиционных баз данных к векторному поиску

Для того чтобы понять, что делает векторные базы данных уникальными, сначала нужно разобраться, что такое векторы и почему традиционные базы данных оказываются не в состоянии справиться с векторными данными.

Векторы: математическое представление данных

Говоря простым языком, вектор - это математический инструмент, используемый для представления характеристики или атрибута данных, который можно рассматривать как точку в многомерном пространстве. В контексте векторных баз данных мы обычно обсуждаемвектор высокой размерностичто означает, что эти векторы имеют большое количество измерений, от десятков до тысяч, в зависимости от сложности данных и требуемой детализации представления.

Векторное встраивание: структурированное представление неструктурированных данных

Как же создаются эти высокоразмерные векторы? Ответ - с помощьювстроенная функцияпреобразование исходных неструктурированных данных (например, текста, изображений, аудио, видео и т.д.) в векторы. Этот процесс преобразования называетсяВекторное встраиваниеИспользуя такие методы, как модели машинного обучения, методы встраивания слов или алгоритмы извлечения признаков, можно сжать семантическую информацию или признаки данных в компактное векторное пространство.

Например, для работы с текстовыми данными можно использовать такие инструменты, как Word2Vec, GloVe, FastText или Трансформатор Модели (например, BERT, Sentence-BERT) и другие методы преобразуют каждое слово, предложение или даже весь текст в вектор. В векторном пространстве семантически схожих текстов их векторы будут располагаться ближе друг к другу.

向量数据库深度对比:Weaviate、Milvus 与 Qdrant

 

Основная сила векторных баз данных: поиск по сходству

Традиционные базы данных, такие как реляционные (например, PostgreSQL, MySQL) и NoSQL (например, MongoDB, Redis), предназначены в первую очередь для хранения и запроса структурированных или полуструктурированных данных и отлично справляются с поиском данных на основе точных совпадений или заранее заданных критериев. Однако когда речь заходит о поиске данных на основесемантическое сходствовозможноКонтекстуальное значениеПоиск данных делает традиционные базы данных неэффективными.

Чтобы заполнить этот пробел, появились векторные базы данных. Их основная сила заключается в способностиЭффективный поиск и извлечение информации по сходству на основе векторного расстояния или сходства. Это означает, что мы можем находить данные на основе их семантического или функционального сходства, не прибегая к точному подбору ключевых слов.

Основные отличия векторных баз данных от традиционных баз данных

Чтобы лучше понять уникальность векторных баз данных, мы приводим следующие ключевые отличия между ними и традиционными базами данных:

характеристикавекторная база данныхТрадиционные базы данных (реляционные/NoSQL)
тип данныхВекторное встраивание (векторы высокой размерности)Структурированные данные (Табличные данные, документы JSON и т. д.)
основная деятельностьПоиск сходства (вычисление векторного сходства)Запрос точного совпадения, запрос диапазона, анализ агрегации и т. д.
Тип индексаВекторные индексы (индексы ANN и т.д.)Индексы B-дерева, хэш-индексы, инвертированные индексы и т. д.
Метод запросаНа основе векторных расстояний (косинусоидальное расстояние, евклидово расстояние и т.д.)Запросы на основе SQL, запросы по ключу и значению, полнотекстовый поиск и т.д.
сценарий примененияСемантический поиск, рекомендательные системы, рекомендательные системы RAGпоиск изображений/аудио/видеоОбработка транзакций, анализ данных, управление контентом, кэширование
модель данныхмодель векторного пространстваРеляционная модель, модель документов, модель ключ-значение, графовая модель и т.д.

Значение векторных баз данных: краеугольный камень для приложений искусственного интеллекта

Векторные базы данных играют все более важную роль в области искусственного интеллекта и машинного обучения, особенно в следующих областях:

  • Поисковые системы нового поколения: Внедрите семантический поиск, чтобы понимать намерения пользователя и возвращать более релевантные и контекстные результаты поиска, а не просто совпадение ключевых слов.
  • Интеллектуальные рекомендательные системы: Персонализированные рекомендации на основе исторического поведения пользователей и характеристик товаров для повышения точности рекомендаций и удобства использования.
  • Приложения для моделирования больших языков (LLM): Обеспечивает LLM долговременной памятью и эффективными возможностями контекстного поиска, что позволяет создавать более мощные чат-боты, системы вопросов и ответов и приложения для генерации контента.
  • Мультимодальный поиск данных: Обеспечение кросс-модального поиска по сходству, например, поиск связанных изображений или видео по текстовым описаниям.

Таким образом, векторные базы данных являются ключевой инфраструктурой для обработки и поиска неструктурированных данных в эпоху ИИ, они позволяют машинам понимать семантику и рассуждать о сходстве, что способствует появлению множества инновационных приложений ИИ.

 

Векторные базы данных и RAG: создание мощной системы генерации поисковых расширений

Системы RAG (Retrieval-Augmented Generation) являются популярным направлением в области моделирования больших языков. Основная идея RAG заключается в получении релевантной информации из внешней базы знаний до генерации текста, а затем использование полученной информации в качестве контекста, чтобы направлять языковую модель для генерации более точных и надежных ответов.

Центральная роль векторных баз данных в системе RAG

В системе RAG векторная база данных играет рольрепозиторийСистема RAG отвечает за хранение и эффективное извлечение векторных представлений массивных документов знаний:

  1. Создание базы знаний:
    • Векторное встраивание документов знаний (например, текста, веб-страниц, PDF-файлов и т.д.) в векторные представления.
    • Храните эти векторы и соответствующие им метаданные документов в базе данных векторов.
  2. Поиск запросов:
    • Получение запроса пользователя и векторное вложение запроса для получения вектора запроса.
    • Поиск по сходству выполняется в векторной базе данных с использованием вектора запроса, чтобы получить вектор документа, который наиболее похож на вектор запроса.
    • Получите исходный документ или фрагмент документа, соответствующий полученному вектору документов.
  3. Генерация текста:
    • Полученные фрагменты документов поступают в Большую языковую модель (LLM) в качестве контекста вместе с пользовательским запросом.
    • LLM генерирует окончательный ответ или текст на основе контекстной информации.
向量数据库深度对比:Weaviate、Milvus 与 Qdrant

Семантический поиск изображений с помощью Milvus

 

Почему векторные базы данных идеально подходят для систем RAG?

  • Эффективные возможности семантического поиска: Векторные базы данных способны извлекать документы на основе семантического сходства, что идеально подходит для систем RAG, которым необходимо находить контекстную информацию из базы знаний, соответствующую запросу пользователя.
  • Работа с массивными файлами знаний: Системы RAG обычно должны работать с большим количеством документов знаний, и векторные базы данных могут эффективно хранить и извлекать массивные векторные данные, чтобы удовлетворить требования к масштабируемости систем RAG.
  • Быстрое реагирование на запросы пользователей: Поиск по сходству в базе данных векторов происходит очень быстро, что обеспечивает быстрый отклик системы RAG на запросы пользователей.

Выбор векторной базы данных: ключевые решения для систем RAG

Выбор правильной векторной базы данных имеет решающее значение для производительности и эффективности системы RAG. Различные векторные базы данных отличаются по производительности, функциональности и простоте использования. В следующих главах мы обсудим факторы выбора векторных баз данных, а также сравним и проанализируем три отличные векторные базы данных с открытым исходным кодом, а именно Weaviate, Milvus и Qdrant, чтобы помочь вам выбрать наиболее подходящий краеугольный камень для вашей системы RAG.

 

Выбор векторной базы данных: ориентируйтесь не только на производительность, но и на эти ключевые факторы

Прежде чем приступить к сравнению конкретных продуктов, давайте определим основные факторы, влияющие на выбор векторной базы данных. Эти факторы будут напрямую влиять на производительность, масштабируемость, стабильность и стоимость создаваемой вами системы RAG или приложения искусственного интеллекта.

1. Открытый исходный код против коммерциализации: автономность против простоты использования

  • Векторные базы данных с открытым исходным кодом (например, Milvus, Weaviate, Qdrant, Vespa):
    • Преимущество: Более высокая автономность и гибкость для свободной кастомизации и вторичной разработки, лучший контроль над безопасностью данных и архитектурой системы. Поддержка активным сообществом разработчиков с открытым исходным кодом, быстрая итерация и оперативное решение проблем. Обычно низкая стоимость или даже бесплатное использование.
    • Вызов: Развертывание, эксплуатация и обслуживание, а также устранение неполадок требуют определенных технических навыков. Коммерческая поддержка может быть относительно слабой, что требует опоры на сообщество или самостоятельного решения проблем.
    • Применимые сценарии: Проекты, требующие высокой степени автономности и контроля, поддерживаемые технической командой, желающие сократить расходы и способные активно участвовать в совместном строительстве сообщества.
  • Коммерческие векторные базы данных (например, размещенные векторные базы данных от облачных провайдеров, таких как Pinecone и т.д.):
    • Преимущество: Как правило, предоставляются комплексные услуги по управлению и технической поддержке, упрощается развертывание и эксплуатационные расходы, а также обеспечивается простота запуска и использования. Производительность и стабильность коммерчески проверены, а качество услуг гарантировано.
    • Вызов: Более высокая стоимость, со временем могут возникнуть значительные расходы. Возможный риск привязки к поставщику, ограниченная кастомизация и вторичная разработка.
    • Применимые сценарии: Проекты, которые стремятся к простоте использования и стабильности, хотят быстро начать работу, снизить нагрузку по эксплуатации и техническому обслуживанию, имеют хороший бюджет и не чувствительны к рискам блокировки поставщика.

2. поддержка CRUD: динамические данные против статических данных

  • Поддержка CRUD (Create, Read, Update, Delete):
    • Важность: Критически важна для систем RAG и многих приложений с динамическими данными. Если данные необходимо часто обновлять, удалять или изменять, важно выбрать векторную базу данных, которая поддерживает все операции CRUD.
    • Воздействие: База данных, поддерживающая операции CRUD, позволяет легко управлять динамически изменяющимися данными и поддерживать базу знаний в режиме реального времени и точности.
  • Сценарии статических данных:
    • Спрос: Если данные статичны, как, например, в заранее созданной базе знаний, и обновляются очень редко, может подойти векторная библиотека, доступная только для чтения, или база данных, не поддерживающая полный CRUD.
    • Выберите: В этом случае можно рассмотреть некоторые легкие векторные библиотеки или некоторые векторные базы данных, ориентированные на высокопроизводительный поиск при слабой функции обновления данных.

3. распределенная архитектура и масштабируемость: работа с большими объемами данных и высокий параллелизм

  • Распределенная архитектура:
    • Необходимость: Системы RAG и многие приложения искусственного интеллекта, как правило, должны обрабатывать огромные объемы данных и высокопоточные запросы. Ключевую роль в решении этих задач играют распределенные архитектуры.
    • Преимущество: Распределенные векторные базы данных могут хранить данные, распределенные по нескольким серверам, и поддерживать параллельные запросы, что повышает производительность обработки данных и производительность запросов.
  • Масштабируемость:
    • Горизонтальное расширение: Хорошая векторная база данных должна легко масштабироваться по горизонтали, добавляя узлы, чтобы справиться с ростом объема данных и запросов.
    • Эластичная растяжка: Желательно поддерживать эластичное масштабирование, чтобы динамически регулировать ресурсы в зависимости от фактической нагрузки для оптимизации стоимости и производительности.

4. репликация данных и высокая доступность: обеспечение безопасности данных и стабильности сервисов

  • Копия данных:
    • Роль: Механизм копирования данных является важным средством обеспечения безопасности данных и высокой доступности системы.
    • Реализация: Благодаря хранению идентичных копий данных на нескольких серверах система продолжает нормально работать без потери данных, даже если некоторые из узлов выходят из строя.
  • Высокая доступность:
    • Важность: Высокая доступность критически важна для систем RAG и онлайн-приложений, требующих высокой стабильности обслуживания.
    • Гарантии: Такие механизмы, как копирование данных, автоматическая передача ошибок, мониторинг и сигнализация, обеспечивают непрерывную и стабильную работу системы.

5. производительность: скорость и точность поиска

  • Задержка:
    • Индикаторы: Задержка запроса, т.е. время между инициированием запроса и получением результатов.
    • Влияющие факторы: алгоритмы индексирования, аппаратные ресурсы, объем данных, сложность запросов и т.д.
    • Спрос: Для приложений с высокими требованиями к реальному времени необходимо выбирать векторную базу данных с высокой скоростью поиска.
  • Recall, Precision:
    • Индикаторы: Recall и Precision, которые измеряют точность результатов поиска по сходству.
    • Взвешивание: Обычно существует компромисс между скоростью поиска и точностью, и правильный баланс должен быть выбран в зависимости от сценария применения. Например, для системы RAG более важным может быть запоминание, чтобы обеспечить получение как можно большего количества релевантных документов.

6. постоянное обслуживание и поддержка сообщества: гарантия долгосрочной стабильной работы

  • Текущее обслуживание:
    • Важность: Технология векторных баз данных быстро развивается, поэтому постоянное обслуживание и обновления очень важны.
    • Опасения: Постоянно ли база данных поддерживается и обновляется активной командой разработчиков, своевременно исправляющей ошибки и следящей за последними технологическими тенденциями.
  • Поддержка сообщества:
    • Ценность: Активное сообщество предоставляет богатую документацию, учебные пособия, примеры кода и ответы на вопросы, что снижает барьеры для обучения и использования.
    • Оценка: Поддержка сообщества может быть оценена с помощью таких показателей, как активность в репозиториях GitHub, активность на форумах сообщества, количество пользователей и т. д.

7. соображения стоимости: открытый исходный код против коммерциализации, самостоятельная сборка против хостинга

  • Стоимость открытого исходного кода и коммерциализации:
    • Открытый источник: Само программное обеспечение для работы с базами данных бесплатно, но необходимо учитывать стоимость оборудования, расходы на эксплуатацию и обслуживание, трудозатраты и т. д.
    • Коммерциализация: Приходится платить за лицензию на программное обеспечение или облачные услуги, но потенциально можно снизить расходы на эксплуатацию и улучшить техническую поддержку.
  • Самостоятельная постройка против затрат на хостинг:
    • Самостоятельная постройка: Вам придется отвечать за закупку оборудования, его развертывание, эксплуатацию и обслуживание, мониторинг и т. д. Первоначальные инвестиции и долгосрочные расходы на эксплуатацию и обслуживание высоки.
    • Хостинг: Использование услуг облачных поставщиков векторных баз данных не требует заботы о базовой инфраструктуре, оплачивается по факту и имеет более гибкую структуру затрат, но в долгосрочной перспективе может оказаться более дорогим.

Синтез:

При выборе векторной базы данных необходимо учитывать семь вышеперечисленных ключевых факторов и делать компромиссы и выбор в зависимости от конкретных сценариев применения, потребностей и бюджета. Не существует абсолютно оптимальной базы данных, есть только наиболее подходящая база данных для конкретного сценария.

 

Сравнение различных типов решений для векторных баз данных: панорама выбора технологии

Столкнувшись с множеством представленных на рынке решений для работы с векторными базами данных, понимание их типов и особенностей поможет вам сузить круг выбора и быстрее найти подходящее решение. В целом мы классифицируем решения для векторных баз данных по следующим пяти категориям:

1. векторные библиотеки (FAISS, HNSWLib, ANNOY): облегченные индексы, средства статического ускорения данных

Векторные библиотеки, такие как FAISS (Facebook AI Similarity Search), HNSWLib (Hierarchical Navigable Small World Graphs Library) и ANNOY (Approximate Nearest Neighbors Oh Yeah), которые по сути являютсяПрограммные библиотеки для построения векторных индексов и выполнения поиска по сходству. Обычно они работают как библиотеки, встроенные в приложение, а не как отдельные службы баз данных.

доминирование::

  • Высокая производительность: Сосредоточен на алгоритмах векторного индексирования и поиска по сходству, оптимизированных для чрезвычайно быстрого поиска.
  • Легкий вес: Не занимает много ресурсов, прост в развертывании и легко интегрируется в существующие приложения.
  • Зрелый и стабильный: После длительного развития и широкого применения технология стала зрелой и надежной, а также получила хорошую поддержку сообщества.

ограничения::

  • Преобладают статические данные: В основном они используются для хранения статических данных, и обновить их после создания индекса не так-то просто. За исключением HNSWLib, большинство векторных библиотек не поддерживают операции CRUD, что затрудняет обновление и удаление данных.
  • Ограниченная функциональность: Обычно предоставляются только базовый векторный индекс и функция поиска по сходству, отсутствуют функции распределения, копирования данных, управления правами, мониторинга операций и обслуживания и другие расширенные возможности базы данных.
  • Высокие эксплуатационные расходы: Вам необходимо создавать собственную экосистему развертывания, заниматься репликацией данных и обеспечением отказоустойчивости, а также не хватает комплексных инструментов эксплуатации и интерфейсов управления.

Применимые сценарии::

  • Поиск сходства для статических наборов данных: Например, сценарии, в которых данные обновляются нечасто, такие как автономные базы знаний, базы товаров, базы лиц и так далее.
  • Сценарии с очень высокими требованиями к производительности, но низкой частотой обновления данных: В качестве примеров можно привести построение офлайн-индексов для поисковых систем и офлайн-индексацию характеристик для крупномасштабных рекомендательных систем.
  • как компонент ускорения векторного индекса для других баз данных: Например, использование векторных библиотек в сочетании с базами данных, такими как Redis, MySQL и т. д., ускоряет поиск сходства.

Представленные продукты:

  • FAISS (Facebook AI Similarity Search): Разработан Facebook AI Research, широко используется в научных кругах и промышленности. Предоставляет множество эффективных алгоритмов индексирования, таких как IVF, PQ, HNSW и т. д., и особенно хорошо справляется с большими массивами данных.
  • HNSWLib (Hierarchical Navigable Small World Graphs Library): Основана на алгоритме HNSW (Hierarchical Navigable Small World), известном своей высокой производительностью и эффективностью. HNSWLib по сравнению с другими векторными библиотеками более гибкая, поддерживает CRUD-операции и одновременное чтение и запись.
  • ANNOY (Approximate Nearest Neighbors Oh Yeah): Разработан Spotify для быстрого приблизительного поиска ближайших соседей. Известный своим чистым и эффективным дизайном, он подходит для сценариев приложений, чувствительных к задержкам.

2. базы данных полнотекстового поиска (ElasticSearch, OpenSearch): дополнение к векторному поиску, неосновная возможность

Базы данных полнотекстового поиска, такие как ElasticSearch и OpenSearch, в первую очередь предназначены дляПолнотекстовый поиск и поиск по ключевым словамОни основаны на технологии инвертированного индексирования и являются мощным инструментом для поиска текстов и расширенного анализа. В последние годы они также начали добавлять возможности векторного поиска, но векторный поиск не является их основной сильной стороной.

доминирование::

  • Мощные возможности полнотекстового поиска: Поддержка сложных текстовых запросов, разделение слов, синонимы, исправление орфографии, сортировка по релевантности (например. BM25) и другие функции.
  • Богатая аналитика: Обеспечивает агрегирование, статистику, отчетность и визуализацию данных для анализа данных и понимания бизнеса.
  • Зрелые экосистемы: Имея большую базу пользователей и устоявшуюся экосистему, он прост в интеграции и использовании, с обилием периферийных инструментов и плагинов.

ограничения::

  • Векторный поиск работает слабо: По сравнению со специализированными векторными базами данных, производительность поиска по векторному сходству невысока, особенно в высокоразмерных данных и больших массивах данных, где задержка запроса высока, а точность может быть недостаточной.
  • Высокое потребление ресурсов: Для поддержки таких функций, как полнотекстовый поиск и анализ, требуется большое количество ресурсов, а также высокая стоимость развертывания, эксплуатации и обслуживания.
  • Плохо справляется с семантическим поиском: В основном он опирается на сопоставление ключевых слов и инвертированное индексирование, при этом семантическое восприятие ограничено, что затрудняет удовлетворение сложных потребностей в семантическом поиске.

Применимые сценарии::

  • Поиск по ключевым словам - основное применение, дополненное векторным поиском: Например, поиск товаров на сайтах электронной коммерции и поиск статей на новостных сайтах в основном использует поиск по ключевым словам, а векторный поиск используется как вспомогательная функция для повышения семантической релевантности поиска.
  • Гибридные сценарии поиска, требующие сочетания полнотекстового и векторного поиска: Например, интеллектуальная система обслуживания клиентов, поддерживающая как поиск по ключевым словам, так и семантический поиск, удовлетворяет разнообразные запросы пользователей.
  • Анализ журналов, мониторинг тревог и другие сценарии, требующие мощных функций анализа: Используйте мощные аналитические возможности базы данных полнотекстового поиска для анализа журналов, мониторинга и оповещения, аудита безопасности и т. д.

представительный продукт::

  • ElasticSearch: Построен на основе Lucene, является одной из самых популярных полнотекстовых поисковых систем с открытым исходным кодом, широко используется в поиске, анализе журналов, визуализации данных и других областях.
  • OpenSearch: Бранч от AWS на основе ElasticSearch и Kibana, он поддерживает совместимость с ElasticSearch и добавляет новые функции и улучшения в ElasticSearch.

Заключение: Хотя ElasticSearch и OpenSearch предоставляют возможности векторного поиска, их производительность и функциональность все еще не дотягивают до специализированных векторных баз данных. Для систем RAG или приложений искусственного интеллекта, ориентированных на векторный поиск, лучше использовать специализированные векторные базы данных. Базы данных полнотекстового поиска больше подходят в качестве дополнения к векторному поиску, чем в качестве альтернативы.

3. SQL-базы данных с поддержкой векторов (pgvector, Supabase, StarRocks): векторные расширения традиционных баз данных для легких приложений.

SQL-базы данных, такие как PostgreSQL, поддерживают векторные типы данных и возможности поиска по сходству с помощью расширений (например, pgvector). Это позволяет пользователям хранить и запрашивать векторные данные в существующих реляционных базах данных без необходимости внедрения новой системы баз данных.

доминирование::

  • Простая интеграция: Бесшовная интеграция с существующими базами данных SQL снижает сложность технологического стека и сокращает расходы на обучение и миграцию.
  • Зрелый и стабильный: Технология баз данных SQL является зрелой и стабильной, с мощными возможностями управления данными и обработки транзакций, а также гарантированной согласованностью и надежностью данных.
  • Низкая стоимость обучения: Для разработчиков, знакомых с SQL, затраты на обучение невелики, и вы сможете быстро приступить к работе с функциями векторного поиска.

ограничения::

  • Производительность векторного поиска ограничена: Реляционные базы данных, архитектура которых не рассчитана на векторный поиск, работают не так хорошо, как специализированные векторные базы данных, особенно при работе с крупномасштабными, высокоразмерными векторными данными, где задержка запросов очень велика.
  • Масштабируемость ограничена: Реляционные базы данных обладают относительно слабой масштабируемостью, что затрудняет работу с массивными векторными данными и высокопоточными запросами, а также ограниченной горизонтальной масштабируемостью.
  • Ограничения на размерность вектора: Например, верхний предел размерности вектора, поддерживаемый pgvector, составляет 2000 измерений, что ниже, чем у специализированных векторных баз данных, и может не удовлетворить потребности в высокоразмерных векторных данных.

Применимые сценарии::

  • Приложения с небольшими объемами векторных данных (менее 100 000): Например, небольшие рекомендательные системы, простой поиск по изображениям, базы персональных знаний и т.д. имеют небольшие объемы векторных данных и невысокие требования к производительности.
  • Применение векторных данных в качестве вспомогательной функции: Например, при добавлении векторного поля продукта в базу данных продуктов на сайте электронной коммерции для рекомендации продукта или аналогичного поиска продукта, векторный поиск является лишь вспомогательной функцией базы данных.
  • Приложения, которые уже имеют развитые базы данных SQL и хотят быстро добавить возможности векторного поиска: В проектах, которые уже используют SQL-базы данных, такие как PostgreSQL, и хотят быстро внедрить функциональность векторного поиска, рассмотрите возможность использования таких расширений, как pgvector.

представительный продукт::

  • pgvector: Расширение для PostgreSQL, разработанное компанией Crunchy Data, предоставляющее векторные типы данных (vector) и индексы (IVF, HNSW), а также возможности поиска векторного сходства.
  • Supabase: Платформа PaaS с открытым исходным кодом на базе PostgreSQL, интегрированная pgvector, позволяет пользователям быстро создавать приложения, поддерживающие векторный поиск.
  • StarRocks: OLAP-ориентированная база данных MPP, которая также добавляет функциональность векторного поиска, но векторный поиск не является ее основной нишей и в основном используется в сценариях OLAP-анализа.

Заключение: SQL-базы данных с поддержкой векторов, такие как pgvector, больше подходят для легких сценариев работы приложений, где объем векторных данных невелик, требования к производительности невысоки, а векторные данные используются только как дополнительная функция приложения. Если векторные данные составляют основу приложения или если существует высокая потребность в масштабируемости, лучше выбрать специализированную векторную базу данных.

4. NoSQL-базы данных с поддержкой векторов (Redis, MongoDB): зарождающееся направление, имеющее как потенциал, так и проблемы.

Базы данных NoSQL, такие как Redis и MongoDB, также начинают экспериментировать с добавлением поддержки векторов, например, Redis Vector Similarity Search (VSS) и MongoDB Atlas Vector Search, что дает базам данных NoSQL возможность работать и с векторными данными.

доминирование::

  • Неотъемлемые преимущества баз данных NoSQL: Например, Redis - за высокопроизводительное кэширование, низкую задержку и высокую пропускную способность, а MongoDB - за гибкую модель документов, легкость масштабирования и широкие возможности работы с документами.
  • Техническая новинка: Она представляет собой тенденцию развития технологии баз данных, включающую возможность векторного поиска в зрелые базы данных NoSQL и обладающую определенным инновационным и развивающим потенциалом.

ограничения::

  • Функциональные возможности еще не отработаны: Функциональность поддержки векторов находится на ранней стадии, ее возможности и производительность еще предстоит доработать и проверить, а экосистема относительно незрелая.
  • Бедные экосистемы: Существует относительная нехватка соответствующих инструментов, библиотек и экосистем, которые могут быть дорогостоящими в использовании и обслуживании, а поддержка сообщества относительно слаба.
  • Производительность должна быть учтена: Хотя Redis VSS заявляет о превосходной производительности, реальные результаты необходимо проверить в большем количестве сценариев, и, возможно, при работе с высокоразмерными данными и крупными массивами данных она не будет работать так же хорошо, как специализированные векторные базы данных.

Применимые сценарии::

  • Сценарии с высокими требованиями к производительности и небольшими объемами векторных данных: Например, рекомендательные системы на базе Redis, работающие в режиме реального времени, поиск объявлений в Интернете и т. д. требуют векторного поиска с низкой задержкой и высокой пропускной способностью.
  • Сценарии, в которых вы хотите попробовать новые технологии и готовы пойти на определенный риск: Для дегустаторов технологий попробуйте использовать функции векторной поддержки баз данных NoSQL, чтобы изучить их потенциал.
  • Вы уже используете базу данных NoSQL и хотите добавить к ней возможности векторного поиска: В проектах, которые уже используют Redis или MongoDB и хотят быстро внедрить функциональность векторного поиска поверх них, рассмотрите возможность использования модуля расширения vector.

представительный продукт::

  • Векторный поиск сходства (VSS) в Redis: Модуль для Redis, обеспечивающий векторное индексирование (HNSW) и поиск по сходству с акцентом на высокую производительность и низкую задержку для сценариев, требующих работы в режиме реального времени.
  • MongoDB Atlas Vector Search: Новая функция в Atlas, облачном сервисе MongoDB, предназначена для интеграции векторного поиска в базу данных документов MongoDB, обеспечивая более широкие возможности обработки данных.

Заключение: Недавно добавленные функции поддержки векторов в базах данных NoSQL все еще находятся на ранних стадиях разработки, и их зрелость и стабильность нуждаются в дальнейшей проверке. Хотя у них есть определенный потенциал, они все еще могут быть менее зрелыми и мощными, чем специализированные векторные базы данных с точки зрения функциональности и производительности. Необходимо тщательно оценить выбор и в полной мере учесть их ограничения.

5. специализированные векторные базы данных (Pinecone, Milvus, Weaviate, Qdrant, Vespa, Vald, Chroma, Vearch): созданы для векторов, первый выбор для систем RAG и приложений искусственного интеллекта

Специальные векторные базы данных, такие как Pinecone, Milvus, Weaviate, Qdrant, Vespa, Vald, Chroma, Vearch и т. д., разработаны с нуля, чтобы сосредоточиться наХранение, индексирование и поиск векторных данныхОни изначально хорошо приспособлены для работы с высокоразмерными векторными данными. Они являются предпочтительным решением для создания приложений ИИ, таких как системы RAG, семантический поиск, рекомендательные системы и другие.

доминирование::

  • Отличная производительность векторного поиска: Он глубоко оптимизирован для поиска векторного сходства, обладает высокой скоростью поиска и высокой точностью и может эффективно работать с крупномасштабными высокоразмерными векторными данными.
  • Мощная масштабируемость: Обычно используется распределенная архитектура, легко масштабируемая по горизонтали, способная справиться с массивами данных и запросами с высокой степенью параллелизма, чтобы удовлетворить потребности крупномасштабных приложений.
  • Богатые функциональные возможности: Как правило, он обеспечивает идеальное управление векторными данными, построение индексов, оптимизацию запросов, мониторинг и функции эксплуатации и обслуживания, а также богатые алгоритмы поиска по сходству и метрики расстояния.
  • Гибкие возможности индексации: Поддерживает несколько алгоритмов векторного индексирования (например, IVF, HNSW, PQ, древовидное индексирование и т. д.), что позволяет выбрать оптимальную стратегию индексирования в соответствии с различными сценариями применения и характеристиками данных.
  • Зрелая экосистема (некоторые продукты): Некоторые из продуктов имеют активные сообщества и устоявшиеся экосистемы, предоставляющие богатую документацию, инструменты и интеграционные решения, которые легко использовать и интегрировать.

ограничения::

  • Более высокая стоимость обучения: По сравнению с традиционными базами данных, специализированные векторные базы данных могут иметь более сложную кривую обучения и требуют понимания концепций, связанных с векторным индексированием, поиском сходства и так далее.
  • Выбор технологии - дело сложное: Существует множество продуктов с различными функциями и характеристиками, и выбор требует тщательной оценки, чтобы сравнить преимущества и недостатки различных продуктов.
  • Частичная коммерциализация продукции: Некоторые из лучших специализированных векторных баз данных являются коммерческими продуктами (например, Pinecone), которые более дороги в использовании и могут быть подвержены риску "замыкания" на поставщике.

Применимые сценарии::

  • Приложения, сосредоточенные на векторном поиске: Например, системы RAG, семантический поиск, поиск изображений, поиск аудио, поиск видео, рекомендательные системы, анализ биоинформатики и т.д., векторный поиск является основной функцией приложения.
  • Приложения, которым необходимо работать с огромными объемами высокоразмерных векторных данных: Например, крупномасштабные графы знаний, массивные библиотеки продуктов и анализ данных о поведении пользователей требуют обработки больших объемов высокоразмерных векторных данных.
  • Приложения с высокими требованиями к производительности и точности поиска: Например, контроль финансовых рисков, мониторинг безопасности и точные рекомендации предъявляют жесткие требования к скорости и точности поиска.
  • Приложения, требующие гибкой масштабируемости и высокой доступности: Например, крупномасштабные онлайн-сервисы и облачные платформы должны поддерживать горизонтальное масштабирование и высокую доступность, чтобы гарантировать стабильность и надежность сервисов.

представительный продукт::

  • Сосновая косточка: Коммерчески доступная облачная векторная база данных, поддерживаемая командой профессионалов, предоставляет простые в использовании и высокомасштабируемые услуги по поиску векторов. Известная своей простотой использования и высокой производительностью, она является представителем облачных векторных баз данных. Однако есть ограничения, связанные с открытым исходным кодом и возможностью настройки, а бесплатная версия имеет ограниченную функциональность.
  • Милвус: Распределенная векторная база данных с открытым исходным кодом, возглавляемая компанией Zilliz, мощная производительность, многофункциональность, активное сообщество, является эталоном векторной базы данных с открытым исходным кодом. Поддерживает различные типы индексов, метрики расстояния и методы запросов, может быть гибкой для решения различных сценариев применения.
  • Мывиат: Графовая векторная база данных с открытым исходным кодом, разработанная немецкой компанией SeMI Technologies, сочетает векторный поиск с технологией графовых баз данных для обеспечения уникальных возможностей моделирования данных и запросов. Поддерживается язык запросов GraphQL, облегчающий выполнение сложных запросов и анализ данных.
  • Кдрант: Векторная база данных с открытым исходным кодом, разработанная российской командой, написанная на языке Rust, ориентированная на производительность и простоту использования, легкая архитектура, низкое потребление ресурсов. Популярна благодаря своей высокой производительности, низкой задержке и простоте развертывания.
  • Vespa: Разработанная Yahoo поисковая система с открытым исходным кодом и векторной базой данных, мощная, отлично работает, но архитектура более сложная, крутая кривая обучения. Подходит для сценариев с очень высокими требованиями к производительности и функциональности.
  • Валд: Распределенная база данных векторов с открытым исходным кодом, разработанная японской командой, ориентированная на высокоточный и надежный поиск векторов. Акцент на высокой точности и низкой задержке, подходит для сцен с очень высокими требованиями к точности. Однако есть недостатки в интеграции с Langchain, а размер сообщества невелик.
  • Веарч: Распределенная база данных векторов с открытым исходным кодом, разработанная китайской командой, обеспечивает высокопроизводительные и высокодоступные сервисы векторного поиска. Ориентирована на простоту использования и масштабируемость, подходит для проектов, которым необходимо быстро создавать векторно-поисковые приложения. Имеются недостатки в интеграции с Langchain, а сообщество невелико.
  • Хрома: Chroma - это встраиваемая векторная база данных с открытым исходным кодом, ориентированная на легкость и простоту использования, использующая SQLite в качестве хранилища документов. Подходящая для локальной разработки, создания прототипов или небольших приложений, с относительно ограниченной масштабируемостью и эффективностью, Chroma разработана специально для работы с аудиоданными, но не оптимизирована для работы с текстовыми данными, и существует недостаток всеобъемлющей информации о бенчмарках производительности.

Заключение: Для систем RAG и большинства приложений искусственного интеллекта лучше всего подходят специализированные векторные базы данных. Они лучше с точки зрения производительности, функциональности и масштабируемости, что позволяет лучше удовлетворять потребности этих приложений. Среди множества специализированных векторных баз данных Weaviate, Milvus, Qdrant и Vespa являются одними из самых популярных и широко используемых сегодня.

Чтобы нагляднее сравнить три отличные векторные базы данных с открытым исходным кодом - Weaviate, Milvus и Qdrant, - мы привели таблицу ниже:

всеобъемлющая база данныхQdrantWeaviateМилвус
Открытый исходный код и самостоятельное размещениебытьбытьбыть
протокол с открытым исходным кодомApache-2.0BSDApache-2.0
язык развитияРжавчинаПерейти на сайтGo, C++
Звезды Github (по состоянию на 2024 год)17k+9.2k+26.2k+
Дата первого релиза202120192019
SDKPython, JS, Go, Java, .Net, RustPython, JS, Java, GoPython, Java, JS, Go
Размещенные облачные услугибытьбытьбыть
Встроенные текстовые вставкиFastEmbedбытьбыть
Гибридный поискбытьRRF*+RSF*Мультивекторное смешивание на столе
Фильтрация метаинформациибытьбытьбыть
Поддержка BM25бытьбытьбыть
Текстовый поискбытьбытьбыть
одноточечный мультивектор (математика)бытьбытьбыть
Тензорный поискбытьбытьбыть
Интеграция Langchainбытьбытьбыть
Интеграция индекса ламыбытьбытьбыть
Географический информационный поискбытьбытьбыть
Многопользовательская поддержкачерез коллекции/метаданныебытьбыть
向量数据库深度对比:Weaviate、Milvus 与 Qdrant

 

Резюме:

  • Кдрант: Легкая архитектура, низкие затраты ресурсов, отличная производительность, простота развертывания и использования, разработка на языке Rust, фокус на производительности и эффективности.
  • Мывиат: Широкие возможности, интеграция векторного поиска, хранения объектов и инвертированного индекса, поддержка запросов GraphQL, возможности моделирования данных, развитие языка Go, активное сообщество.
  • Милвус: Высокая производительность, богатая функциональность, активное сообщество, поддержка различных типов индексов и методов запросов, возможность гибко решать различные сложные сценарии, разработка на языках Go и C++, экологическое совершенство.

Вы можете выбрать векторную базу данных, которая наилучшим образом соответствует вашим потребностям, предпочтениям в технологическом стеке и возможностям команды.

 

Методы поиска в векторных базах данных: раскрытие многих возможностей векторного поиска

Основной функцией векторных баз данных является поиск сходства, и различные векторные базы данных предоставляют разнообразные методы поиска для удовлетворения различных требований приложений. Понимание этих методов поиска поможет вам более эффективно использовать векторные базы данных для создания более мощных приложений искусственного интеллекта.

向量数据库深度对比:Weaviate、Milvus 与 Qdrant

6. сравнение методов поиска в векторных базах данных

Мы остановимся на основных методах поиска в трех базах данных - Milvus, Weaviate и Qdrant:

6.1 Milvus: гибкие и разнообразные стратегии поиска для различных сценариев

Milvus предоставляет богатую и гибкую стратегию поиска, вы можете выбрать подходящий метод поиска в соответствии с различными структурами данных и требованиями к запросам.

  • Одновекторный поиск: Это самый простой способ поиска, использующий search() метод, который сравнивает вектор запроса с существующими векторами в коллекции, возвращая наиболее похожие идентификаторы сущностей и расстояния между ними. Вы можете выбрать значения векторов и метаданные возвращаемых результатов. Идеально подходит для простых сценариев поиска по сходству, например, для поиска наиболее похожего товара на определенный товар, для поиска наиболее похожего изображения на определенное изображение и т. д.
  • Многовекторный поиск: для коллекций, содержащих несколько векторных полей, по hybrid_search() метод. Метод одновременно выполняет несколько поисковых запросов приближенных соседей (ANN), объединяет и переставляет результаты, чтобы вернуть наиболее релевантные совпадения. Последняя версия 2.4.x Milvus поддерживает поиск с использованием до 10 векторов. Многовекторный поиск особенно подходит для сложных сценариев, где требуется высокая точность, например:
    • Одни и те же данные обрабатываются с помощью различных моделей встраивания: Например, одно и то же предложение может быть сгенерировано с различными векторными представлениями с помощью различных моделей, таких как BERT, Sentence-BERT, GPT-3 и т. д. Многовекторный поиск может объединить векторные представления этих различных моделей для повышения точности поиска.
    • Объединение мультимодальных данных: Например, информация из нескольких модальностей, такая как изображения, отпечатки пальцев и голосовые отпечатки людей, преобразуется в различные векторные форматы для всестороннего поиска. Многовекторный поиск может объединить векторную информацию этих различных модальностей для достижения более полного поиска сходства.
    • Увеличьте количество отзывов: Присваивая веса различным векторам и используя информацию из нескольких векторов в стратегии "множественного отзыва", можно значительно улучшить способность отзыва и эффективность результатов поиска, чтобы избежать пропуска релевантных результатов.
  • Основные поисковые операции: Помимо однонаправленного и многовекторного поиска, Milvus предоставляет богатый набор базовых поисковых операций, включая:
    • Пакетный векторный поиск: Одновременная подача нескольких векторов запросов повышает эффективность поиска и подходит для сценариев, требующих пакетной обработки запросов.
    • Поиск разделов: Поиск в указанном разделе, сужение области поиска и повышение скорости поиска, подходит для сценариев с большим объемом данных, вы можете хранить данные по разделам, чтобы повысить эффективность запроса.
    • Укажите выходные поля для поиска: Возвращает только указанные поля, сокращает объем передаваемых данных, повышает эффективность поиска и подходит для сценариев, в которых требуется только часть информации о полях.
  • Фильтр поиска: Фильтрация условий на основе скалярных полей для уточнения результатов поиска, например, фильтрация на основе таких условий, как цена продукта, возраст пользователя, категория продукта и т.д., с дальнейшей фильтрацией результатов на основе поиска по сходству для повышения точности поиска.
  • Поиск по диапазону: Найти векторы, расстояние между которыми и вектором запроса находится в определенном диапазоне, например, найти продукты, имеющие сходство с целевым продуктом 0,8 или более, что подходит для сценариев, в которых диапазон сходства должен быть ограничен.
  • Группированный поиск: Группировка результатов поиска по определенным полям обеспечивает разнообразие результатов и позволяет избежать их чрезмерной концентрации. Это подходит для сценариев, требующих разнообразия результатов, например, для рекомендательных систем, которые хотят рекомендовать различные категории товаров.

6.2 Weaviate: мощная гибридная поисковая система, включающая в себя несколько методов поиска

Weaviate предоставляет мощные возможности гибридного поиска, который может гибко комбинировать поиск по векторному сходству, поиск по ключевым словам, генеративный поиск и другие методы поиска для удовлетворения сложных требований запроса и предоставления более комплексного решения для поиска.

  • Поиск по векторному сходству: Предоставление нескольких методов поиска по близости для нахождения объекта, наиболее похожего на вектор запроса, является основной поисковой возможностью Weaviate.
  • Поиск изображений: Поддерживает использование изображений в качестве входных данных для поиска по сходству для реализации функции поиска по изображениям, что подходит для сценариев поиска по изображениям.
  • Поиск по ключевым словам: Результаты ранжируются с помощью алгоритма BM25F, который поддерживает эффективное извлечение ключевых слов в традиционных сценариях поиска по ключевым словам.
  • Гибридный поиск: Сочетание поиска по ключевым словам BM25 и поиска по векторному сходству для синтетического ранжирования результатов с учетом семантической релевантности и соответствия ключевым словам подходит для гибридных сценариев поиска, где необходимо учитывать и ключевые слова, и семантическую информацию.
  • Генеративный поиск: Использование результатов поиска в качестве подсказок для LLM, чтобы генерировать ответы, которые лучше соответствуют намерениям пользователя, объединяя поиск с технологией генеративного ИИ для обеспечения более интеллектуального поиска.
  • Повторное ранжирование: Качество результатов поиска дополнительно оптимизируется с помощью модуля повторного ранжирования (Re-rank) для изменения рейтинга результатов поиска с целью повышения их точности и релевантности.
  • Агрегация: Агрегирование данных, полученных в результате сбора результатов, проведение статистического анализа, предоставление возможности анализа данных и помощь пользователям в поиске и анализе данных.
  • Фильтры: Применяйте условную фильтрацию в поиске, например, на основе полей метаданных, для повышения точности поиска и поддержки сложных условий фильтрации.

6.3 Qdrant: фокусируется на векторном поиске, учитывает полнотекстовую фильтрацию, легкий и эффективный

Qdrant специализируется на предоставлении высокопроизводительных услуг векторного поиска с балансом полнотекстовой фильтрации и известен своим легким весом, высокой производительностью и простотой использования.

Основные операции поиска, поддерживаемые Qdrant::

  • Фильтрация по баллам: Фильтрация на основе оценок векторного сходства возвращает только результаты с более высоким уровнем сходства, повышая качество результатов поиска.
  • Один запрос загружает несколько поисковых операций (Multi-Search Requests): Одновременная отправка нескольких поисковых запросов повышает эффективность поиска и подходит для сценариев, требующих пакетной обработки запросов.
  • Рекомендуем API: Предоставление специальных рекомендательных API для создания рекомендательных систем и упрощение процесса разработки рекомендательных систем.
  • Операции группировки: Группировка результатов поиска повышает разнообразие результатов в сценариях, требующих разнообразия результатов.

Другие методы поиска, поддерживаемые Qdrant::

Основу Qdrant составляет векторный поисковый движок, который обеспечивает ограниченную поддержку полнотекстового поиска для удовлетворения основных потребностей полнотекстовой фильтрации без ущерба для производительности векторного поиска.

  • Используйте полнотекстовую фильтрацию: Векторные данные можно фильтровать с помощью полнотекстовых фильтров, например, находить векторные данные, содержащие определенные ключевые слова, что позволяет осуществлять простой полнотекстовый поиск.
  • Полнотекстовый фильтр с векторным поиском: Выполняет векторный поиск в записях с определенными ключевыми словами для достижения более точного поиска, сочетая полнотекстовую фильтрацию и векторный поиск для повышения точности поиска.
  • Префиксный поиск и семантический мгновенный поиск: Поддержка префиксного поиска и семантического мгновенного поиска для обеспечения более удобной работы, нечеткого поиска и поиска в реальном времени.

Планируемые в будущем возможности Qdrant::

  • Поддерживаются разреженные векторы: Например, разреженные векторы, используемые в SPLADE и подобных моделях, расширяют возможности работы с разреженными данными и повышают эффективность и точность векторного поиска.

Функции, не предназначенные для поддержки Qdrant::

  • BM25 или другие функции поиска или ранжирования, не основанные на векторах (поиск, не основанный на векторах): В основе Qdrant лежит векторный поиск, и она не собирается поддерживать традиционные методы поиска по ключевым словам, сохраняя архитектуру простой и эффективной.
  • Встроенная онтология или граф знаний, анализатор запросов и другие инструменты NLP (встроенная онтология или граф знаний): Qdrant фокусируется на базовой инфраструктуре векторного поиска, оставляя приложения верхнего уровня и NLP-функциональность вне уравнения, сохраняя основную функциональность и оптимизируя производительность.

В чем разница между BM25 и простым поиском по ключевым словам? Подробный обзор скоринга релевантности

В области поиска по ключевым словам алгоритм BM25 (Best Matching 25) является более продвинутым и эффективным методом оценки релевантности, чем простое сопоставление ключевых слов. Понимание разницы между ними поможет вам лучше выбрать правильную стратегию поиска, особенно в сценариях, где требуется поиск по ключевым словам или смешанный поиск.

1. механизм оценки релевантности:

  • Простой поиск по ключевым словам: Скоринг обычно основан на частоте терминов (TF - Term Frequency), т. е. чем больше раз ключевое слово встречается в документе, тем более релевантным является документ. Этот метод прост и понятен, но он не учитывает длину документа и важность ключевых слов, что может привести к завышению оценки длинных документов, а также к помехам в результатах от часто используемых и неактивированных слов.
  • BM25 (Best Matching 25): Используя более сложный алгоритм, учитывающий частоту слов (TF), обратную частоту документов (IDF - Inverse Document Frequency) и длину документа для оценки релевантности документов, BM25 может более точно оценить релевантность документа запросу и эффективно устранить ограничения простого поиска по ключевым словам.

2. обработка длины документа:

  • Простой поиск по ключевым словам: Длина документа может не учитываться, в результате чего длинные документы будут считаться релевантными с большей вероятностью, поскольку длинные документы с большей вероятностью содержат ключевые слова, что приводит к смещению в сторону длинных документов.
  • BM25: Введение коэффициента нормализации длины документа позволяет решить проблему смещения длинных документов, чтобы обеспечить справедливость оценки релевантности между длинными и короткими документами и избежать получения длинными документами слишком высоких оценок из-за преимущества длины.

3. Важность терминов запроса:

  • Простой поиск по ключевым словам: Обычно все ключевые слова считаются одинаково важными, что не учитывает редкость ключевых слов в коллекции документов и приводит к тому, что обычные и неактивные слова мешают результатам.
  • BM25: Важность ключевых слов измеряется с помощью обратной частоты документа (IDF). Ключевые слова с более высокими значениями IDF (т.е. более редкие ключевые слова в коллекции документов) вносят больший вклад в оценку релевантности документа, эффективно дифференцируя важность ключевых слов и улучшая качество результатов поиска.

4. Возможность регулировки параметров:

  • Простой поиск по ключевым словам: Как правило, имеет меньшее количество параметров, что затрудняет тонкую настройку и делает ее менее гибкой.
  • BM25: Регулируемые параметры (например, k1 и b) позволяют пользователям точно настроить алгоритмы в соответствии с конкретными сценариями применения и характеристиками данных, оптимизировать результаты поиска, а также повысить гибкость и настраиваемость поиска.

Резюме:

По сравнению с простым поиском по ключевым словам, алгоритм BM25 превосходит его по показателям релевантности, обработке длины документа, измерению важности термина запроса и настраиваемости параметров, и может обеспечить более точные и ожидаемые пользователем результаты поиска. Поэтому алгоритм BM25 является лучшим выбором в сценариях с высокими требованиями к качеству поиска, особенно в сценариях, где требуется поиск по ключевым словам или гибридный поиск, алгоритм BM25 является ключевой технологией для улучшения результатов поиска.

 

7. бенчмаркинг производительности и метрики в деталях: количественная оценка сильных и слабых сторон векторных баз данных

Производительность является важным фактором при выборе векторной базы данных. Бенчмаркинг является эффективным средством оценки производительности векторных баз данных. Однако следует отметить, что на результаты бенчмаркинга влияет множество факторов, поэтому при обращении к результатам бенчмаркинга необходимо сочетать их с конкретными сценариями применения и требованиями для всестороннего анализа.

7. Приложение

7.1 ANN Benchmarks: авторитетная платформа для оценки производительности

ANN-бенчмарки Approximate Nearest Neighbors Benchmarks (ANN-Benchmarks) - это авторитетная платформа для оценки производительности алгоритмов приближенного поиска ближайших соседей, созданная и поддерживаемая Эриком Бернхардссоном. Она предоставляет единую систему бенчмарков и набор данных для оценки производительности различных алгоритмов поиска приближенных ближайших соседей и векторных баз данных. ANN-Benchmarks представляет собой важную ссылку для оценки производительности векторных баз данных и является важным инструментом для понимания различий в производительности между различными векторными базами данных.

Факторы, влияющие на бенчмаркинг:

  • Тип поиска: Фильтрованный поиск и обычный поиск - разные типы поиска по-разному влияют на производительность.
  • Настройки конфигурации: Параметры конфигурации базы данных, такие как типы индексов, параметры индексов, настройки кэша и т. д., могут существенно влиять на производительность.
  • Алгоритмы индексирования: Различные алгоритмы индексирования (например, IVF, HNSW, PQ) имеют разные характеристики производительности и подходят для разных сценариев распределения данных и запросов.
  • Встраивание данных: Качество и размерность встраивания данных влияет на производительность и точность векторной базы данных.
  • Аппаратное окружение: Процессор, память, диск, сеть и другие аппаратные ресурсы напрямую влияют на производительность базы данных.

Ключевые факторы, на которые следует обратить внимание при выборе модели, помимо бенчмаркинга:

  • Распределенные возможности: Поддерживает ли она распределенное развертывание и может ли горизонтально масштабироваться, чтобы справляться с большими объемами данных и высоким параллелизмом.
  • Копирование и кэширование данных: Поддерживать ли механизм копирования и кэширования данных для обеспечения безопасности данных и повышения производительности системы.
  • Алгоритмы индексирования: Какой алгоритм индексирования используется, каковы характеристики производительности и сценарии применения алгоритма, поддерживается ли несколько алгоритмов индексирования.
  • Возможность поиска векторного сходства: Поддерживать ли гибридный поиск, фильтрацию, многочисленные метрики сходства и другие расширенные функции поиска для удовлетворения потребностей сложных запросов.
  • Механизм сегментации: Поддерживать ли нарезку данных, как осуществлять нарезку и управление данными, а также повышать эффективность управления данными и запросами.
  • Кластерный подход: Как строить кластеры, масштабируемость и стабильность кластеров, гарантия высокой доступности и масштабируемости системы.
  • Потенциал масштабируемости: Верхний предел масштабируемости системы, способна ли она удовлетворить потребности будущего роста бизнеса, а также предсказать способность системы к расширению.
  • Согласованность данных: Как гарантировать согласованность и надежность данных, особенно в распределенной среде.
  • Общая доступность системы: Стабильность и надежность системы, может ли она обеспечить стабильную работу в режиме 7х24 часа и соответствовать требованиям непрерывности бизнеса.

Угловые метрики и евклидовы метрики: ключевые метрики для текстового поиска

В области текстового поиска векторные базы данных вУгловое расстояние Производительность обычно выше, чем уЕвклидово расстояние более важна. Это связано с тем, что угловые метрики более чувствительны к семантическому сходству текстовых документов, в то время как евклидовы метрики больше ориентированы на длину и размер документов.

  • Угловая мера (например, косинусоидальное расстояние): Фокусируется на направлении вектора, не чувствителен к длине вектора, больше подходит для измерения семантического сходства текста, подходит для текстового поиска, классификации документов и других сценариев.
  • Евклидова метрика (например, евклидово расстояние): Он также учитывает размер и направление векторов, чувствителен к длине векторов и лучше подходит для измерения абсолютного расстояния между векторами, что удобно для таких сценариев, как распознавание изображений и речи.

Поэтому при выборе системы RAG следует ориентироваться на векторную базу данных в различных измеренияхНабор угловых данныхпроизводительность, например, на наборах данных glove-100-angular и nytimes-256-angular.

向量数据库深度对比:Weaviate、Milvus 与 Qdrant

Анализ производительности (набор данных glove-100-angular):

  • Запросы в секунду (QPS): Milvus показывает самую высокую пропускную способность, когда отзыв ниже 0,95, что означает, что Milvus может обрабатывать более высокий параллелизм запросов с лучшей производительностью, гарантируя при этом определенный отзыв. Когда отзыв превышает 0,95, разрыв в пропускной способности между базами данных сокращается, а при высоком отзыве разрыв в производительности не очевиден.
  • Индекс Время сборки: Vespa имеет самое длительное время построения индекса, Weaviate и Milvus имеют схожее время построения, но Milvus немного дольше. Время построения индекса напрямую влияет на скорость запуска базы данных и эффективность обновления данных, чем меньше время построения, тем быстрее запуск базы данных и обновление данных.
  • Размер индекса: У Weaviate самый маленький индекс, а у Milvus - самый большой. Размер индекса влияет на стоимость хранения и использование памяти, чем меньше индекс, тем меньше стоимость хранения и использование памяти. Хотя индекс Milvus велик, для набора данных, содержащего 1,2 миллиона 100-мерных векторов, размер индекса составляет менее 1,5 ГБ, что все еще приемлемо, и влияние размера индекса следует оценивать в зависимости от размера данных в практических приложениях.

7.1.2 Производительность набора данных nytimes-256-angular

向量数据库深度对比:Weaviate、Milvus 与 Qdrant

Анализ производительности (набор данных nytimes-256-angular):

Производительность этого набора данных аналогична набору данных glove-100-angular и имеет устойчивую общую тенденцию.

  • Время создания индекса: Weaviate имеет самое длительное время построения индекса, Milvus и Qdrant - относительно короткое, и порядок времени построения соответствует набору данных glove-100-angular.
  • Размер индекса: Индекс Weaviate - самый маленький, индекс Milvus - самый большой, но его размер составляет всего 440 МБ (набор данных, содержащий 290 000 256-мерных векторов), и порядок размеров индексов соответствует набору данных glove-100-angular.

Резюме:

Бенчмарки ANN предоставляют ценные справочные данные, помогающие понять характеристики производительности различных векторных баз данных. Milvus превосходит по пропускной способности и подходит для сценариев с высокопоточными запросами; Weaviate имеет преимущество в размере индекса и экономит место в хранилище; Vespa имеет относительно большее время создания индекса и требует внимания к эффективности создания индекса.

При выборе модели необходимо сочетать конкретные сценарии применения, характеристики данных и требования к производительности для всесторонней оценки, и нельзя полагаться только на результаты эталонных тестов.

7.2 Метрики векторного сходства: выбор правильных метрик для улучшения результатов поиска

Метрики сходства векторов используются для измерения степени сходства между двумя векторами, и различные метрики сходства подходят для разных типов данных и сценариев применения. Выбор правильной метрики сходства напрямую влияет на точность и эффективность векторного поиска. Различные базы данных векторов поддерживают разные метрики сходства, поэтому необходимо выбрать правильную базу данных и метрику сходства в соответствии с реальными потребностями.

нормаописаниядоминированиенеполноценныйПрименимые сценарииПоддерживаемые базы данных
Косинусное расстояниеИзмерьте косинус угла между двумя векторамиФокусируется на направлении вектора, не чувствителен к длине вектора; подходит для высокоразмерных разреженных данныхНечувствителен к информации о длине вектора; не применим к невыпуклым наборам данныхВычисление сходства текстов, классификация документов, рекомендательные системыpgvector, Pinecone, Weaviate, Qdrant, Milvus, Vespa
Евклидово расстояние (L2)Вычислите расстояние по прямой между двумя векторами в многомерном пространствеИнтуитивно понятны и просты в понимании; учитывают как величину, так и направление вектораСнижение производительности в высокоразмерных пространствах из-за "катастрофы размерности"; чувствительность к выбросамРаспознавание изображений, распознавание речи, анализ рукописного текстаpgvector, Pinecone, Qdrant, Milvus, Vespa
Точечный продуктВычислите сумму произведений соответствующих компонент вектораБыстрое вычисление; отражает как величину, так и направление вектораЧувствительность к масштабу вектора; может потребоваться нормализация данныхРекомендательные системы, коллаборативная фильтрация, матричное разложениеpgvector, Pinecone, Weaviate, Qdrant, Milvus
L2 Квадратное евклидово расстояниеКвадрат расстояния ЕвклидаШтрафует большие различия между элементами вектора; более эффективен в некоторых случаяхОперация возведения в квадрат может искажать расстояния; более чувствительна к выбросамОбработка изображений, обнаружение аномалийWeaviate
Расстояние ХэммингаИзмерение количества различных значений, соответствующих положению двоичного вектораПодходит для бинарных или категориальных данных; быстрые вычисленияНе применимо к непрерывным числовым даннымОбнаружение и исправление ошибок, согласование последовательностей ДНКWeaviate, Milvus, Vespa
Расстояние до Манхэттена (L1)Измерьте сумму расстояний между двумя векторами в направлении координатных осейБолее устойчив к выбросам, чем евклидово расстояниеГеометрическая значимость менее интуитивна, чем евклидово расстояние.Расчет расстояния до доски, расчет расстояния до городского кварталаWeaviate

7.2.1 Косинусное расстояние: первый выбор для вычисления сходства текстов

Косинусное расстояние измеряет сходство векторов, вычисляя косинус угла между двумя векторами. Чем ближе значение косинуса к 1, тем более схожи векторы; чем ближе значение косинуса к -1, тем менее схожи векторы; а при значении косинуса 0 векторы ортогональны, что указывает на их несхожесть.

  • vantage::
    • Сосредоточьтесь на направлении вектора и игнорируйте длину вектора: Косинусное расстояние фокусируется на направлении вектора и не чувствительно к его длине. Это делает его хорошо подходящим для обработки текстовых данных, так как длина документа часто не является ключевым фактором при расчете текстового сходства, в то время как тема и семантическое направление документа важны.
    • Для высокоразмерных разреженных данных: В сценариях с высокоразмерными разреженными данными косинусное расстояние может сохранять хорошую производительность и подходит для расчета сходства высокоразмерных разреженных данных, таких как текст и поведение пользователя.
  • недостатки::
    • Нечувствителен к информации о длине вектора: В некоторых сценариях информация о длине векторов также может быть важной, например, в рекомендательной системе уровень активности пользователя (длина вектора) может быть важной характеристикой. Косинусное расстояние игнорирует эту информацию и может привести к потере информации.
    • Не применимо к невыпуклым наборам данных: Если распределение данных не является выпуклым множеством, косинусное расстояние может не обеспечить точную меру сходства, и необходимо выбрать подходящую метрику сходства на основе распределения данных.
  • Применимые сценарии::
    • Расчет сходства текстов: Например, вычисление семантического сходства двух статей, двух предложений или двух абзацев является распространенной метрикой для расчета сходства текстов.
    • Категоризация документов: Документы классифицируются по различным категориям на основе сходства векторов документов.
    • Рекомендуемые системы: Рекомендации составляются на основе поведения пользователя или характеристик товара, а для персонализации рекомендаций рассчитывается сходство между векторами пользователя и векторами товара.
    • Сценарии работы с высокоразмерными разреженными данными: Например, вычисление сходства высокоразмерных разреженных данных, таких как данные о поведении пользователей и характеристики продуктов.

7.2.2 Евклидово расстояние (L2): интуитивно понятное и простое, но его производительность ограничена в пространствах более высокой размерности.

Евклидово расстояние, также известное как норма L2, вычисляет расстояние по прямой между двумя векторами в многомерном пространстве. Чем меньше расстояние, тем более похожи векторы; чем больше расстояние, тем менее похожи векторы.

  • vantage::
    • Интуитивно понятный и легкий для восприятия: Концепция евклидова расстояния проста и интуитивно понятна, ее легко понять и использовать, и это одна из самых распространенных мер расстояния, используемых людьми.
    • Учитывайте как величину, так и направление вектора: Евклидово расстояние учитывает как величину, так и направление векторов, что дает более полное представление о различиях между векторами и подходит для сценариев, в которых необходимо учитывать как величину, так и направление векторов.
  • недостатки::
    • Производительность в пространствах более высокой размерности ухудшается из-за "катастрофы размерности": В высокоразмерных пространствах евклидовы расстояния между всеми точками стремятся к равенству, что приводит к уменьшению дифференциации, влияя на точность поиска сходства и ограничивая производительность в сценариях с высокоразмерными данными.
    • Чувствительны к выбросам: Евклидово расстояние чувствительно к выбросам, которые существенно влияют на результаты вычисления расстояния и являются менее надежными.
  • Применимые сценарии::
    • Распознавание изображений: Например, при распознавании лиц, объектов и т.д. сравнение сходства основано на евклидовом расстоянии между векторами признаков изображения.
    • Распознавание речи: Например, при сопоставлении речевых признаков выполняется сравнение сходства на основе евклидова расстояния между векторами речевых признаков.
    • Анализ почерка: Например, распознавание рукописных символов, сравнение сходства на основе евклидова расстояния между векторами признаков рукописных символов.
    • Сценарии работы с низкоразмерными данными: В сценариях с низкоразмерными данными евклидово расстояние по-прежнему остается эффективной метрикой сходства для поиска сходства в низкоразмерных данных.

7.2.3 Точечный продукт: эффективный расчет, подходит для рекомендательных систем

Внутреннее произведение, также известное как точечное произведение, вычисляет сумму произведений соответствующих компонент двух векторов. Чем больше внутреннее произведение, тем более похожи векторы; чем меньше внутреннее произведение, тем менее похожи векторы.

  • vantage::
    • Расчеты выполняются быстро: Внутреннее произведение работает очень быстро, особенно когда размерность вектора высока, преимущество в производительности более очевидно, подходит для больших объемов данных и сценариев с высокой параллельностью.
    • Отражает как величину, так и направление вектора: Внутреннее произведение учитывает как величину, так и направление векторов, что отражает общее сходство векторов и подходит для сценариев, в которых необходимо учитывать величину и направление векторов.
  • недостатки::
    • Чувствителен к векторным масштабам: На значение внутреннего произведения влияет масштаб векторов, и если векторы сильно отличаются по масштабу, то мера сходства внутреннего произведения может быть искажена и чувствительна к масштабу векторов.
    • Может потребоваться нормализация данных: Чтобы устранить влияние разницы масштабов векторов, часто необходимо нормализовать данные, например, привести векторы к единичной длине, чтобы обеспечить точность меры сходства внутреннего произведения.
  • Применимые сценарии::
    • Рекомендуемые системы: Например, для вычисления сходства между векторами пользователей и векторами элементов для персонализированных рекомендаций в рекомендательных системах часто используется метрика внутреннего произведения.
    • Коллаборативная фильтрация: Рекомендации составляются на основе сходства пользователей или предметов, используя внутреннее произведение для расчета сходства между пользователями или предметами.
    • Разложение матрицы: используется для уменьшения размерности и извлечения признаков, а внутреннее произведение может использоваться для измерения сходства между векторами и помощи в реализации алгоритмов разложения матриц.
    • Сценарии, требующие высокопроизводительных вычислений: Например, крупномасштабные онлайновые рекомендательные системы, поисковые системы в реальном времени и другие сценарии, требующие быстрого вычисления вектора сходства.

7.2.4 Евклидово расстояние L2: усиливает различия, эффективно для определенных сцен

L2 Квадратичное расстояние - это квадрат евклидова расстояния и вычисляется как квадратное значение евклидова расстояния.

  • vantage::
    • Большие различия между элементами вектора штрафов: Операция возведения в квадрат увеличивает различия между элементами вектора, делая значения расстояния более чувствительными к различиям. В некоторых случаях это свойство может быть более полезным для выделения сходств и подчеркивания различий.
    • Отказ от вычисления квадратного корня повышает эффективность вычислений: В некоторых сценариях вычислений можно обойтись без вычисления квадратного корня, чтобы повысить эффективность и упростить процесс вычислений.
  • недостатки::
    • Операции возведения в квадрат могут искажать расстояния: Операция возведения в квадрат изменяет масштаб расстояния, что может привести к тому, что значение расстояния будет менее интуитивно понятным, чем евклидово расстояние.
    • Более чувствительны к выбросам: Операция возведения в квадрат еще больше усиливает влияние промахов, делая квадратное расстояние L2 более чувствительным к промахам и менее надежным.
  • Применимые сценарии::
    • Обработка изображений: Например, при сравнении двух изображений на уровне пикселей квадратное расстояние L2 увеличивает разницу между пикселями и позволяет более эффективно сравнивать нюансы изображений.
    • Обнаружение аномалий: Усиление влияния выбросов облегчает обнаружение аномальных данных и подходит для сценариев обнаружения аномалий, чувствительных к выбросам.
    • Конкретные сценарии, в которых необходимо усилить различия: Квадратичное расстояние L2 может быть более эффективным, чем евклидово расстояние, в некоторых специфических сценариях, когда необходимо подчеркнуть дифференциацию.

7.2.5 Расстояние Хэмминга: эксклюзивная метрика для двоичных данных

Расстояние Хэмминга измеряет количество различных значений в соответствующих позициях двух двоичных векторов одинаковой длины и используется для измерения степени различия между двоичными векторами.

  • vantage::
    • Для бинарных или категориальных данных: Расстояние Хэмминга специально используется для измерения различий в бинарных или категориальных данных и подходит для вычисления сходства бинарных векторов.
    • Расчеты выполняются быстро: Вычисление расстояния Хэмминга очень простое и эффективное, и требует только сравнения соответствующих позиций двоичных векторов и подсчета количества различных значений.
  • недостатки::
    • Не применимо к непрерывным числовым данным: Расстояние Хэмминга может использоваться только для бинарных или категориальных данных и не может работать с непрерывными числовыми данными, что имеет ограниченную область применения.
  • Применимые сценарии::
    • Обнаружение и исправление ошибок: Например, в коммуникационном кодировании расстояние Хэмминга используется для измерения разницы между кодовыми словами для обнаружения и исправления ошибок и является важным понятием в теории кодирования.
    • Сравнение последовательностей ДНК: Последовательности ДНК были преобразованы в двоичное представление, а сравнение последовательностей проводилось с использованием расстояния Хэмминга для биоинформационного анализа.
    • Расчет сходства данных по подтипам: Он подходит для расчета сходства данных подтипов, например, для расчета сходства категориальных данных, таких как метки пользователей, атрибуты продуктов и так далее.

7.2.6 Манхэттенское расстояние (L1): более надежная метрика расстояния, устойчивая к выбросам.

Манхэттенское расстояние, также известное как норма L1 или расстояние между городскими кварталами, рассчитывается как сумма абсолютных разностей между двумя векторами во всех измерениях.

  • vantage::
    • Более устойчив к выбросам, чем евклидово расстояние: Манхэттенское расстояние менее чувствительно к выбросам, чем евклидово расстояние, поскольку оно рассчитывает только абсолютную разность, а не квадратичную, и является более надежным и устойчивым к вмешательству выбросов.
    • Вычисления выполняются относительно быстро: Манхэттенское расстояние работает немного быстрее, чем евклидово расстояние, и подходит для сценариев, в которых расстояние нужно вычислить быстро.
  • недостатки::
    • Геометрическая значимость менее интуитивна, чем евклидово расстояние: Геометрическое значение манхэттенского расстояния менее интуитивно, чем евклидово расстояние, менее понятно и менее геометрически интерпретируемо.
  • Применимые сценарии::
    • Расчет расстояния до доски: Например, для вычисления расстояния между двумя клетками на шахматной доске обычно используется манхэттенское расстояние.
    • Расчет расстояния до городских кварталов: Например, для расчета расстояния между двумя точками в городе, не учитывая расстояния по диагонали, используется расстояние Манхэттена, которое также известно как расстояние между городскими кварталами.
    • Проблема кратчайшего пути в логистическом планировании: Манхэттенское расстояние может использоваться для оценки длины пути при планировании логистики и для реализации алгоритмов кратчайшего пути.
    • Сценарии, менее чувствительные к выбросам: В сценариях, где необходимо уменьшить влияние промахов, манхэттенское расстояние более применимо и надежно, чем евклидово расстояние.

8. Ссылки

  1. https://github.com/milvus-io/milvus
  2. Powering Al With Vector Databases: A Benchmark - Part I - Данные - Блог - F-Tech
  3. Основы - Qdrant
  4. Документация Milvus
  5. Главная | Weaviate - База данных векторов
  6. Документация по Qdrant - Qdrant
  7. Примеры использования векторных баз данных - Qdrant
  8. Векторные базы данных: введение, примеры использования, 5 лучших векторных баз данных
  9. ANN-бенчмарки
  10. Метрика расстояния в векторном поиске - Weaviate
  11. BM25 - Энциклопедия Baidu
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...