pgvector против Aerospike: выбор подходящей векторной базы данных для ваших AI-приложений
Что такое векторная база данных?
Прежде чем сравнить pgvector и Aerospike, давайте сначала рассмотрим концепцию векторных баз данных.
Векторная база данных специально разработана для хранения и выполнения запросов к многомерным векторам, которые являются числовыми представлениями неструктурированных данных. Эти векторы кодируют сложную информацию, такую как семантическое значение текста, визуальные характеристики изображений или атрибуты продуктов. Обеспечивая эффективный поиск по сходству, векторные базы данных играют ключевую роль в AI-приложениях, позволяя выполнять более продвинутый анализ и извлечение данных.
Распространенные сценарии использования векторных баз данных включают рекомендации товаров в электронной коммерции, платформы для обнаружения контента, обнаружение аномалий в кибербезопасности, анализ медицинских изображений и задачи обработки естественного языка (NLP). Они также играют важную роль в Retrieval Augmented Generation (RAG), методе, который повышает производительность больших языковых моделей (LLMs), предоставляя внешние знания для снижения таких проблем, как AI-галлюцинации.
На рынке доступно множество типов векторных баз данных, включая:
- Специализированные векторные базы данных, такие как Milvus, Zilliz Cloud (полностью управляемый Milvus)
- Библиотеки векторного поиска, такие как Faiss и Annoy.
- Легковесные векторные базы данных, такие как Chroma и Milvus Lite.
- Традиционные базы данных с дополнениями для векторного поиска, способные выполнять векторный поиск небольшого масштаба.
pgvector — это традиционная база данных, а Aerospike — распределенная масштабируемая NoSQL-база данных. Обе имеют возможности векторного поиска в виде дополнения. В этой статье сравниваются их возможности векторного поиска.
pgvector: обзор и базовая технология
pgvector — это расширение для PostgreSQL, которое добавляет поддержку векторных операций. Оно позволяет пользователям хранить и запрашивать векторные эмбеддинги напрямую в своей базе данных PostgreSQL, предоставляя возможности поиска по векторному сходству без необходимости в отдельной векторной базе данных.
Ключевые возможности pgvector включают:
- Поддержку точного и приближенного поиска ближайших соседей
- Интеграцию с механизмами индексирования PostgreSQL
- Возможность выполнять векторные операции, такие как сложение и вычитание
- Поддержку различных метрик расстояния (евклидово, косинусное, внутреннее произведение)
pgvector по умолчанию использует точный поиск ближайшего соседа, который гарантирует идеальную полноту, но может быть медленнее для больших наборов данных. Для оптимизации производительности pgvector предлагает возможность создавать индексы для приближенного поиска ближайших соседей. Этот подход жертвует некоторой точностью ради значительно более высокой скорости, что часто является оправданным компромиссом во многих реальных приложениях.
Важно отметить, что добавление приближенного индекса может изменить результаты ваших запросов. Это отличается от типичных индексов баз данных, которые не влияют на фактически возвращаемые результаты. Два типа приближенных индексов, поддерживаемых pgvector:
- HNSW (Hierarchical Navigable Small World): Представленный в версии pgvector 0.5.0, HNSW известен высокой производительностью и качеством результатов. Он строит многоуровневую графовую структуру, которая обеспечивает быстрый обход во время поиска.
- IVFFlat (Inverted File Flat): Этот метод делит векторное пространство на кластеры. Во время поиска он сначала определяет наиболее релевантные кластеры, а затем выполняет точный поиск внутри этих кластеров. Это может значительно ускорить поиск в больших наборах данных.
Выбор между этими типами индексов зависит от вашего конкретного сценария использования с учетом таких факторов, как размер набора данных, требуемая скорость запросов и допустимый компромисс в точности. HNSW обычно обеспечивает лучшую производительность, но может использовать больше памяти, тогда как IVFFlat может быть более эффективным с точки зрения памяти, но в некоторых случаях может быть немного медленнее или менее точным.
При внедрении pgvector в ваш проект попробуйте поэкспериментировать с обоими типами индексов и их параметрами, чтобы найти оптимальную конфигурацию для ваших конкретных потребностей. Этот процесс тонкой настройки может повлиять на производительность и точность ваших операций векторного поиска.
Хотите узнать, как начать использовать pgvector? Ознакомьтесь с этим руководством!
Что такое Aerospike? Обзор
Aerospike — это NoSQL-база данных для высокопроизводительных приложений реального времени. Она добавила поддержку векторного индексирования и поиска, поэтому подходит для сценариев использования векторных баз данных. Векторная возможность называется Aerospike Vector Search (AVS) и находится в Preview. Вы можете запросить ранний доступ у Aerospike.
AVS поддерживает только индексы Hierarchical Navigable Small World (HNSW) для векторного поиска. Когда в AVS выполняются обновления или вставки, данные записи, включая вектор, записываются в Aerospike Database (ASDB) и сразу становятся видимыми. Для индексирования каждая запись должна иметь как минимум один вектор в указанном векторном поле индекса. Для одной записи можно иметь несколько векторов и индексов, чтобы выполнять поиск по одним и тем же данным разными способами. Aerospike рекомендует назначать добавляемые или обновляемые записи определенному set, чтобы вы могли отслеживать их и выполнять с ними операции.
У AVS уникальный способ построения индекса: оно выполняется параллельно на всех узлах AVS. Хотя обновления векторных записей записываются непосредственно в ASDB, индексные записи обрабатываются асинхронно из очереди индексирования. Это выполняется пакетами и распределяется по всем узлам AVS, поэтому используются все ядра CPU в кластере AVS, и система масштабируется. Производительность ingest сильно зависит от памяти хоста и конфигурации уровня хранения.
Для каждого элемента в очереди индексирования AVS обрабатывает вектор для индексирования, строит кластеры для каждого вектора и фиксирует их в ASDB. Индексная запись содержит копию самого вектора и кластеры для этого вектора на данном уровне графа HNSW. Индексирование использует векторные расширения (AVX) для параллельной обработки single instruction, multiple data.
AVS выполняет запросы во время ingest, чтобы «предварительно наполнить» кэш индекса, поскольку записи в кластерах взаимосвязаны. Эти запросы не учитываются как query requests, но отображаются как операции чтения на уровне хранения. Таким образом, кэш заполняется релевантными данными и может повысить производительность запросов. Это показывает, как AVS обрабатывает векторные данные и строит индексы для поиска по сходству, чтобы масштабироваться для поиска по высокоразмерным векторам.
Ключевые различия
При выборе между pgvector и Aerospike для векторного поиска следует учитывать следующие ключевые факторы.
Методология поиска:
pgvector поддерживает точный и приближенный поиск ближайших соседей. У него есть два типа приближенных индексов: HNSW (Hierarchical Navigable Small World) и IVFFlat (Inverted File Flat). HNSW строит многослойный граф для быстрого обхода, IVFFlat делит векторное пространство на кластеры. Aerospike Vector Search (AVS) поддерживает только индексы HNSW для векторного поиска.
Обработка данных:
pgvector интегрируется с PostgreSQL, поэтому вы можете хранить и запрашивать векторные эмбеддинги вместе с традиционными реляционными данными. Это может быть полезно, если вам нужно сочетать векторный поиск с операциями над структурированными данными. Aerospike, будучи NoSQL-базой данных, предназначен для высокопроизводительных приложений реального времени и может лучше подходить для полуструктурированных или неструктурированных данных в масштабе.
Масштабируемость и производительность:
pgvector использует механизмы индексирования PostgreSQL, что может быть хорошим вариантом для многих сценариев использования. Но для очень больших наборов данных вам может потребоваться тщательно настраивать индексы и запросы. Aerospike разработан для высокой масштабируемости и имеет уникальный процесс параллельного индексирования на всех узлах кластера. Такой распределенный подход может быть лучше для крупномасштабных операций векторного поиска.
Гибкость и настройка:
pgvector позволяет выполнять различные векторные операции, такие как сложение и вычитание, и поддерживает несколько метрик расстояния (евклидово, косинусное, внутреннее произведение). Он бесшовно интегрируется с богатым набором функций и расширений PostgreSQL. Aerospike может быть менее гибким с точки зрения SQL-подобных операций, но предоставляет больше возможностей для тонкой настройки производительности в масштабе.
Интеграция и экосистема:
pgvector имеет преимущество большой экосистемы инструментов и интеграций PostgreSQL. Если ваш существующий стек сильно завязан на PostgreSQL, то pgvector может быть естественным выбором. Aerospike, хотя и менее распространен, может иметь специфические интеграции, ценные для высокопроизводительных приложений реального времени.
Простота использования:
pgvector может быть легко настроить и использовать, если вы уже знакомы с PostgreSQL. Кривая обучения для Aerospike может быть круче, если вы новичок в NoSQL-базах данных. Однако оба варианта требуют тщательного учета типов индексов и параметров для оптимизации производительности.
Стоимость:
pgvector — это open-source-расширение для PostgreSQL, поэтому стоимость может быть ниже. Aerospike предлагает как open-source, так и enterprise-редакции, AVS в настоящее время находится в preview. Общая стоимость будет зависеть от вашего конкретного развертывания и масштаба.
Безопасность:
Оба имеют функции безопасности, но детали различаются. PostgreSQL обладает надежным набором механизмов аутентификации и контроля доступа, которые может использовать pgvector. Aerospike имеет функции безопасности, но вам потребуется проверить их документацию, чтобы получить самую актуальную информацию о шифровании, аутентификации и контроле доступа для их векторного поиска.
Когда выбирать каждую технологию
Используйте pgvector:
pgvector — хороший выбор, когда у вас уже есть PostgreSQL и вы хотите добавить векторный поиск в существующую реляционную базу данных. Он хорош для проектов, которым нужно сочетать векторные операции с SQL-запросами, или когда у вас есть структурированные данные с векторным компонентом. pgvector подходит для точного поиска ближайших соседей или малых и средних наборов данных, где производительность запросов не является узким местом.
Используйте Aerospike:
Aerospike с Vector Search (AVS) лучше подходит для высокопроизводительных приложений реального времени, которым нужно обрабатывать крупномасштабный векторный поиск. Это хороший вариант, когда вы создаете системы, требующие низколатентного поиска векторного сходства по огромным наборам данных. Распределенное индексирование Aerospike особенно полезно для приложений в таких областях, как рекомендательные системы, обнаружение мошенничества в реальном времени или крупномасштабный поиск сходства изображений или текста, где скорость и масштабируемость являются ключевыми.
Заключение:
pgvector выделяется своей интеграцией с PostgreSQL — знакомой средой для разработчиков, работающих с реляционными базами данных, а также гибкостью, позволяющей сочетать векторный поиск с операциями со структурированными данными. Aerospike — это высокопроизводительный, масштабируемый векторный поиск для больших наборов данных, с распределённой индексацией, которая потенциально лучше подходит для очень большого масштаба. Выбор между этими двумя решениями должен основываться на вашем сценарии использования, существующей инфраструктуре, объёме данных и требованиях к производительности. При принятии решения учитывайте экспертизу вашей команды, характер ваших данных (структурированные или полуструктурированные), масштаб ваших потребностей в векторном поиске и производительность вашего приложения в реальном времени.
Хотя эта статья даёт обзор pgvector и Aerospike, важно оценивать эти базы данных с учётом вашего конкретного сценария использования. Один из инструментов, который может помочь в этом процессе, — VectorDBBench, open-source инструмент для бенчмаркинга, предназначенный для сравнения производительности векторных баз данных. В конечном счёте тщательное бенчмаркинг-тестирование с конкретными наборами данных и шаблонами запросов будет необходимо для принятия обоснованного решения между этими двумя мощными, но различными подходами к векторному поиску в распределённых системах баз данных.
Использование open-source VectorDBBench для самостоятельной оценки и сравнения векторных баз данных
VectorDBBench — это open-source инструмент для бенчмаркинга, предназначенный для пользователей, которым требуются высокопроизводительные системы хранения и извлечения данных, особенно векторные базы данных. Этот инструмент позволяет пользователям тестировать и сравнивать производительность различных систем векторных баз данных, таких как Milvus и Zilliz Cloud (управляемый Milvus), используя собственные наборы данных, и определять наиболее подходящую систему для своих сценариев использования. С помощью VectorDBBench пользователи могут принимать обоснованные решения на основе фактической производительности векторной базы данных, а не полагаться на маркетинговые заявления или отдельные свидетельства.
VectorDBBench написан на Python и распространяется по open-source лицензии MIT, что означает, что любой может свободно использовать, изменять и распространять его. Инструмент активно поддерживается сообществом разработчиков, стремящихся улучшать его функции и производительность.
Загрузите VectorDBBench из его репозитория GitHub, чтобы воспроизвести наши результаты бенчмаркинга или получить результаты производительности на ваших собственных наборах данных.
Быстро ознакомьтесь с производительностью популярных векторных баз данных в рейтинге VectorDBBench.
Прочитайте следующие блоги, чтобы узнать больше об оценке векторных баз данных.
Дополнительные ресурсы о VectorDB, GenAI и ML
Читать далее

Zilliz Cloud Update: Tiered Storage, Business Critical Plan, Cross-Region Backup, and Pricing Changes
This release offers a rebuilt tiered storage with lower costs, a new Business Critical plan for enhanced security, and pricing updates, among other features.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.

Vector Databases vs. Object-Relational Databases
Use a vector database for AI-powered similarity search; use an object-relational database for complex data modeling with both relational integrity and object-oriented features.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.


