pgvector против Clickhouse: выбор правильной векторной базы данных для ваших AI-приложений
Что такое векторная база данных?
Прежде чем сравнивать pgvector и ClickHouse, давайте сначала рассмотрим концепцию векторных баз данных.
Векторная база данных специально разработана для хранения и запроса многомерных векторов, которые являются числовыми представлениями неструктурированных данных. Эти векторы кодируют сложную информацию, такую как семантическое значение текста, визуальные признаки изображений или атрибуты продуктов. Обеспечивая эффективный поиск по сходству, векторные базы данных играют ключевую роль в AI-приложениях, позволяя выполнять более продвинутый анализ и извлечение данных.
Распространенные варианты использования векторных баз данных включают рекомендации товаров в электронной коммерции, платформы обнаружения контента, обнаружение аномалий в кибербезопасности, анализ медицинских изображений и задачи обработки естественного языка (NLP). Они также играют важнейшую роль в Retrieval Augmented Generation (RAG) — методе, который повышает производительность больших языковых моделей (LLMs), предоставляя внешние знания для уменьшения таких проблем, как галлюцинации AI.
На рынке доступно множество типов векторных баз данных, включая:
- Специализированные векторные базы данных, такие как Milvus, Zilliz Cloud (полностью управляемый Milvus)
- Библиотеки векторного поиска, такие как Faiss и Annoy.
- Легковесные векторные базы данных, такие как Chroma и Milvus Lite.
- Традиционные базы данных с дополнениями для векторного поиска, способные выполнять векторный поиск в небольших масштабах.
pgvector — это традиционная база данных, а ClickHouse — open-source колоночная база данных. Обе обладают возможностями векторного поиска в виде дополнения. В этой статье сравниваются их возможности векторного поиска.
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? Посмотрите этот tutorial!
ClickHouse: Обзор и ядро
ClickHouse — это OLAP-база данных с открытым исходным кодом для аналитики в реальном времени с полной поддержкой SQL и быстрой обработкой запросов. Она отлично подходит для аналитических запросов благодаря полностью параллелизированному конвейеру запросов и может быстро выполнять векторный поиск. Она имеет высокое сжатие (настраиваемое с помощью кодеков), поэтому может хранить и запрашивать большие наборы данных. Одно из ее главных преимуществ заключается в том, что она может обрабатывать наборы данных объемом в несколько ТБ, не будучи ограниченной памятью, поэтому это отличный инструмент для пользователей с большими векторными данными. Также поддерживает фильтрацию и агрегацию по метаданным, так что вы можете запрашивать векторы и их метаданные.
ClickHouse имеет функциональность векторного поиска через SQL, где операции вычисления расстояния между векторами работают так же, как любые другие функции SQL. Поэтому вы можете сочетать это с традиционной фильтрацией и агрегацией. Отлично подходит для сценариев, где нужно запрашивать векторные данные вместе с метаданными или другой информацией. Также имеет экспериментальные индексы Approximate Nearest Neighbour (ANN) для более быстрого (но приблизительного) сопоставления. И точное сопоставление через линейное сканирование строк с параллельной обработкой для скорости и эффективности.
ClickHouse отлично подходит для векторного поиска, когда нужно сочетать векторное сопоставление с фильтрацией или агрегацией по метаданным. Особенно для очень больших наборов векторных данных, которые нужно обрабатывать параллельно на нескольких ядрах CPU. ClickHouse также хорош, когда вам нужна поддержка SQL, а ваш набор векторных данных слишком велик, чтобы помещаться в индексы только в памяти. Кроме того, если у вас уже есть связанные данные в ClickHouse или вы не хотите изучать еще один инструмент для управления миллионами векторов, ClickHouse может сэкономить вам время и ресурсы. Быстрое параллелизированное точное сопоставление и обработка больших наборов данных — это то, в чем силен ClickHouse, поэтому он предназначен для продвинутых пользователей поиска.
ClickHouse — это универсальная платформа для векторного поиска, особенно для больших наборов данных, которым нужна параллельная обработка, и когда вы сочетаете векторный поиск с фильтрацией и агрегацией на основе SQL. Не так хороша, как специализированные векторные базы данных для небольших наборов данных, ограниченных памятью, или сценариев с высоким QPS, но может обрабатывать сложные запросы, включая метаданные, поэтому отлично подходит для разработчиков, которые знают SQL и нуждаются в быстром векторном поиске.
pgvector vs ClickHouse для векторного поиска: в чем разница
При выборе между pgvector и ClickHouse для векторного поиска учитывайте:
Методология поиска
pgvector поддерживает точный и приблизительный поиск ближайших соседей. Он имеет индексацию HNSW и IVFFlat для приблизительного поиска и различные метрики расстояния (евклидово, косинусное, внутреннее произведение). ClickHouse имеет векторный поиск через функции SQL. Точное сопоставление с параллельной обработкой и экспериментальные ANN.
pgvector расширяет PostgreSQL для векторных операций, хранит векторные эмбеддинги в базе данных PostgreSQL. ClickHouse обрабатывает структурированные и полуструктурированные данные, сочетает векторный поиск с фильтрацией по метаданным и агрегацией.
Масштабируемость и производительность
Точный поиск pgvector может быть медленнее на больших наборах данных, но его приблизительная индексация быстрее для больших наборов данных. ClickHouse разработан для наборов данных объемом в несколько ТБ и имеет полностью распараллеленный конвейер запросов. Не ограничен памятью и может обрабатывать большие объемы векторных данных.
Гибкость и настройка
pgvector интегрируется с существующими возможностями PostgreSQL и имеет векторные операции, такие как сложение и вычитание. ClickHouse имеет полную поддержку SQL и может сочетать сопоставление векторов с обычными операциями SQL.
Интеграция и экосистема
pgvector интегрируется с экосистемой PostgreSQL, хорошо подходит для проектов, уже использующих PostgreSQL. ClickHouse — это самостоятельная OLAP-база данных, хорошо подходящая для проектов, которым нужна аналитика в реальном времени наряду с векторным поиском.
Простота использования
pgvector знаком, если вы уже используете PostgreSQL, но требует понимания векторных операций и вариантов индексации. ClickHouse использует синтаксис SQL для векторных операций, но имеет более крутой порог освоения, если вы новичок в OLAP-базах данных.
Стоимость
pgvector может использовать существующую инфраструктуру PostgreSQL, что может снизить затраты, если вы уже используете PostgreSQL. ClickHouse требует отдельной инфраструктуры, но может снизить затраты на хранение благодаря высокой степени сжатия.
Безопасность
pgvector наследует функции безопасности PostgreSQL и получает преимущества от экосистемы безопасности PostgreSQL. ClickHouse имеет встроенные функции безопасности, но требует дополнительной настройки для безопасности корпоративного уровня.
Когда использовать каждый
pgvector — лучший выбор, когда вы уже используете PostgreSQL и хотите добавить векторный поиск к существующей конфигурации реляционной базы данных. Он идеально подходит для проектов, которым нужно интегрировать векторные операции с реляционными данными, особенно с наборами данных среднего размера. pgvector отлично подходит, когда вам нужен точный контроль над векторными операциями и вы хотите использовать экосистему и возможности PostgreSQL.
ClickHouse — лучший выбор для очень больших векторных наборов данных, особенно когда нужно сочетать векторный поиск со сложным SQL и аналитикой в реальном времени. Он лучше всего подходит для проектов с наборами данных объемом в несколько терабайт, которым требуется высокопроизводительная аналитическая обработка и векторный поиск. ClickHouse особенно полезен, когда нужно искать векторы с расширенной фильтрацией по метаданным и агрегацией.
Резюме
pgvector отлично подходит для векторного поиска с PostgreSQL, это знакомая среда для пользователей PostgreSQL и бесшовная интеграция с реляционными данными. ClickHouse отлично подходит для огромных наборов данных, высокопроизводительного векторного поиска и аналитических возможностей. Выбирайте между ними на основе вашего сценария использования, размера данных, существующей инфраструктуры и необходимости сочетать векторный поиск со сложными запросами. Используйте pgvector для проектов на базе PostgreSQL с умеренным объемом данных и ClickHouse для больших аналитических нагрузок с векторным поиском.
Хотя эта статья дает обзор pgvector и ClickHouse, важно оценивать эти базы данных с учетом вашего конкретного сценария использования. Один из инструментов, который может помочь в этом процессе, — VectorDBBench, инструмент бенчмаркинга с открытым исходным кодом, предназначенный для сравнения производительности векторных баз данных. В конечном счете тщательное бенчмаркинг-тестирование на конкретных наборах данных и шаблонах запросов будет необходимо для принятия обоснованного решения между этими двумя мощными, но различными подходами к векторному поиску в распределенных системах баз данных.
Использование open-source VectorDBBench для оценки и сравнения векторных баз данных самостоятельно
VectorDBBench — это инструмент для бенчмаркинга с открытым исходным кодом, предназначенный для пользователей, которым требуются высокопроизводительные системы хранения и извлечения данных, в частности векторные базы данных. Этот инструмент позволяет пользователям тестировать и сравнивать производительность различных систем векторных баз данных, таких как Milvus и Zilliz Cloud (управляемый Milvus), используя собственные наборы данных, и определять наиболее подходящую систему для своих сценариев использования. С помощью VectorDBBench пользователи могут принимать обоснованные решения на основе фактической производительности векторных баз данных, а не полагаться на маркетинговые заявления или отдельные свидетельства.
VectorDBBench написан на Python и распространяется по открытой лицензии MIT, что означает, что любой может свободно использовать, изменять и распространять его. Инструмент активно поддерживается сообществом разработчиков, которые стремятся улучшать его функции и производительность.
Загрузите VectorDBBench из его репозитория GitHub, чтобы воспроизвести результаты наших бенчмарков или получить результаты производительности на собственных наборах данных.
Быстро ознакомьтесь с производительностью популярных векторных баз данных в таблице лидеров VectorDBBench.
Прочитайте следующие блоги, чтобы узнать больше об оценке векторных баз данных.
Дополнительные ресурсы о VectorDB, GenAI и ML
Читать далее

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.
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.


