GenAI Systems Lab Open interactive version →
RAG & Retrieval 9 min read

Choosing a Vector Database in 2025: A Decision Framework

Pinecone vs Weaviate vs Qdrant vs Chroma vs pgvector — when to use each, what the real cost looks like at scale, and how to avoid choosing the wrong one.

Choosing the wrong vector database costs you 3–6 months of migration work, and it usually happens because the team picked based on hype or a quick tutorial rather than actual requirements. The right choice depends on four questions: how many vectors, who is hosting it, how complex is your filtering, and what is already in your stack.

This guide cuts through the marketing. No database is universally best — each has a real use case where it wins. The goal is to find yours.

The decision framework: 4 questions first

Comparison table

DBHostingIndex typeMetadata filteringCost at 1M vectorsBest for
PineconeFully managedProprietary (HNSW-based)Good (serverless indexes)$70–100/moZero ops, fast time-to-production
WeaviateManaged + self-hostedHNSWExcellent — rich GraphQL$25/mo cloud or free self-hostedComplex filtering, hybrid search, schema-rich data
QdrantManaged + self-hostedHNSWVery good — payload filtering$25/mo cloud or free self-hostedHigh-performance self-hosted, Rust reliability
ChromaSelf-hosted onlyHNSW (hnswlib)BasicFreeLocal dev and prototyping only
pgvectorWherever Postgres runsIVFFlat + HNSWFull SQLCost of your Postgres instanceTeams on Postgres with under 2M vectors

Real cost math at scale

Costs at 1M vectors tell a misleading story. The real decision happens at 10M and 100M vectors, where managed databases get expensive fast.

DB1M vectors/mo10M vectors/mo100M vectors/mo
Pinecone (serverless)$70–100$500–700$3,000–5,000
Weaviate Cloud$25$200$1,500+
Qdrant Cloud$25$150$1,000+
Qdrant self-hosted (AWS)$50 (EC2)$150$500 (vertical scale)
pgvector (RDS Postgres)$50$200 (starts degrading)Not recommended

Managed databases scale cost linearly with vectors. Self-hosted scales with instance size and can be 3-5x cheaper at over 10M vectors if you have the ops capability to run it. The break-even on hiring DevOps to manage self-hosted Qdrant vs. Pinecone fees typically occurs around $2,000-3,000/month in database spend.

pgvector: when it is actually good enough

pgvector gets dismissed as 'not a real vector database' but it is the right choice in three specific scenarios:

pgvector's weakness is query performance at scale. At 5M+ vectors with over 100 QPS, IVFFlat index performance degrades and the HNSW index requires significant memory. For high-traffic semantic search at scale, purpose-built vector databases win on latency.

Practical rule: use pgvector if you are under 2M vectors and already on Postgres. Evaluate dedicated vector DBs when you cross 2M vectors OR when vector search latency becomes a user-facing issue. Do not pre-optimise to Pinecone at 50K vectors.

Pinecone: the managed convenience tax

Pinecone is genuinely good at one thing: getting you to production fast with zero ops. Serverless indexes, automatic scaling, solid SDKs, good documentation. The tax you pay is cost at scale and vendor lock-in.

Pinecone uses a proprietary index format with no standard export. Migrating off Pinecone means re-embedding and re-indexing everything from scratch — a non-trivial project at 10M+ vectors.

Weaviate vs. Qdrant: the real differences

Both are excellent open-source vector databases with managed and self-hosted options. The real differences:

Chroma: dev tool, not production tool

Chroma is excellent for local development and prototyping. It is the default in most LangChain tutorials precisely because it requires zero setup. Do not use it in production: no built-in persistence guarantees, no clustering, no managed option, and performance degrades significantly above 500K vectors.

If your team is using Chroma in production with over 200K vectors, migrate now. Not because Chroma is bad software — it was never designed for production load.

Migration pain points

If you need to migrate between vector databases, the main costs are: re-embedding all documents if the new DB uses a different vector dimension or distance metric, rewriting all query code for the new SDK, and re-validating retrieval quality metrics on the new system. Plan for 2–4 weeks for a production migration at 1M+ vectors.

Red flags in each option

Compare in Explore →: See real latency and cost comparisons across vector database configurations.

Try it interactively

GenAI Systems Lab is a free platform for AI engineers — configure real failure modes, break things, and build the judgment that gets you hired.

Open GenAI Systems Lab →