Сравнение векторных баз данных 2026: pgvector, Qdrant, Weaviate, Milvus и Pinecone

Сравнение pgvector, Qdrant, Weaviate, Milvus и Pinecone в 2026 году: бенчмарки QPS, цены, фильтрация, квантизация и понятная схема выбора векторной БД для RAG-проектов.

Векторные БД 2026: Qdrant vs Pinecone

Обновлено: 2 июня 2026

Векторная база данных, это специализированное хранилище, оптимизированное для индексации и поиска эмбеддингов по приближённому ближайшему соседу (ANN). В 2026 году пять решений доминируют на рынке: pgvector (расширение PostgreSQL), Qdrant, Weaviate, Milvus и Pinecone. Если коротко: для прототипов и стеков с PostgreSQL берите pgvector; для self-hosted продакшна с миллиардами векторов подойдут Milvus или Qdrant; для управляемого SaaS без забот об инфраструктуре, Pinecone.

  • pgvector 0.8 в 2026 году поддерживает HNSW, бинарную квантизацию и iterative scan: это самый простой способ добавить векторный поиск в существующее PostgreSQL-приложение.
  • Qdrant 1.12+ и Milvus 2.5 показывают лучшую пропускную способность в open-source, особенно при работе с метаданными и фильтрами высокой кардинальности.
  • Weaviate уникален встроенной модульной архитектурой векторизации и нативной поддержкой гибридного поиска BM25 + dense.
  • Pinecone serverless снизил порог входа: плата за чтения/записи вместо постоянных подов, но vendor lock-in и стоимость на больших объёмах остаются проблемой.
  • Бинарная и скалярная квантизация уменьшают объём индекса в 4–32 раза при потере точности менее 2%, must-have для production-RAG.
  • Для большинства команд правильный выбор сводится к простой схеме: pgvector до 5–10 млн векторов, Qdrant или Milvus выше.

Что такое векторная база данных и зачем она нужна

Векторная база данных хранит эмбеддинги, то есть числовые представления текста, изображений или аудио, и умеет быстро находить ближайшие по косинусной близости, скалярному произведению или евклидову расстоянию. В отличие от классических СУБД, где работают B-tree индексы, здесь используются специализированные структуры: HNSW (Hierarchical Navigable Small World), IVF, DiskANN, PQ. Их задача проста на словах и сложна на практике: найти приближённого ближайшего соседа за миллисекунды на коллекции в десятки миллионов векторов.

В 2026 году векторный поиск перестал быть нишей RAG-приложений. Его используют для семантической дедупликации логов, рекомендательных систем, мультимодального поиска по продуктам и даже для маршрутизации запросов между LLM-агентами. Если вы ещё не знакомы с базовой архитектурой, начните с нашего руководства по RAG-пайплайнам от А до Я, там подробно разобрано, как эмбеддинги попадают в индекс.

Честно говоря, я долго недооценивал важность фильтрации по метаданным. На одном из проектов мы получили p95 в 400 мс именно потому, что фильтр применялся пост-обработкой после top-k. Ключевые отличия векторной БД от классической: поддержка ANN-индексов с настраиваемыми компромиссами «скорость/точность» (recall@k), нативные операторы расстояния и, что важнее всего в 2026 году, фильтрация по метаданным внутри поиска, а не пост-фильтрация после top-k.

Сравнительная таблица: pgvector vs Qdrant vs Weaviate vs Milvus vs Pinecone

Ниже краткое сравнение по ключевым параметрам, которые волнуют команды при выборе векторной БД для production-проекта.

ПараметрpgvectorQdrantWeaviateMilvusPinecone
ЛицензияPostgreSQLApache 2.0BSD-3Apache 2.0Проприетарная SaaS
Язык движкаCRustGoC++/GoЗакрыто
ИндексыHNSW, IVFFlatHNSW + квантизацияHNSW, FlatHNSW, IVF, DiskANN, GPUСобственный (serverless)
Гибридный поискТребует tsvectorBM25 встроен (1.10+)Нативный BM25 + denseВстроен (2.4+)Sparse-dense (2024+)
ФильтрацияSQL WHEREБогатая, payload-индексыGraphQL whereBoolean expressionsMetadata filter
ДеплойВ любой PostgresSelf-host / CloudSelf-host / CloudSelf-host / Zilliz CloudТолько SaaS
Цена (1М векторов 1536d)≈$15/мес VPS≈$25/мес Cloud≈$25/мес Cloud≈$60/мес Zillizот $50/мес serverless
Лучший use caseУже есть PostgresСложные фильтрыMulti-modal RAGМиллиарды векторовZero-ops стартапы

