🌱
Band 1: Up to 1M vectors
Winner: pgvector. You almost certainly have Postgres. HNSW indexes hit sub-100ms p95 here. Hybrid keyword+vector queries via tsvector + cosine are unmatched by dedicated DBs. Operational cost: near zero.
🌿
Band 2: 1M–10M vectors
Managed preference: Pinecone (fastest to ship, predictable price) or Weaviate Cloud (richer hybrid search, open-source path out).
Self-hosted preference: Qdrant (simpler ops than Milvus) or pgvector if your team is Postgres-fluent.
🌳
Band 3: 10M–100M vectors
Managed: Pinecone serverless or Weaviate Cloud; cost becomes a real factor. Calculate per-query and per-million-stored.
Self-hosted: Qdrant or Milvus; need a platform team and 24/7 monitoring.
🏔️
Band 4: 100M+ vectors
Managed: Pinecone or Vespa Cloud.
Self-hosted: Milvus is the mature billion-scale option; Qdrant is closing fast. At this scale you are paying SREs to run it; that is a real budget line.
🔍
Hybrid Search (Keyword + Vector)
pgvector + tsvector wins for joins with structured filters. Weaviate has the best dedicated hybrid implementation (BM25 + vector with tunable alpha). Pinecone added hybrid but lags. Qdrant supports it via payload filtering, well-engineered.
📊
The Lock-in Question
High lock-in: Pinecone (proprietary API).
Medium: Weaviate Cloud (open-source export possible).
Low: pgvector, Qdrant, Milvus (open-source, portable).