The Vector DB's Role
A dedicated database that fast-searches top similars from a large number of embedding vectors in RAG or recommendation systems. It speeds up approximate nearest-neighbor (ANN) search with indexes like HNSW, IVF.
Comparison of Main Options
| Product | Feature | Suited for |
|---|---|---|
| Pinecone | Fully managed, easy | Want to start quickly |
| Weaviate | OSS+cloud, hybrid | Keyword+vector together |
| pgvector | PostgreSQL extension | When you have existing PG |
| Qdrant | Rust-built, fast, OSS | Large-scale/speed-focused |
| Milvus | OSS, super-large-scale | Over 1B vectors |
| Chroma | Lightweight, for dev | Prototype |
| Elastic / OpenSearch | Add to existing search infra | Existing ES environment |
Selection Points
1. Data Scale
- Under 100k vectors: Chroma, SQLite + local
- 1M-100M: pgvector, Pinecone, Weaviate, Qdrant
- Over 1B: Milvus, Pinecone Enterprise
2. Existing Stack
- Have PostgreSQL → pgvector is the minimal cost
- Have Elasticsearch → ES's vector feature
- New → Pinecone (managed) or Weaviate (OSS)
3. Hybrid Search (Keyword + Vector)
For work where proper nouns or model numbers matter, BM25 + hybrid is more accurate than pure vector search. Weaviate, Elastic, Pinecone (partly) support it.
4. Metadata Filter
The need to combine filters like "category = tech book," "published > 2024-01-01" with vector search. Each product supports it, but with performance differences.
5. Cost
| Product | Cost sense |
|---|---|
| Pinecone Starter | From $70/mo (1M vectors) |
| pgvector self-host | Only PostgreSQL operating cost |
| Qdrant Cloud | From $25/mo |
| Weaviate Cloud | From $25/mo |
| Milvus Cloud (Zilliz) | From $65/mo |
Performance Metrics
- QPS (queries/sec): how many searches per second
- Latency: P95 under 50ms is desirable
- Recall: rate of getting the true correct (ANN isn't exact)
- Insert speed: important for initial bulk loading
Implementation Patterns
pgvector (Add to Existing PostgreSQL)
CREATE EXTENSION vector;
CREATE TABLE docs (
id BIGSERIAL PRIMARY KEY,
content TEXT,
embedding VECTOR(1536)
);
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);
-- Search
SELECT id, content FROM docs
ORDER BY embedding <=> '[0.1,0.2,...]'::vector
LIMIT 10;
Pinecone (Python)
from pinecone import Pinecone
pc = Pinecone(api_key="...")
index = pc.Index("docs")
index.upsert([(id, vector, metadata)])
results = index.query(vector=query_vec, top_k=10, include_metadata=True)
Operational Tips
- On embedding-model change, regenerate all vectors
- Decide the chunk strategy (500-1000 tokens) first
- Always store source URL, update date in metadata
- Periodically measure Recall (detect accuracy drift)
2026 Trends
- Standardization of Hybrid Search
- Multimodal embedding support (search image/audio in the same space)
- Reranker (Cohere Rerank, Voyage Rerank) combination becoming common
- Sparse + Dense hybrid becoming default
Summary
Vector-DB choice is basically decided by "scale, existing stack, need for hybrid search." Chroma for prototypes, pgvector or Pinecone for production, Weaviate / Qdrant for enterprise are the standards. Combining with a Reranker greatly raises accuracy.