pgvector: векторный поиск внутри PostgreSQL

pgvector, это расширение PostgreSQL, которое добавляет тип vector и операторы расстояния <-> (L2), <#> (inner product), <=> (cosine). В версии 0.7 появилась бинарная квантизация и halfvec (float16), а в 0.8 завезли iterative index scan, который наконец решил классическую проблему: recall падает, если фильтр отсекает большую часть кандидатов.

Главное преимущество pgvector в том, что он работает там, где у вас уже есть Postgres. Не нужно поднимать отдельный сервис, синхронизировать данные, разбираться с двумя бэкапами. Транзакционная семантика, foreign keys, привычный SQL: всё на месте.

Минимальный пример создания и поиска:

-- Установка и создание таблицы
CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE documents (
    id        BIGSERIAL PRIMARY KEY,
    content   TEXT NOT NULL,
    embedding vector(1536) NOT NULL,
    metadata  JSONB
);

-- HNSW-индекс для косинусного поиска
CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

-- Поиск top-5 ближайших с фильтром по метаданным
SELECT id, content, 1 - (embedding <=> $1) AS similarity
FROM documents
WHERE metadata->>'lang' = 'ru'
ORDER BY embedding <=> $1
LIMIT 5;

Из ограничений: ANN-индекс строится дольше, чем в Qdrant или Milvus, а distributed-режим возможен только через Citus или партиционирование вручную. Если ваш план это 100+ млн векторов, лучше смотреть в сторону специализированных решений.

Qdrant: Rust-движок с богатой фильтрацией

Qdrant написан на Rust и оптимизирован под сценарии, где векторный поиск сопровождается сложными фильтрами по payload. С версии 1.10 в нём появилась нативная поддержка BM25 для гибридного поиска, а версия 1.12 принесла GPU-индексацию через CAGRA и значительное ускорение HNSW.

Уникальная фишка Qdrant: payload-индексы. Вы можете объявить поле category или tenant_id как индексируемое, и движок будет использовать его внутри HNSW-обхода для фильтрации, а не после top-k. Это критически важно для multi-tenant RAG. Я сам столкнулся с этим, когда мигрировал проект с 40+ тенантами с pgvector: latency упала в три раза без каких-либо изменений в схеме.

from qdrant_client import QdrantClient
from qdrant_client.models import (
    Distance, VectorParams, PointStruct, Filter, FieldCondition, MatchValue
)

client = QdrantClient(url="http://localhost:6333")

client.create_collection(
    collection_name="docs",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)

# Индексируем payload-поле для быстрой фильтрации
client.create_payload_index(
    collection_name="docs",
    field_name="tenant_id",
    field_schema="keyword",
)

client.upsert(
    collection_name="docs",
    points=[
        PointStruct(id=1, vector=[0.1] * 1536,
                    payload={"tenant_id": "acme", "lang": "ru"}),
    ],
)

# Поиск с фильтром "внутри" HNSW-обхода
hits = client.query_points(
    collection_name="docs",
    query=[0.1] * 1536,
    query_filter=Filter(must=[FieldCondition(key="tenant_id",
                                             match=MatchValue(value="acme"))]),
    limit=5,
).points

Qdrant также первым из open-source реализовал гибридный поиск с RRF (Reciprocal Rank Fusion) и квантизацию (scalar, product, binary) на уровне коллекции, что позволяет уместить миллиард векторов 1536d на одном узле с 64 ГБ RAM.

Weaviate: модульная архитектура и гибридный поиск

Weaviate выбирают команды, которым нужен встроенный гибридный поиск без отдельного BM25-движка. Запрос вида «найти векторно похожие документы И с совпадением по ключевым словам» отрабатывает одним вызовом, а итоговый ранг считается через RRF или нормализованную сумму.

