Зачем нужна векторная база данных
Каждый RAG-пайплайн, семантический поиск или рекомендательная система работает с эмбеддингами — числовыми векторами, которые кодируют смысл текста, изображения или аудио. Обычная PostgreSQL с B-tree индексом не умеет искать «ближайшие по смыслу» записи — для этого нужна векторная база данных.
Задача векторной БД — быстро находить K ближайших соседей (Approximate Nearest Neighbor, ANN) среди миллионов или миллиардов векторов. Разница между решениями — в скорости, точности, стоимости и операционной сложности.
Участники сравнения
| База | Тип | Лицензия | Год запуска |
|---|---|---|---|
| Qdrant | Специализированная векторная БД | Apache 2.0 | 2021 |
| Pinecone | Managed cloud vector DB | Проприетарная | 2019 |
| ChromaDB | Встраиваемая векторная БД | Apache 2.0 | 2022 |
| pgvector | Расширение PostgreSQL | PostgreSQL License | 2021 |
| Weaviate | Специализированная векторная БД | BSD-3 | 2019 |
| Milvus | Распределённая векторная БД | Apache 2.0 | 2019 |
Qdrant
Написан на Rust. Один из самых быстрых open-source решений. Активное сообщество, частые релизы.
Архитектура
- Хранение: сегментная архитектура, данные на диске с memory-mapped файлами
- Индексы: HNSW (основной), опционально — квантизация (scalar, product, binary)
- Фильтрация: payload-индексы, полнотекстовый поиск, geo-фильтры
- Мультитенантность: коллекции + payload-based партиционирование
Ключевые возможности
| Возможность | Поддержка |
|---|---|
| Self-hosted | Да (Docker, K8s, бинарник) |
| Managed cloud | Да (Qdrant Cloud) |
| Размерность вектора | До 65535 |
| Фильтрация по метаданным | Полная (числа, строки, geo, datetime) |
| Sparse vectors | Да |
| Multi-vector (named vectors) | Да |
| Квантизация | Scalar, Product, Binary |
| Snapshot / backup | Да |
| REST + gRPC API | Да |
| Кластеризация | Да (шардирование + репликация) |
Когда выбирать Qdrant
- RAG-системы с продвинутой фильтрацией (по дате, категории, клиенту)
- Self-hosted деплой в российских облаках (Yandex Cloud, Selectel)
- Проекты, где важна скорость и контроль над инфраструктурой
- Мультитенантные SaaS-решения
Pinecone
Полностью managed облачная БД. Не требует управления инфраструктурой. Самый простой старт.
Архитектура
- Хранение: serverless (pod-based или serverless architecture)
- Индексы: проприетарные (основаны на ANN)
- Фильтрация: metadata filtering
- Мультитенантность: namespaces внутри индекса
Ключевые возможности
| Возможность | Поддержка |
|---|---|
| Self-hosted | Нет |
| Managed cloud | Да (AWS, GCP, Azure) |
| Размерность вектора | До 20000 |
| Фильтрация по метаданным | Да (числа, строки, списки) |
| Sparse vectors | Да |
| Multi-vector | Нет |
| Квантизация | Автоматическая |
| Snapshot / backup | Да (collections) |
| REST API | Да |
| Кластеризация | Автоматическая (serverless) |
Когда выбирать Pinecone
- Быстрый PoC без DevOps-ресурсов
- Команда без опыта в инфраструктуре
- Проект на AWS/GCP, где vendor lock-in не критичен
- Бюджет позволяет managed-решение
Ограничения
- Нет self-hosted варианта — данные только в облаке Pinecone
- Серверы только за рубежом — вопрос 152-ФЗ для персональных данных
- Стоимость растёт нелинейно с объёмом данных
ChromaDB
Максимально простая встраиваемая БД. Идеальна для прототипов и локальной разработки.
Архитектура
- Хранение: SQLite + DuckDB (in-process)
- Индексы: HNSW (hnswlib)
- Фильтрация: metadata filtering (where clause)
- Мультитенантность: коллекции
Ключевые возможности
| Возможность | Поддержка |
|---|---|
| Self-hosted | Да (pip install, Docker) |
| Managed cloud | Нет (в разработке) |
| Размерность вектора | Без ограничений |
| Фильтрация по метаданным | Базовая (where, where_document) |
| Sparse vectors | Нет |
| Multi-vector | Нет |
| Квантизация | Нет |
| Snapshot / backup | Persist to disk |
| REST API | Да (client-server mode) |
| Кластеризация | Нет |
Когда выбирать ChromaDB
- Прототипирование и локальная разработка
- Jupyter-ноутбуки и эксперименты
- Маленькие датасеты (до 100К векторов)
- Проекты, где нужен минимальный порог входа
Ограничения
- Не масштабируется горизонтально
- Нет репликации и high availability
- Производительность падает на больших объёмах
pgvector
Расширение для PostgreSQL. Добавляет тип данных vector и операторы поиска по косинусному расстоянию.
Архитектура
- Хранение: таблицы PostgreSQL
- Индексы: IVFFlat, HNSW (с версии 0.5.0)
- Фильтрация: весь SQL (JOIN, WHERE, GROUP BY, подзапросы)
- Мультитенантность: стандартная PostgreSQL (schemas, RLS)
Ключевые возможности
| Возможность | Поддержка |
|---|---|
| Self-hosted | Да (расширение PostgreSQL) |
| Managed cloud | Supabase, Neon, AWS RDS, Yandex Managed PostgreSQL |
| Размерность вектора | До 2000 (HNSW) / 16000 (без индекса) |
| Фильтрация по метаданным | Полная SQL (самая мощная) |
| Sparse vectors | Да (sparsevec, с версии 0.7.0) |
| Multi-vector | Через дополнительные колонки |
| Квантизация | halfvec (с версии 0.7.0) |
| Snapshot / backup | pg_dump, WAL-архивация |
| REST API | Через PostgREST / Supabase |
| Кластеризация | PostgreSQL стриминг-репликация |
Когда выбирать pgvector
- Уже используете PostgreSQL в проекте
- Нужны сложные SQL-запросы с JOIN по реляционным данным + векторный поиск
- Хотите один инструмент для всех данных (не плодить сервисы)
- Деплой на Supabase или Yandex Managed PostgreSQL
Ограничения
- Производительность ниже специализированных решений на больших объёмах (от 10M+ векторов)
- Ограничение размерности вектора (2000 для HNSW)
- Нет продвинутой квантизации
Weaviate
Специализированная БД с акцентом на AI-native workflow. Встроенные модули для векторизации.
Архитектура
- Хранение: кастомное LSM-дерево
- Индексы: HNSW с flat-индексом для фильтрации
- Фильтрация: GraphQL-подобный язык запросов
- Мультитенантность: встроенная (native multi-tenancy)
Ключевые возможности
| Возможность | Поддержка |
|---|---|
| Self-hosted | Да (Docker, K8s, Embedded) |
| Managed cloud | Да (Weaviate Cloud) |
| Размерность вектора | Без ограничений |
| Фильтрация по метаданным | Полная (GraphQL-подобный API) |
| Sparse vectors | Да (BM25) |
| Multi-vector | Да (named vectors) |
| Квантизация | PQ, BQ, SQ |
| Встроенная векторизация | Да (OpenAI, Cohere, Hugging Face модули) |
| REST + GraphQL API | Да |
| Кластеризация | Да (репликация + шардирование) |
Когда выбирать Weaviate
- Хотите встроенную векторизацию без внешнего сервиса эмбеддингов
- GraphQL-подобный API ближе к вашему стеку
- Нужна нативная мультитенантность для SaaS
- Hybrid search (BM25 + vector) из коробки
Milvus
Распределённая векторная БД, спроектированная для масштабов enterprise. Бэкенд поиска у Alibaba, Shopee, Xiaomi.
Архитектура
- Хранение: разделение storage и compute, поддержка S3/MinIO
- Индексы: IVF_FLAT, IVF_SQ8, IVF_PQ, HNSW, SCANN, DiskANN
- Фильтрация: boolean expressions
- Мультитенантность: partitions + resource groups
Ключевые возможности
| Возможность | Поддержка |
|---|---|
| Self-hosted | Да (Docker, K8s, Milvus Lite) |
| Managed cloud | Да (Zilliz Cloud) |
| Размерность вектора | До 32768 |
| Фильтрация по метаданным | Да (boolean expressions) |
| Sparse vectors | Да |
| Multi-vector | Да |
| Квантизация | SQ8, PQ, SCANN |
| GPU-ускорение | Да (CAGRA, GPU-IVF) |
| REST + gRPC API | Да |
| Кластеризация | Полная (disaggregated architecture) |
Когда выбирать Milvus
- Масштаб от 100M+ векторов
- Нужна GPU-ускоренная индексация
- Enterprise с выделенной инфраструктурной командой
- Распределённые системы с разделением storage/compute
Ограничения
- Сложная инфраструктура (etcd + MinIO + Pulsar/Kafka)
- Высокий порог входа для малых проектов
- Milvus Lite (упрощённая версия) ограничена для продакшена
Сводное сравнение
Производительность (ANN-поиск)
| База | 1M векторов (QPS) | 10M векторов (QPS) | Латентность p99 |
|---|---|---|---|
| Qdrant | 5000–8000 | 3000–5000 | 5–15 мс |
| Pinecone | 3000–5000 | 2000–4000 | 10–30 мс |
| ChromaDB | 500–1000 | Не рекомендуется | 50–200 мс |
| pgvector | 1000–3000 | 500–1500 | 10–50 мс |
| Weaviate | 3000–6000 | 2000–4000 | 5–20 мс |
| Milvus | 4000–7000 | 5000–10000 | 5–15 мс |
Бенчмарки зависят от размерности вектора, типа индекса, фильтрации, железа. Цифры — ориентировочные для 768-мерных векторов на 8-ядерном сервере.
Стоимость (1M векторов, 768 dim, managed)
| База | Managed | Self-hosted (ориентир) |
|---|---|---|
| Qdrant | $65/мес (Qdrant Cloud) | $30–50/мес (4 CPU, 8 GB RAM) |
| Pinecone | $70/мес (serverless) | Недоступно |
| ChromaDB | Нет managed | $10–20/мес (достаточно малого сервера) |
| pgvector | $25/мес (Supabase Pro) | $15–30/мес (существующий PostgreSQL) |
| Weaviate | $25–50/мес (Weaviate Cloud) | $30–50/мес (4 CPU, 8 GB RAM) |
| Milvus | $100+/мес (Zilliz Cloud) | $80–150/мес (сложная инфраструктура) |
Экосистема и интеграции
| База | LangChain | LlamaIndex | Haystack | Python SDK | JS/TS SDK |
|---|---|---|---|---|---|
| Qdrant | Да | Да | Да | Да | Да |
| Pinecone | Да | Да | Да | Да | Да |
| ChromaDB | Да | Да | Да | Да | Да |
| pgvector | Да | Да | Да | Да (psycopg2) | Да (pg) |
| Weaviate | Да | Да | Да | Да | Да |
| Milvus | Да | Да | Да | Да (pymilvus) | Да |
Все участники хорошо интегрируются с основными AI-фреймворками. Различия — в глубине интеграции и актуальности документации.
Российские облака и 152-ФЗ
| База | Yandex Cloud | Selectel | VK Cloud | Деплой в РФ |
|---|---|---|---|---|
| Qdrant | Docker/K8s на Compute Cloud | Docker на серверах | Docker/K8s | Полный контроль |
| Pinecone | Нет | Нет | Нет | Невозможно |
| ChromaDB | Docker на Compute Cloud | Docker на серверах | Docker | Полный контроль |
| pgvector | Yandex Managed PostgreSQL (встроенно) | Managed PostgreSQL | Managed PostgreSQL | Нативная поддержка |
| Weaviate | Docker/K8s | Docker | Docker/K8s | Полный контроль |
| Milvus | Docker/K8s (сложно) | Docker/K8s | Docker/K8s | Возможно, но сложно |
Для проектов с требованиями 152-ФЗ: pgvector (через Yandex Managed PostgreSQL) — самый простой путь. Qdrant — через Docker на любом российском облаке. Pinecone — невозможно разместить в РФ.
Матрица выбора: какая база для какого проекта
| Сценарий | Рекомендация | Почему |
|---|---|---|
| PoC / прототип RAG | ChromaDB | Нулевой порог входа, pip install |
| RAG-продакшен (до 5M документов) | Qdrant или pgvector | Баланс производительности и простоты |
| RAG-продакшен с SQL-данными | pgvector | Один PostgreSQL для всего |
| SaaS с мультитенантностью | Qdrant или Weaviate | Нативная изоляция данных |
| Enterprise (100M+ документов) | Milvus | Горизонтальное масштабирование |
| Максимально быстрый старт (cloud) | Pinecone | Zero DevOps |
| 152-ФЗ / данные в РФ | pgvector (Yandex MDB) или Qdrant | Self-hosted в российском ДЦ |
| Hybrid search (BM25 + vector) | Weaviate или Qdrant | Встроенная поддержка |
| Минимальный бюджет | pgvector | Используете существующий PostgreSQL |
| Мультимодальный поиск | Weaviate или Qdrant | Поддержка multi-vector |
Типичные ошибки при выборе
-
Выбирать по бенчмаркам, игнорируя операционную сложность. Milvus быстрее на 100M+ векторов, но его инфраструктура (etcd + MinIO + Pulsar) требует выделенной DevOps-команды. Для 1M векторов pgvector или Qdrant проще в 10 раз.
-
Начинать сразу с managed cloud. Для PoC ChromaDB локально или pgvector на существующем PostgreSQL — бесплатно и за 30 минут. Managed cloud имеет смысл, когда пошёл трафик.
-
Игнорировать фильтрацию. Если RAG-система фильтрует по дате, клиенту, категории — производительность фильтрации важнее чистого ANN-поиска. pgvector с SQL и Qdrant с payload-индексами здесь лидируют.
-
Не думать про 152-ФЗ. Pinecone хранит данные за рубежом. Для проектов с персональными данными это не вариант. Решение: pgvector на Yandex Managed PostgreSQL или Qdrant на российском VPS.
-
Переоптимизировать на старте. ChromaDB с 10К документов работает моментально. Квантизация, шардирование, репликация нужны при переходе на сотни тысяч документов — не раньше.
Миграция между базами
Все решения хранят одни и те же данные: вектор + метаданные + ID. Миграция сводится к экспорту и импорту. В LangChain замена vectorstore — одна строка кода:
# Было
vectorstore = Chroma.from_documents(docs, embeddings)
# Стало
vectorstore = QdrantVectorStore.from_documents(docs, embeddings)
Основная работа при миграции — не код, а переиндексация данных. Для 1M документов это 2–4 часа (зависит от скорости эмбеддинг-модели).
Что дальше
Выбор векторной БД — это баланс между производительностью, стоимостью, операционной сложностью и требованиями к данным. Начинайте с простого (pgvector или ChromaDB), мигрируйте на Qdrant/Weaviate/Milvus, когда упрётесь в ограничения.
Строите RAG-систему или семантический поиск? Мы в Новаком проектируем и разрабатываем AI-решения с правильным выбором инфраструктуры.
- Обсудить проект — бесплатная консультация 30 минут, подберём стек под вашу задачу
- AI и IoT разработка — от архитектуры до продакшена