В этом году мы поставили векторные базы в шесть проектов. Три на pgvector, два на Qdrant, один на Pinecone. Делимся, как мы выбираем и где границы каждой технологии.
pgvector
Расширение для Postgres. Главный плюс - нет отдельной инфраструктуры. Если у клиента уже есть Postgres (а он почти всегда есть), добавление векторов - это CREATE EXTENSION и ALTER TABLE.
На объёмах до 5 миллионов векторов с HNSW-индексом - тянет нормально. Latency по top-10 - 30–80мс. Дальше начинает деградировать. Бэкап и репликация - стандартные Postgres-инструменты, плюс к карме.
Qdrant
Open-source vector DB на Rust. Быстрая, с понятным API, удобной фильтрацией по метаданным. Self-hosted - относительно простой деплой через Docker. Cloud-вариант есть, но мы используем self-hosted.
Берём, когда: векторов больше 5 миллионов, нужна сложная фильтрация (например, «похожие документы, но только за последний месяц от пользователя X»), либо когда хочется лёгкую миграцию между провайдерами.
Pinecone
Managed-сервис, никакой эксплуатации. Берём, когда команда не хочет возиться с инфраструктурой и готова платить от $70/мес за стартовый pod. На больших объёмах - дорого.
Сравнение на одном датасете
Прогнали 2 миллиона embeddings (768-мерных) через все три. Запрос top-10 с фильтром по двум полям метаданных:
- pgvector + HNSW: p50 - 42мс, p99 - 180мс.
- Qdrant: p50 - 18мс, p99 - 60мс.
- Pinecone (s1.x1): p50 - 70мс (плюс сетевая задержка ~30мс), p99 - 220мс.
Как мы выбираем
- До 5М векторов и Postgres уже есть → pgvector.
- 5М+ векторов или важна низкая latency → Qdrant.
- Команда без DevOps, нужно «работало вчера» → Pinecone.
- Очень нишевые требования (геопоиск, фильтры по сложным условиям) → Qdrant выигрывает по фичам.