中文翻译暂不可用,显示俄语原文。

Какую векторную БД вы выберете для production-системы с >1 млн векторов?

Краткий тезис

Для production-системы с более чем 1 миллионом векторов выбор векторной БД — это компромисс между производительностью, масштабируемостью, удобством администрирования и функциональностью. Qdrant — лучший выбор для большинства production-сценариев благодаря гибридному поиску, фильтрации и self-hosted опции. Pinecone подходит, если нет DevOPS ресурсов. Milvus — для экстремальных масштабов (>100 млн векторов). Weaviate — для мультимодальных задач. Chroma — только для прототипов.


1. Термин: Векторная БД (Vector Database)

Что это Специализированная база данных, оптимизированная для хранения и поиска векторов (эмбеддингов) с использованием алгоритмов приближённого поиска ближайших соседей (ANN — Approximate Nearest Neighbors).

Чем отличается от обычной БД

Обычная БД (PostgreSQL, MySQL)Векторная БД (Qdrant, Pinecone, Milvus)
Поиск по точным совпадениям (WHERE x = 5)Поиск по семантической близости (найди похожие)
Индексы: B-tree, HashИндексы: HNSW, IVF, PQ
Сложность поиска: O(log n)Сложность поиска: O(log n) для ANN, но приближённо
Хранит строки, числа, датыХранит векторы (массивы чисел) + метаданные

