Как оценить векторную базу данных?
Эта статья была первоначально опубликована в InfoWorld и перепечатывается здесь с разрешения.
В современном мире, основанном на данных, экспоненциальный рост неструктурированных данных — это явление, требующее нашего внимания. Рост ИИ и больших языковых моделей (LLM) вновь разжег этот взрывной рост данных, направив наше внимание на прорывную технологию: векторные базы данных. Как жизненно важная инфраструктура в эпоху ИИ, векторные базы данных являются мощными инструментами для хранения, индексирования и поиска неструктурированных данных.
Когда внимание всего мира прочно приковано к векторным базам данных, возникает насущный вопрос: как выбрать подходящую для потребностей вашего бизнеса? Какие ключевые факторы следует учитывать при сравнении и оценке векторных баз данных? В этой публикации мы подробно рассмотрим эти вопросы и дадим представление с точки зрения масштабируемости, функциональности и производительности, помогая вам принимать обоснованные решения в этой динамичной среде.
Что такое векторная база данных?
Традиционные реляционные системы баз данных управляют данными в структурированных таблицах с предопределенными форматами и отлично справляются с выполнением точных поисковых операций. В отличие от них, векторные базы данных специализируются на хранении и извлечении неструктурированных данных, таких как изображения, аудио, видео и текст, с помощью высокоразмерных числовых представлений, известных как векторные эмбеддинги.
Векторные базы данных известны поиском по сходству, используя такие методы, как алгоритм приближенного ближайшего соседа (ANN). Этот алгоритм упорядочивает данные в соответствии с пространственными отношениями и быстро определяет ближайшую точку данных к заданному запросу в больших наборах данных.
Разработчики используют векторные базы данных при создании рекомендательных систем, чат-ботов и приложений для поиска похожих изображений, видео и аудио. С ростом ChatGPT векторные базы данных стали полезны для решения проблем галлюцинаций больших языковых моделей.
Векторные базы данных по сравнению с другими технологиями векторного поиска
Для векторного поиска помимо векторных баз данных доступны различные технологии. В 2017 году Meta открыла исходный код FAISS, значительно снизив затраты и барьеры, связанные с векторным поиском. В 2019 году Zilliz представила Milvus — специализированную векторную базу данных с открытым исходным кодом, лидирующую в отрасли. С тех пор появилось множество других компаний, занимающихся векторными базами данных. Тренд векторных баз данных набрал обороты в 2022 году с выходом множества традиционных поисковых продуктов, таких как Elasticsearch и Redis, а также с широким использованием LLM, таких как ChatGPT.
В чем их различия теперь, когда существует так много продуктов для векторного поиска? Я условно делю их на следующие типы:
Библиотеки векторного поиска. Это наборы алгоритмов без базовых функциональных возможностей баз данных, таких как вставка, удаление, обновление, запросы, постоянное хранение данных и масштабируемость. FAISS — основной пример.
Легковесные векторные базы данных. Они построены на библиотеках векторного поиска, что делает их легковесными в развертывании, но с низкой масштабируемостью и производительностью. Chroma — один из таких примеров.
Плагины векторного поиска. Это надстройки векторного поиска, которые опираются на традиционные базы данных. Однако их архитектура рассчитана на обычные рабочие нагрузки, что может негативно влиять на их производительность и масштабируемость. Elasticsearch и Pgvector — основные примеры.
Специализированные векторные базы данных. Эти базы данных специально созданы для векторного поиска и предлагают значительные преимущества по сравнению с другими технологиями векторного поиска. Например, специализированные векторные базы данных предоставляют более удобные для пользователей функции, такие как распределенные вычисления и хранение, аварийное восстановление и постоянное хранение данных. Milvus — основной пример.
Как оценивать векторную базу данных?
При оценке векторной базы данных масштабируемость, функциональность и производительность являются тремя наиболее важными метриками.
Масштабируемость
Масштабируемость необходима для определения того, может ли векторная база данных эффективно обрабатывать экспоненциально растущие данные. При оценке масштабируемости мы должны учитывать горизонтальную/вертикальную масштабируемость, балансировку нагрузки и множественные репликации.
Горизонтальная/вертикальная масштабируемость
Разные векторные базы данных используют различные методы масштабирования для удовлетворения потребностей роста бизнеса. Например, Pinecone и Qdrant выбирают вертикальное масштабирование, тогда как Milvus использует горизонтальное масштабирование. Горизонтальная масштабируемость обеспечивает большую гибкость и производительность, чем вертикальное масштабирование, с меньшим количеством верхних ограничений.
Балансировка нагрузки
Планирование имеет решающее значение для распределенной системы. Его скорость, гранулярность и точность напрямую влияют на управление нагрузкой и производительность системы, снижая масштабируемость, если оно не оптимизировано должным образом.
Поддержка нескольких реплик
Несколько реплик обеспечивают дифференцированные ответы на различные запросы, повышая количество запросов в секунду (QPS) системы и общую масштабируемость.
Разные векторные базы данных ориентированы на разные типы пользователей, поэтому их стратегии масштабирования различаются. Milvus, например, сосредоточен на сценариях с быстро растущими объемами данных и использует горизонтально масштабируемую архитектуру с разделением хранения и вычислений. Pinecone и Qdrant, с другой стороны, предназначены для пользователей с умеренным объемом данных и потребностями в масштабировании. Между тем LanceDB и Chroma отдают приоритет легковесным развертываниям, а не масштабируемости.
Функциональность
Я классифицирую функциональность векторных баз данных на две основные категории: функции, ориентированные на базы данных, и функции, ориентированные на векторы.
Функции, ориентированные на векторы
Векторные базы данных полезны во многих сценариях использования, таких как retrieval augmented generation (RAG), рекомендательные системы и поиск семантического сходства с использованием различных индексов. Поэтому способность поддерживать несколько типов индексов является критически важным фактором при оценке векторной базы данных.
В настоящее время большинство векторных баз данных поддерживают индексы HNSW (Hierarchical Navigable Small World), а некоторые также поддерживают индексы IVF (Inverted File). Эти индексы подходят для операций в памяти и лучше всего подходят для сред с обильными ресурсами. Однако некоторые векторные базы данных выбирают решения на основе mmap для ситуаций с ограниченными аппаратными ресурсами. Хотя решения на основе mmap проще реализовать, это происходит за счет производительности.
Milvus, одна из самых давно существующих векторных баз данных, поддерживает 11 типов индексов, включая индексы на основе диска и GPU. Такой подход обеспечивает адаптируемость к широкому спектру сценариев применения.
Функции, ориентированные на базы данных
Многие функции, полезные для традиционных баз данных, также применимы к векторным базам данных, такие как Change Data Capture (CDC), поддержка мультитенантности, ресурсные группы и ролевое управление доступом (RBAC). Milvus и несколько традиционных баз данных, оснащенных векторными плагинами, эффективно поддерживают эти функции, ориентированные на базы данных.
Производительность
Производительность — самый критически важный показатель для оценки векторной базы данных. В отличие от обычных баз данных, векторные базы данных выполняют приближенный поиск, что означает, что полученные top k результатов не могут гарантировать 100% точность. Поэтому, помимо традиционных метрик, таких как Query Per Second (QPS) и Latency, «коэффициент полноты» является еще одной важной метрикой производительности для векторных баз данных, которая количественно оценивает точность извлечения.
Я рекомендую два широко признанных инструмента бенчмаркинга с открытым исходным кодом для оценки различных метрик: ANN-Benchmark и VectorDBBench.
ANN-Benchmark
Векторная индексация — критически важный и ресурсоемкий аспект векторной базы данных. Ее производительность напрямую влияет на общую производительность базы данных. ANN-Benchmark — ведущий инструмент бенчмаркинга для оценки производительности различных алгоритмов векторных индексов на наборе реальных датасетов.
График ниже демонстрирует результаты тестирования полноты/запросов в секунду различных алгоритмов на основе датасета GIST1M (1 млн векторов с 960 измерениями). На нем коэффициент полноты отложен по оси x, а QPS — по оси y, что иллюстрирует производительность каждого алгоритма при разных уровнях точности извлечения.
Согласно результатам, показанным на графике выше, библиотеки Milvus, Zilliz и HNSW достигли трех лучших результатов при обработке 1 000 000 векторов с 960 измерениями. Больше результатов бенчмаркинга см. на сайте ANN-Benchmark.
VectorDBBench
Хотя ANN-Benchmark невероятно полезен для выбора и сравнения различных алгоритмов векторного поиска, он не предоставляет исчерпывающего обзора векторных баз данных. Мы также должны учитывать такие факторы, как потребление ресурсов, емкость загрузки данных и стабильность системы. Более того, ANN-Benchmark упускает многие распространенные сценарии, такие как фильтрованный векторный поиск.
VectorDBBench — инструмент бенчмаркинга с открытым исходным кодом, который может устранить вышеупомянутые ограничения и предназначен для векторных баз данных с открытым исходным кодом, таких как Milvus и Weaviate, а также полностью управляемых сервисов, таких как Zilliz Cloud и Pinecone. Поскольку многие полностью управляемые сервисы векторного поиска не раскрывают свои параметры для настройки пользователем, VectorDBBench отображает QPS и коэффициенты полноты отдельно.
Диаграммы ниже демонстрируют результаты тестирования QPS и коэффициента полноты различных популярных векторных баз данных при обработке 500 000 векторов с 1 536 измерениями и 1 000 000 векторов с 768 измерениями соответственно.
Согласно результатам на диаграммах выше, специализированные векторные базы данных, такие как Milvus и Zilliz, продемонстрировали выдающуюся производительность как по QPS, так и по показателям полноты. Эти результаты указывают на то, что специализированные векторные базы данных могут быстро обрабатывать огромные объемы данных и извлекать более точные результаты. В отличие от них, надстройки векторного поиска на основе традиционных баз данных показали более низкую производительность.
Для получения дополнительных результатов бенчмаркинга см. сайт VectorDBBench.
Заключение
В динамичной сфере векторных баз данных многочисленные продукты демонстрируют уникальные акценты и сильные стороны. Универсальной «лучшей» векторной базы данных не существует; выбор зависит от ваших потребностей. Поэтому крайне важно оценивать масштабируемость, функциональность, производительность и совместимость векторной базы данных с вашими конкретными сценариями использования.
Читать далее

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.



