Vector Database Showdown 2026: Qdrant vs Pinecone vs Weaviate vs pgvector
A practical comparison of the four most-used vector databases for production RAG — covering latency, cost, hybrid search, filtering, self-hosting, and which one I pick in each scenario.
The TL;DR
| Need | My Pick |
|---|---|
| Self-hosted, fastest, most flexible | Qdrant |
| Already on Postgres, < 1M vectors | pgvector |
| Schema-rich, GraphQL native | Weaviate |
| Zero ops, willing to pay | Pinecone |
Benchmark Setup
I indexed 1M 768-dim embeddings (BGE-base) across all four. Query workload: 1000 mixed queries (with and without metadata filters). Hardware: 4 vCPU, 16GB RAM.
Latency at p95
| Database | No filter | With filter | Hybrid (dense+sparse) |
|---|---|---|---|
| Qdrant | 18ms | 22ms | 38ms |
| Pinecone | 32ms | 35ms | 52ms |
| Weaviate | 24ms | 28ms | 45ms |
| pgvector (HNSW) | 35ms | 30ms (filter wins) | n/a |
Qdrant: My Default Choice
from qdrant_client import QdrantClient, modelsclient = QdrantClient("http://localhost:6333") client.create_collection( "docs", vectors_config=models.VectorParams(size=768, distance=models.Distance.COSINE), quantization_config=models.ScalarQuantization( scalar=models.ScalarQuantizationConfig(type=models.ScalarType.INT8) ), ) ```
- Best in-memory + on-disk hybrid (RAM stays bounded as collection grows)
- Built-in scalar/binary quantization — 4× memory reduction with minimal recall loss
- Rich payload filtering with composite conditions
- Native Rust performance, Docker-friendly self-hosting
pgvector: When You Already Have Postgres
CREATE EXTENSION vector;
CREATE TABLE docs (id BIGSERIAL PRIMARY KEY, content TEXT, embedding vector(768));
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);SELECT id, content, 1 - (embedding <=> $1) AS similarity FROM docs WHERE org_id = $2 AND created_at > NOW() - INTERVAL '30 days' ORDER BY embedding <=> $1 LIMIT 5; ```
The killer feature: JOIN with your existing tables. Filtering by tenant, date range, or user permissions becomes a normal SQL WHERE clause.
Decision Framework
- 1< 100K vectors and already using Postgres → pgvector. Don't add another database.
- 2Multi-tenant SaaS, self-hosted, > 1M vectors → Qdrant. Best price/performance.
- 3Need GraphQL + schema modeling → Weaviate.
- 4Don't want to operate infrastructure, money is no object → Pinecone.
The vector DB market changes fast. Re-evaluate every 6 months.