Термин «ANN (Approximate Nearest Neighbors Приближённый поиск ближайших соседей — жертвует точностью ради скорости. Вместо 100% точности даёт 95-99% за 10-100x ускорение. Для RAG это приемлемо.

Термин «HNSW (Hierarchical Navigable Small World Самый популярный ANN алгоритм. Строит многослойный граф, где на верхних слоях длинные прыжки (быстрый поиск), на нижних — точный. Используется в Qdrant, Pinecone, Weaviate.

Термин «IVF (Inverted File Index Кластеризует векторы, ищет только в ближайших кластерах. Быстрее HNSW при очень больших масштабах (>50 млн), но менее точный.

Термин «PQ (Product Quantization Сжатие векторов в 8-32 раза. Хранится не сам вектор, а его код (несколько байт). Поиск идёт по сжатым векторам, точность падает, но память экономится.


2. Ключевые критерии выбора для >1 млн векторов

К CounterПочему важноЧто проверять
Производительность (QPS — queries per secondПри 1 млн векторов и 1000 RPS, БД должна отвечать < 100 мсlatency p95, throughput
Точность (Recall@kСколько релевантных векторов из топ-k нашлосьrecall@10 > 0.95 для production
Фильтрация по метаданнымПоиск только в определённой категории («документы за 2025 год»)pre-filter vs post-filter
Гибридный поиск (vector + keywordНужен для точных терминов (номера заказов, ID)Поддержка BM25 + vector
Масштабируемость (horizontal scaling1 млн сегодня, 10 млн завтраSharding, replication
Self-hosted vs ManagedКонтроль данных vs экономия DevOPSCost, compliance
СтоимостьManaged дороже за 1 млн векторов$/месяц
ЭкосистемаИнтеграция с LangChain, LlamaIndex, вашим стекомНаличие SDK

Термин «QPS (Queries Per Second Количество поисковых запросов, которые БД может обработать за секунду. Для production RAG: 100-1000 QPS типично.

Термин «Recall@k» Доля релевантных векторов, попавших в топ-k результатов. Например, recall@10 = 0.95 означает, что среди 10 найденных результатов есть 95% всех релевантных.

Термин «Pre-filter vs Post-filter»

  • Pre-filter сначала отфильтровать по метаданным (только документы за 2025), потом векторный поиск. Точнее, но может не найти ничего.
  • Post-filter сначала векторный поиск по всем, потом отфильтровать. Быстрее, но может потерять релевантные (если лучший вектор не попал в топ-k из-за фильтра).

3. Сравнение популярных векторных БД

3.1 Qdrant

Что это Open-source векторная БД на Rust, оптимизированная для production. Лучший баланс функций и производительности.

ХарактеристикаЗначение
ТипSelf-hosted (open-source) или Cloud (managed)
ЯзыкRust (быстрый, memory-safe)
ИндексыHNSW, IVF-PQ
Гибридный поиск✅ Да (vector + BM25)
Фильтрация✅ Pre-filter с индексами на метаданные
МасштабированиеSharding, replication (horizontal)
gRPC✅ Да (быстрее REST)
LangChain интеграция✅ Отличная
Self-hosted costБесплатно (ваши ресурсы)
Cloud cost$0.07/час + $0.15/GB (≈ $70/мес за 1 млн векторов 768d)

Термин «gRPC (gRPC Remote Procedure Call Высокопроизводительный протокол от Google. В 5-10x быстрее REST/HTTP для векторов.

Плюсы

  • Лучший гибридный поиск из коробки
  • Отличная фильтрация по метаданным с индексами
  • gRPC для низкой задержки
  • Написан на Rust (нет GC, предсказуемая latency)
  • Простая настройка (один Docker контейнер)

Минусы

  • Sharding сложнее, чем в Milvus (требует планирования)
  • Меньше функций для экстремального масштаба (100M+)

Когда выбрать Лучший выбор для большинства production RAG-систем до 50 млн векторов Гибридный поиск, хорошая фильтрация, self-hosted опция, отличная производительность.


3.2 Pinecone

Что это Managed векторная БД (no-ops). Самый простой старт, но дорогой.

ХарактеристикаЗначение
ТипManaged only (нет self-hosted)
ИндексыHNSW (собственная реализация)
Гибридный поиск❌ Нет (только vector)
ФильтрацияPost-filter с индексами
МасштабированиеАвтоматическое (managed)
gRPCREST only
LangChain интеграция✅ Отличная
Cost$0.10/час + $0.20/GB (≈ $150/мес за 1 млн векторов 768d)

Плюсы

  • Zero DevOps — не нужно настраивать сервера
  • Автоматическое масштабирование
  • Отличная документация
  • Быстрый старт (5 минут до первого индекса)

Минусы

  • Очень дорого при масштабе (> 1 млн векторов)
  • Нет гибридного поиска
  • Нет self-hosted (vendor lock-in)
  • REST медленнее gRPC

Когда выбрать Если у вас нет DevOPS и готовы платить Только для небольших объёмов (< 500k векторов) или POC.

Термин «Vendor lock-in» Зависимость от одного поставщика. Если Pinecone поднимет цены, вы не сможете легко перейти на другую БД.


3.3 Milvus / Zilliz

Что это Самая мощная open-source векторная БД (Cloud — Zilliz). Для экстремальных масштабов.

ХарактеристикаЗначение
ТипSelf-hosted (open-source) или Zilliz Cloud
ЯзыкGo + C++
ИндексыHNSW, IVF, IVF-PQ, DiskANN, много других
Гибридный поиск✅ Да (через BM25 + vector)
Фильтрация✅ Pre-filter + битовые маски
МасштабированиеCloud-native, sharding out-of-the-box до 100+ нод
gRPC✅ Да
LangChain интеграция✅ Хорошая
Self-hosted costБесплатно, но сложная архитектура (K8s + etcd + MinIO)
Zilliz Cloud cost≈ $200/мес за 1 млн векторов (дорожко)

Плюсы

  • Экстремальная масштабируемость (миллиарды векторов)
  • Много типов индексов (можно выбрать под задачу)
  • Cloud-native архитектура (K8s)
  • DiskANN для векторов на диске (экономия RAM)

Минусы

  • Очень сложная архитектура для self-hosted (K8s + etcd + MinIO + Pulsar)
  • Тяжёлый (рекомендует 8-16 CPU, 32-64GB RAM)
  • Избыточен для 1 млн векторов

Термин «DiskANN» ANN-алгоритм от Microsoft, где векторы хранятся на диске (SSD/NVMe), а в памяти только индексы. Позволяет хранить миллиарды векторов без огромных RAM.

Когда выбрать Для экстремальных масштабов (> 50-100 млн векторов Если вы строите Google-масштабную систему.


3.4 Weaviate

Что это Open-source векторная БД с фокусом на мультимодальность (текст + изображения).

ХарактеристикаЗначение
ТипSelf-hosted (open-source) или Cloud
ЯзыкGo
ИндексыHNSW
Гибридный поиск✅ Да (BM25 + vector)
Фильтрация✅ Pre-filter
МодулиМодули для изображений (CLIP), видео, аудио
LangChain интеграция✅ Хорошая
Cost (cloud≈ $100/мес за 1 млн векторов

Термин «Мультимодальность» Способность работать с разными типами данных (текст, изображения, аудио) в едином векторном пространстве. CLIP — модель, которая умеет эмбеддить и текст, и картинки в одинаковые векторы.

Плюсы

  • Лучшая мультимодальная поддержка
  • Модули для CLIP, image2vec, video
  • Хороший гибридный поиск

Минусы

  • Медленнее Qdrant на чисто текстовых задачах
  • Меньше индексных опций (только HNSW)
  • Сложнее в настройке, чем Qdrant

Когда выбрать Если ваш RAG работает с изображениями (поиск картинок по тексту или наоборот).


3.5 Chroma

Что это Простейшая векторная БД для прототипирования.

ХарактеристикаЗначение
ТипEmbedded (in-memory), не предназначена для production
ИндексыHNSW
Гибридный поиск❌ Нет
Фильтрация❌ Ограниченная
МасштабированиеНет (in-memory)
LangChain интеграция✅ Отличная (это стандарт для POC)

Плюсы

  • Очень простая (pip install chromadb)
  • Не требует сервера (всё в памяти)
  • Идеальна для прототипов

Минусы

  • Всё в памяти (не для 1 млн векторов)
  • Нет гибридного поиска
  • Нет фильтрации по метаданным
  • Нет горизонтального масштабирования
  • Не для production

Когда выбрать Только для локальных прототипов и POC Никогда для production с >1 млн векторов.

Термин «Embedded database» База данных, которая работает внутри вашего приложения, а не как отдельный сервер. SQLite — пример. Chroma — embedded векторная БД.


4. Сводная таблица для >1 млн векторов

ХарактеристикаQdrantPineconeMilvusWeaviateChroma
Self-hosted✅ Да❌ Нет✅ Да✅ Да✅ Да
Managed✅ (Zilliz)
Гибридный поиск✅✅ Лучший
Фильтрация✅✅✅✅
gRPC
Масштабдо 50Mдо 10Mдо 1Bдо 50Mдо 1M
Простота настройки✅✅✅✅ (managed)❌ (сложно)✅✅
Стоимость self-hostedНизкаяВысокая (K8s)СредняяНизкая
Стоимость managed (1M векторов/мес~$70~$150~$200~$100
РекомендацияТоп для productionДля no-opsДля 100M+ векторовДля изображенийТолько прототипы

5. Практический выбор: что рекомендую для вашего сценария

Ваш сценарий >1 млн векторов, production RAG, разные типы документов, нужна фильтрация по метаданным (дата, автор, тип документа), гибридный поиск (vector + keyword).

Моя рекомендация Qdrant self-hosted

Почему

  1. Гибридный поиск из коробки — не нужно настраивать отдельный Elasticsearch для BM25

  2. Отличная фильтрация — индексы на метаданные, pre-filter

  3. gRPC — низкая latency для 1000+ RPS

  4. Self-hosted — контроль данных и cost ($70 против $150 у Pinecone)

  5. Простота — один Docker контейнер на 4-8GB RAM для 1 млн векторов

  6. Rust — нет GC, предсказуемая задержка

  7. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]]. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]]. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]] млн векторов|Конфигурация для 1 млн векторов]]

docker run -p 6333:6333 qdrant/qdrant
# Память: 4-8GB RAM
# Диск: 2GB для векторов (768d, FP32)

Альтернативы

  • Нет DevOPS → Pinecone (но платите $150/мес и теряете гибридный поиск)
  • 50 млн векторов → Milvus (но архитектура сложная)

  • Изображения + текст → Weaviate
  • Прототип → Chroma (in-memory, потом миграция на Qdrant)

6. Пет-проект для закрепления

Задача Развернуть Qdrant, загрузить 1 млн синтетических векторов, сравнить производительность с Chroma.

Инструменты Docker, Python, Qdrant, Chroma, Faker (для синтетических данных)

Шаги

  1. Сгенерировать 1 млн случайных векторов размерности 768 (как BGE-m3)
  2. Развернуть Qdrant: docker run -p 6333:6333 qdrant/qdrant
  3. Загрузить векторы батчами по 1000
  4. Замерить QPS при разных batch size
  5. То же самое для Chroma (in-memory)
  6. Сравнить:
    • Время загрузки 1 млн векторов
    • Потребление RAM
    • QPS (запросов в секунду)
    • Latency p95

Ожидаемый результат Qdrant загрузит данные за 5-10 минут (Chroma — за 2 минуты, но съест 8GB RAM). Qdrant даст 200-500 QPS, Chroma — 50-100 QPS. Chroma упадет при >500k векторов.


Связь с другими вопросами

ВопросТема
1RAG архитектура (где используется векторная БД)
6Гибридный поиск (BM25 + vector)
12Фильтрация по метаданным в векторной БД
13Эффективная загрузка 1000+ документов
77Оптимизация embedding генерации для больших объёмов
201-220Inference & serving (для LLM, а не для vector DB)
221-235ANN internals (HNSW, IVF, PQ глубоко)

4. Какую векторную БД вы выберете для production-системы с больше 1 млн векторов|4. Какую векторную БД вы выберете для production-системы с больше 1 млн векторов|4. Какую векторную БД вы выберете для production-системы с больше 1 млн векторов|4 полностью разобран. Переходим к вопросу 5, когда будете готовы|Вопрос 4 полностью разобран. Переходим к вопросу 5, когда будете готовы]]


Навигация