Overview
The vector store is a deployment decision more than a quality decision: recall and latency depend more on chunking, the embedding model, and reranking than on the database. Pick the store that fits how the rest of the stack runs, and test its filtering behavior, which is where stores differ most. If you already run a search engine or document store with native vector search (Elasticsearch, OpenSearch, MongoDB Atlas), evaluate it before adding a system. For the Pinecone versus pgvector head-to-head, see pinecone-vs-pgvector.
Pick Pinecone for managed simplicity
Pinecone is the no-ops choice: serverless, no nodes to size.
- New indexes default to document indexes, whose schema can combine dense vectors, sparse vectors, and full-text fields, so hybrid search lives in one index. Classic vector indexes (dimension, metric) remain.
- Use one namespace per tenant for isolation. Namespace limits depend on the plan (100 on Starter up to 1,000,000 on Enterprise).
- Metadata is limited to 40 KB per record and is filterable by default.
- Weak fit: steady high QPS where the bill dominates, or strict residency and on-prem requirements.
Pick Qdrant for filtered search and self-hosting
Qdrant is written in Rust and is available self-hosted or as Qdrant Cloud.
- Create payload indexes before ingesting data. A payload index adds extra HNSW edges so filters apply during graph traversal; indexes added later require an HNSW rebuild to take effect.
- For multi-tenant collections, mark the tenant field
is_tenant(keyword or uuid type) to co-locate tenant data on disk. - The Query API supports hybrid queries with
prefetchand RRF or distribution-based score fusion, plus sparse vectors.
Qdrant wins when filtered recall under load is the requirement.
Pick Weaviate for hybrid search as the default query
Weaviate ships BM25 plus vector hybrid as a first-class query with alpha weighting and relative score or ranked fusion. HNSW is the default index; the flat index suits many small tenants. Modules add embedding providers, rerankers, and generation inside the database, which is convenient for prototypes. See rag-retrieval for fusion rules.
Pick pgvector when Postgres is already in the stack
pgvector (0.8.6 as of 2026-07) turns the database you already run into a vector store: one backup story, one connection pool, one access-control model. See postgres.
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);
SET LOCAL hnsw.ef_search = 100; -- per transaction; default 40
SET hnsw.iterative_scan = relaxed_order; -- 0.8.0+; keeps scanning when a WHERE filter drops rowsvectorindexes cap at 2,000 dimensions andhalfvecat 4,000. Shorten the dimension or index ahalfveccast for 3072-dimension models.- Without iterative scans, a selective filter applied after the index scan can return fewer than
LIMITrows. - Pair with full-text search for the BM25 arm; see postgres-full-text-search.
pgvector is the lowest-friction option when consolidation matters more than peak QPS. Benchmark at your vector count and QPS before committing.
Pick ChromaDB for local-first dev and small services
ChromaDB suits prototypes, notebooks, internal tools, and single-process apps; see chromadb. Its default distance is l2, so set cosine or ip explicitly (see embeddings-dimensionality). Move to Qdrant, Weaviate, or pgvector when scale or multi-process access demands it.
Tune HNSW with three knobs
| Knob | Typical range | Effect |
|---|---|---|
m (graph degree) | 16 default; 32 for higher recall | Bigger graph, more memory |
ef_construction | 64 to 200 | Better graph, slower builds |
ef_search | 40 to 200 | Higher recall, slower queries |
Build once with a high ef_construction, sweep ef_search per workload, and pick the smallest value that clears the recall bar on your golden set (see rag-eval).
Plan the migration before you need it
Switching stores costs re-indexing, and switching embedding models costs a re-embed.
- Export vectors, IDs, and metadata on a schedule; the export is the migration artifact.
- Shadow the new store: write to both, query the old, and diff
recall@kdaily. - Flip traffic when the new store matches the old on the eval suite.