Вторая особенность: модули векторизации. Weaviate может сам обращаться к OpenAI, Cohere, Anthropic или локальной модели через text2vec-transformers. Вы кладёте текст, а эмбеддинг строится автоматически. Это удобно для прототипов, но в проде многие отключают модули и индексируют уже посчитанные векторы (так проще управлять версионированием моделей).

В 2026 году Weaviate активно продвигает «agentic» сценарии: встроенные генеративные модули, которые принимают результаты поиска и сразу подают их в LLM с заданным промптом. Похожий паттерн мы разбирали в материале про мульти-агентные AI-системы.

Milvus: distributed-решение для миллиардов векторов

Если ваш масштаб это сотни миллионов или миллиарды векторов, выбор сужается до Milvus. Перед нами distributed-архитектура с разделением слоёв query, data, index и coordinator. Согласно release notes Milvus 2.5, движок поддерживает HNSW, IVF, SCANN, DiskANN и GPU-индексы через NVIDIA CAGRA. Больше алгоритмов, чем у любого конкурента.

Milvus 2.5 добавил полноценный гибридный поиск (sparse + dense), функциональные индексы и улучшения по cold-start latency. Zilliz Cloud (управляемая версия Milvus) предлагает serverless-тариф, конкурирующий с Pinecone.

Минусы: высокая операционная сложность. Production-кластер Milvus в Kubernetes включает MinIO/S3 для хранения, etcd для координации, Pulsar или Kafka для message queue. Это серьёзная инфраструктура, и для команды без выделенного SRE это, мягко говоря, перебор.

from pymilvus import MilvusClient, DataType

client = MilvusClient(uri="http://localhost:19530")

schema = client.create_schema(auto_id=True, enable_dynamic_field=True)
schema.add_field("id", DataType.INT64, is_primary=True)
schema.add_field("vector", DataType.FLOAT_VECTOR, dim=1536)
schema.add_field("tenant", DataType.VARCHAR, max_length=64)

index_params = client.prepare_index_params()
index_params.add_index(field_name="vector", index_type="HNSW",
                       metric_type="COSINE", params={"M": 16, "efConstruction": 64})

client.create_collection(collection_name="docs", schema=schema,
                         index_params=index_params)

client.search(
    collection_name="docs",
    data=[[0.1] * 1536],
    filter='tenant == "acme"',
    limit=5,
    output_fields=["tenant"],
)

Pinecone: serverless для тех, кто не хочет администрировать

Pinecone это единственный игрок в этом списке без open-source версии. Зато самый «zero-ops» вариант: вы создаёте индекс через API и больше не думаете о шардировании, бэкапах, обновлениях. Архитектура serverless с 2024 года заменила старую pod-based: теперь оплата идёт за чтения, записи и хранение, а не за постоянно крутящиеся ноды.

Pinecone подходит командам, которые ценят скорость выхода на прод выше контроля над стеком. Из минусов: vendor lock-in (нельзя экспортировать индекс в стандартном формате), нестабильные цены на больших объёмах и невозможность кастомизировать алгоритм индексирования.

Если вы строите MCP-агента или LLM-сервис и не хотите тратить недели на инфраструктуру, посмотрите также наше руководство по MCP-серверам на Python. Оно показывает, как обернуть любую векторную БД в MCP-инструмент за час.

Производительность и benchmark 2026

Независимые тесты ann-benchmarks и более свежие данные VectorDBBench 2026 на датасете 10М векторов 1536d показывают следующую картину для recall@10 = 0.95:

  • Milvus HNSW (GPU CAGRA): 12 000 QPS, p99 4 мс. Лидер на одной ноде с GPU.
  • Qdrant HNSW + binary quantization: 8 500 QPS, p99 8 мс, RAM 6.4 ГБ. Лучший баланс памяти и скорости.
  • Weaviate HNSW: 7 200 QPS, p99 9 мс.
  • pgvector HNSW (PG 17): 4 100 QPS, p99 18 мс. Заметно медленнее, но всё ещё достаточно для большинства задач.
  • Pinecone serverless: публичных бенчмарков нет, заявлено p99 ≤ 100 мс по регионам.

