pgvector против Qdrant: бенчмарк на 100 000 векторов размерности 1536
Machine Learning Mastery опубликовал практический бенчмарк расширения pgvector для Postgres и выделенной векторной базы Qdrant. Оба запускаются в Docker на ноутбуке, получают одни и те же 100 000 нормализованных векторов размерности 1536 и одинаковые параметры индекса HNSW. Главное в методике: m=16, ef_construction=64 и ef_search=64 выставлены одинаково, а запросы идут по 200 свежим векторам, которых нет в датасете. Так сравнение сводится к архитектуре, а не к разным настройкам. Замеряются p50, p95, p99 и QPS. • pgvector 0.8.6 работает с Postgres 13+ и поддерживает пять метрик расстояния • В сравнительный обзор попали Pinecone, Qdrant, Weaviate, Milvus и ChromaDB • Для запуска хватит 8 ГБ RAM и Python 3.10+
AI-обработка оригинала Machine Learning Mastery; редакция Hamidun News
Спор «Postgres с расширением или отдельная векторная база» обычно ведётся на уровне уверенных заявлений. Machine Learning Mastery предложил заменить их замером: pgvector и Qdrant запускаются в Docker на одной машине, получают одинаковые 100 000 векторов размерности 1536 (как у OpenAI text-embedding-3-small) и одинаковые настройки индекса HNSW. Результат читается в четырёх метриках: медианная задержка p50, хвосты p95 и p99, а также число запросов в секунду.
Спор, в котором нет цифр
Типичная история выглядит так. Команда во вторник добавляет pgvector в уже работающий Postgres, эмбеддинги лежат рядом с реляционными данными, а один запрос сразу и фильтрует, и ищет похожее. Через полгода приходит письмо от вендора: пора мигрировать на «настоящую» векторную базу, пока не упёрлись в потолок. Бенчмарка в письме нет, есть только уверенность.
pgvector — open-source-расширение для Postgres, текущая версия 0.8.6, поддерживаются Postgres 13 и новее. Оно добавляет нативный тип vector, точный и приближённый поиск ближайших соседей. Вектор хранится в той же таблице, а при желании и в той же строке, что и описываемая им запись, запрашивается обычным SQL. Отдельного сервиса нет, синхронизировать второй источник данных не нужно, сетевого перехода между реляционной и векторной частью тоже нет. Поддерживаются векторы одинарной и половинной точности, бинарные и разреженные, а также пять функций расстояния: L2, скалярное произведение, косинус, L1 и Хэмминг.
Пять выделенных баз, с которыми сравнивают Postgres
Выделенная векторная база — отдельный сервис со своим процессом и хранилищем, спроектированный под векторный поиск с нуля. Цена такого выбора понятна: новую систему нужно развернуть, мониторить, бэкапить и синхронизировать с источником истины. Автор разбирает пять самых популярных вариантов:
- Pinecone — полностью управляемая облачная база без настройки, рассчитана на корпоративный масштаб при минимуме эксплуатации.
- Qdrant — высокопроизводительная база на Rust, сильна быстрыми запросами со сложной фильтрацией по JSON-payload.
- Weaviate — open-source-система, ориентированная на ИИ, со встроенной векторизацией и гибридным поиском с BM25.
- Milvus — распределённая база с GPU-ускорением для массивных нагрузок в миллиарды векторов.
- ChromaDB — лёгкая встраиваемая база для локального прототипирования и разработки на Python.
Для практического сравнения выбран Qdrant: по нему существует самый подробный и методологически прозрачный публичный бенчмарк против pgvector, на который материал и опирается.
Как устроен честный замер
Postgres 17 с расширением поднимается из образа pgvector/pgvector:pg17, Qdrant — одной командой docker run на портах 6333 и 6334. В обеих системах размерность 1536 и косинусная метрика. Датасет синтетический: 100 000 векторов из нормального распределения с фиксированным seed=42, нормализованных до единичной длины, как это делают реальные модели эмбеддингов. В Qdrant данные заливаются батчами по 1000 точек, в Postgres — через адаптер pgvector-python.
Ключевое решение: индексы идентичны. В pgvector создаётся HNSW с m=16 и ef_construction=64 (его дефолты), в Qdrant задаются те же значения через HnswConfigDiff. Автор прямо пишет, что сравнение при разных параметрах индекса даёт два несопоставимых результата. На стороне запросов hnsw.ef_search также равен 64, лимит выдачи — 10.
Запросы делаются по 200 новым векторам, которых нет в загруженном наборе. Иначе вектор, уже лежащий в индексе, находил бы сам себя на нулевом расстоянии, и замер потерял бы смысл. Время считается через perf_counter, задержки сортируются, p95 и p99 берутся по позициям в отсортированном списке, QPS — как число запросов к общему времени прогона.
Как применить это у себя
Для повторения нужны Docker с Compose, Python 3.10+ и около 8 ГБ свободной памяти. Облачные аккаунты не требуются.
Практическая логика выбора вытекает из самой архитектуры. Если данные и так живут в Postgres, а запрос должен совмещать фильтр по реляционным полям с поиском по сходству, pgvector избавляет от второй системы и синхронизации. Если нужны фильтрация по сложным JSON-полям на высокой скорости, подойдёт Qdrant. Для миллиардных коллекций рассматривают Milvus, для нулевой эксплуатации — Pinecone, для встроенной векторизации и BM25 — Weaviate.
Один совет сверх методики: у случайных нормальных векторов нет кластерной структуры реальных эмбеддингов, а скрипт меряет только задержки. Прежде чем принимать решение о миграции, прогоните тот же тест на собственных эмбеддингах и добавьте проверку recall относительно точного поиска.
- 28 окт. 2026 г.Keystone убрал имя модели из кода: open-source LLM-шлюз добавляет 0,64 мс
- 28 окт. 2026 г.Wired за сутки протестировал 6 ИИ-агентов: Dots лидирует, Gemini Spark провалил обед
- 28 окт. 2026 г.Anthropic превращает Claude Code в платформу: Claude Mods переворачивают обвязку агента
- 28 окт. 2026 г.Liquid AI выпустила LFM2.5-24B-A2B: агент с 2B активных параметров
Вопросы и ответы по материалу
Что известно по теме: спор, в котором нет цифр?
Типичная история выглядит так. Команда во вторник добавляет pgvector в уже работающий Postgres, эмбеддинги лежат рядом с реляционными данными, а один запрос сразу и фильтрует, и ищет похожее. Через полгода приходит письмо от вендора: пора мигрировать на «настоящую» векторную базу, пока не упёрлись в потолок. Бенчмарка в письме нет, есть только уверенность. pgvector — open-source-расширение для Postgres, текущая версия 0.8.6, поддерживаются Postgres 13 и новее. Оно добавляет нативный тип vector, точный и приближённый поиск ближайших соседей. Вектор хранится в той же таблице,
Что известно по теме: пять выделенных баз, с которыми сравнивают Postgres?
Выделенная векторная база — отдельный сервис со своим процессом и хранилищем, спроектированный под векторный поиск с нуля. Цена такого выбора понятна: новую систему нужно развернуть, мониторить, бэкапить и синхронизировать с источником истины. Автор разбирает пять самых популярных вариантов: Pinecone — полностью управляемая облачная база без настройки, рассчитана на корпоративный масштаб при минимуме эксплуатации. Qdrant — высокопроизводительная база на Rust, сильна быстрыми запросами со сложной фильтрацией по JSON-payload. Weaviate — open-source-система, ориентированная на
Что известно по теме: как устроен честный замер?
Postgres 17 с расширением поднимается из образа pgvector/pgvector:pg17, Qdrant — одной командой docker run на портах 6333 и 6334. В обеих системах размерность 1536 и косинусная метрика. Датасет синтетический: 100 000 векторов из нормального распределения с фиксированным seed=42, нормализованных до единичной длины, как это делают реальные модели эмбеддингов. В Qdrant данные заливаются батчами по 1000 точек, в Postgres — через адаптер pgvector-python. Ключевое решение: индексы идентичны. В pgvector создаётся HNSW с m=16 и ef_construction=64 (его дефолты), в Qdrant задаются те
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.