Векторные базы для RAG: Pinecone, Weaviate, pgvector — что выбрать
Сравниваем три популярных варианта хранения embeddings по масштабируемости, стоимости и сложности эксплуатации.

Выбор векторной базы данных определяет и стоимость инфраструктуры, и то, сколько времени команда потратит на эксплуатацию. Разница между «добавить расширение в уже существующий Postgres» и «поднять отдельный управляемый сервис» — это разница в неделях внедрения.
Три категории решений
- pgvector — расширение PostgreSQL, добавляющее тип данных
vectorи операторы для поиска по косинусному расстоянию/L2. Не отдельная БД, а надстройка над той, что у вас, скорее всего, уже есть. - Специализированные управляемые сервисы (Pinecone) — SaaS, оптимизированный исключительно под векторный поиск, с автомасштабированием и managed-инфраструктурой.
- Открытые специализированные БД (Weaviate, Qdrant, Milvus) — self-hosted или managed, с более широким набором функций (гибридный поиск, мультимодальность), чем чистый vector store.
pgvector: минимальный порог входа
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE documents (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
content TEXT NOT NULL,
embedding vector(1536),
source_url TEXT,
scraped_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops);-- Поиск 5 ближайших по смыслу документов
SELECT content, source_url, embedding <=> $1 AS distance
FROM documents
ORDER BY embedding <=> $1
LIMIT 5;Плюс: используете инфраструктуру, которую уже умеете эксплуатировать (бэкапы, мониторинг, права доступа — всё как у обычного Postgres). Минус: масштабирование поиска ограничено возможностями самого Postgres — при десятках миллионов векторов и высоком QPS может понадобиться шардирование вручную.
Pinecone: zero-ops, но по подписке
from pinecone import Pinecone
pc = Pinecone(api_key="...")
index = pc.Index("products")
index.upsert(vectors=[
{"id": "doc-1", "values": embedding, "metadata": {"source_url": url}}
])
results = index.query(vector=query_embedding, top_k=5, include_metadata=True)Полностью управляемый сервис — не нужно думать об индексах, шардировании, репликации. Плата — стоимость растёт с объёмом данных и запросов, и вы зависите от внешнего провайдера как от критической части инфраструктуры.
Weaviate: гибридный поиск из коробки
import weaviate
client = weaviate.connect_to_local()
collection = client.collections.get("Documents")
results = collection.query.hybrid(
query="цена доставки в москву",
alpha=0.5, # баланс между keyword (0) и vector (1) поиском
limit=5,
)Weaviate изначально проектировался с гибридным поиском (комбинация BM25 и векторного) как first-class сценарием — полезно, когда точные термины (артикулы, коды) важны не меньше семантики.
Сравнение
| Критерий | pgvector | Pinecone | Weaviate |
|---|---|---|---|
| Порог входа | Низкий (если уже есть Postgres) | Низкий (SaaS) | Средний |
| Управление инфраструктурой | Своё | Zero-ops | Своё или managed |
| Гибридный поиск | Вручную | Есть | Встроенный |
| Стоимость при малом объёме | Минимальная | От бесплатного тира | Требует хостинга |
| Масштаб (десятки млн векторов) | Требует тюнинга | Из коробки | Из коробки |
Как выбрать
- MVP, уже есть Postgres, данных до нескольких миллионов чанков → pgvector — не платите за отдельную инфраструктуру, пока она реально не нужна.
- Нет DevOps-ресурсов, готовы платить за zero-ops → Pinecone.
- Нужен гибридный поиск, мультимодальность, self-hosted-контроль → Weaviate или Qdrant.
Заключение
Нет универсально «лучшей» векторной базы — есть baseline (pgvector), который стоит рассмотреть первым, если у вас уже есть Postgres и объём данных не экстремальный, и специализированные решения, которые окупаются при конкретных требованиях: гибридном поиске, огромном масштабе или отсутствии желания эксплуатировать инфраструктуру самостоятельно.
Частые вопросы
Можно ли начать с pgvector и потом перейти на специализированную БД?+
Да, это обычный путь роста. pgvector хорошо работает до сотен тысяч — единиц миллионов векторов. Если объём или требования к latency вырастут, миграция на Pinecone/Weaviate/Qdrant возможна — данные экспортируются как обычные векторы с метаданными.
Что такое HNSW и почему это важно?+
HNSW (Hierarchical Navigable Small World) — алгоритм приближённого поиска ближайших соседей, который используют почти все современные векторные БД. Он даёт логарифмическую сложность поиска вместо линейного перебора, что критично при миллионах векторов.
Нужен ли гибридный поиск (vector + keyword)?+
Да, если в запросах пользователей встречаются точные термины (артикулы, названия моделей, коды) — чисто семантический поиск иногда упускает точные совпадения. Weaviate и Pinecone поддерживают гибридный поиск из коробки; для pgvector его нужно комбинировать вручную с полнотекстовым поиском Postgres.