Важная оговорка: цифры выше это «голые» QPS без фильтрации. Как только включается высокоселективный payload-фильтр (например, tenant_id из 10 000 значений), порядок меняется. Qdrant и Milvus с индексированными полями ускоряются в 2–3 раза относительно конкурентов, у которых фильтр работает пост-обработкой.

Как выбрать векторную базу для вашего проекта

Простая эвристика принятия решения в 2026 году:

  1. У вас уже есть PostgreSQL и < 10 млн векторов? Берите pgvector. Не усложняйте.
  2. Нужна сложная multi-tenant фильтрация и self-hosted? Qdrant.
  3. Нужен нативный гибридный поиск и мультимодальность из коробки? Weaviate.
  4. Масштаб больше 100 млн векторов или нужен GPU-индекс? Milvus / Zilliz Cloud.
  5. Нет DevOps-ресурсов и нужно «вчера в прод»? Pinecone serverless.

Ещё один фактор это ваш стек для tool use. Если LLM-агент вызывает векторный поиск как инструмент, удобно объединять подходы из нашего материала о function calling и tool use с любым из перечисленных бэкендов.

Квантизация и оптимизация индекса

Квантизация это главный рычаг снижения стоимости в 2026 году. Три уровня:

  • Scalar quantization (int8): уменьшает память в 4 раза, потеря recall < 1%. Поддерживается всеми, кроме pgvector (там halfvec даёт похожий эффект).
  • Product quantization (PQ): сжимает в 8–16 раз, recall падает на 2–5%. Хорош для очень больших коллекций.
  • Binary quantization: 32× компрессии для эмбеддингов от современных моделей (OpenAI text-embedding-3-large, Cohere embed-v3, Voyage-3). Recall сохраняется выше 95% благодаря rerank-фазе на исходных векторах.

Практическое правило, которое я вывел на собственных проектах: всегда включайте rescoring (rerank) на полноразмерных векторах для top-100 кандидатов, отобранных квантизованным индексом. Это даёт почти исходный recall при минимальной памяти.

Часто задаваемые вопросы

Что лучше для RAG: pgvector или Pinecone?

Для прототипов и проектов до 5–10 млн чанков pgvector почти всегда выгоднее: дешевле, проще в эксплуатации, нет vendor lock-in. Pinecone оправдан, если у команды нет ресурсов на администрирование PostgreSQL или требуется быстрый горизонтальный масштаб без переписывания.

Можно ли использовать векторную БД без эмбеддинг-модели?

Нет. Векторная БД хранит уже посчитанные эмбеддинги. Сами векторы вы получаете из модели (OpenAI, Cohere, Voyage, BGE или локальной). Некоторые БД (Weaviate, Milvus) умеют сами вызывать эмбеддер по конфигу, но это слой поверх той же модели.

Сколько стоит хранить 1 миллион векторов в 2026 году?

На self-hosted pgvector около $15–25 в месяц на VPS с 4–8 ГБ RAM. На Qdrant Cloud или Weaviate Cloud получится $25–40. На Pinecone serverless от $50 при умеренной нагрузке. С бинарной квантизацией все цифры можно уменьшить в 4–8 раз.

Что такое гибридный поиск и зачем он нужен?

Гибридный поиск объединяет dense-поиск (по эмбеддингам) с sparse-поиском (BM25 или SPLADE). Это помогает находить документы, где есть точные термины (имена, артикулы, аббревиатуры), которые dense-модель может «размыть». Финальный ранг считается через Reciprocal Rank Fusion или нормализованную сумму.

Нужно ли использовать reranker поверх векторного поиска?

Для production-RAG почти всегда да. Cross-encoder reranker (Cohere Rerank 3, BGE-reranker-v2, Voyage rerank-2) применяется к top-50 кандидатам из векторного индекса и поднимает NDCG на 15–25%. Это компенсирует погрешности квантизации и приближённого поиска.

Какой размер эмбеддинга оптимален в 2026 году?

Большинство production-систем работают на 768–1536 размерности. Современные модели (text-embedding-3-large, voyage-3-large) поддерживают Matryoshka Representation Learning, что позволяет усечь вектор до 512 или 256 с потерей качества < 3%. Это снижает память и ускоряет поиск без переэмбеддинга.

Editorial Team
Об авторе Editorial Team

Our team of expert writers and editors.