Fundamentals · 2026-05-06
Vector Databases Compared: Pinecone, Weaviate, Qdrant, pgvector (2026)
Choosing a vector database is a deployment decision, not a capability decision. Here is an honest comparison of the major options — including the cases where Postgres with pgvector is the right answer.
§1
What a Vector Database Actually Does
A vector database stores high-dimensional vectors and serves approximate nearest neighbor (ANN) queries. The core operation: given a query vector, return the k vectors in the store with the highest cosine (or dot product, or Euclidean) similarity. The "approximate" in ANN means the results are not guaranteed to be the true nearest neighbors — the index structure (HNSW, IVF, PQ) trades recall for speed. For most RAG applications, 95–99% recall on ANN search is sufficient.
Vector databases also store metadata alongside vectors — document IDs, timestamps, category labels, access control lists — and support filtered queries that constrain the ANN search to a subset of the index. The implementation of filtered ANN search is where most databases differ significantly. Pre-filtering (filter first, then ANN on the subset) is accurate but slow for selective filters. Post-filtering (ANN first, then filter) is fast but loses recall when filters are selective. In-filtering (HNSW with payload-aware traversal) is the correct architecture.
Beyond ANN search, production vector databases need: CRUD operations on individual vectors without full re-indexing, horizontal scalability, replication for high availability, authentication and authorization, backup and restore, and a stable client SDK. Not all databases that call themselves "vector databases" have all of these.
§2
Pinecone: Managed, Opinionated, Expensive at Scale
Pinecone is the best-known managed vector database. Its value proposition is operational simplicity: no infrastructure to run, a stable API, and a serverless tier that charges per-query. Setup takes minutes. The SDK is well-documented. It handles sharding and replication automatically.
The tradeoffs: Pinecone is expensive at scale. The serverless tier is priced per read unit and write unit, which compounds quickly for high-query-rate applications. The pod-based tier (dedicated infrastructure) is more predictable but requires capacity planning and minimum commitments. At 10M+ vectors with high QPS, Pinecone's cost can exceed running Qdrant on managed Kubernetes by 5–10x.
Pinecone's metadata filtering is robust and its hybrid search (dense + sparse) support is production-ready via its integrated BM25. For teams that want zero operational overhead and have the budget, Pinecone is a legitimate choice. For teams that are cost-sensitive or need more control over their data infrastructure, the managed overhead argument weakens quickly.
§3
Weaviate: Open-Source, Module Ecosystem, Operational Overhead
Weaviate is an open-source vector database with a strong module ecosystem: integrated vectorization (you can store raw text and have Weaviate call the embedding model), multi-modal search (text, image, audio), and integrated re-ranking via Cohere or cross-encoders. It is the most feature-rich option for teams that want the vector database to own the embedding pipeline.
The module ecosystem is also Weaviate's primary operational complexity. Each module adds configuration, authentication, and potential failure points. Running Weaviate with integrated OpenAI vectorization and Cohere re-ranking in production requires managing three API key dependencies and understanding how each module interacts with the query pipeline. Teams that underestimate this complexity end up with hard-to-debug retrieval failures.
Weaviate's query language (WQL) and GraphQL API are powerful but non-standard — there is a learning curve for engineers familiar with SQL or simpler REST APIs. Weaviate Cloud is the managed offering; self-hosted Weaviate on Kubernetes is manageable but requires more operational knowledge than Qdrant. Choose Weaviate when the module ecosystem solves a real problem for you, not as a default.
§4
Qdrant: Rust-Based, Fast, Good Self-Hosting Story
Qdrant is a Rust-based open-source vector database that consistently outperforms competitors on filtered ANN search benchmarks. Its payload-aware HNSW implementation filters during graph traversal rather than before or after, which means filtered queries maintain high recall regardless of filter selectivity. This is the architecturally correct approach and it shows in benchmarks.
Qdrant's self-hosting story is the best among open-source options: a single Docker image with no external dependencies, horizontal scaling via Qdrant's built-in distributed mode, and a stable REST and gRPC API. Memory-mapped storage means you can run Qdrant on machines with less RAM than the total index size — useful for large indexes on cost-constrained infrastructure. Qdrant Cloud is the managed offering with pricing that is significantly cheaper than Pinecone at scale.
Qdrant supports sparse vectors natively (for hybrid search), named vectors (multiple vector representations per document), and payload-based access control. The Rust implementation means it is resource-efficient — you get more QPS per dollar than Python-based databases. For teams building production self-hosted RAG infrastructure, Qdrant is the current best-in-class choice.
§5
pgvector: Postgres Extension, Operational Simplicity, Scaling Ceiling
pgvector adds vector storage and ANN search to Postgres via the ivfflat and hnsw index types. If you already run Postgres, pgvector adds vector search without adding a new service to operate. Your existing backup procedures, monitoring, access control, and connection pooling work unchanged. The operational simplicity argument is real and should not be dismissed.
The performance ceiling is also real. Postgres is not designed for ANN search at scale. The HNSW index in pgvector is slower to build and slower to query than Qdrant or Pinecone at equivalent dataset sizes. For indexes above 1–2M vectors with high QPS requirements, pgvector will become the bottleneck. The exact threshold depends on your hardware, index parameters, and query patterns.
For most early-stage and mid-scale applications (up to ~5M vectors, moderate QPS), pgvector is the right choice. You avoid the operational overhead of a separate service, you can use SQL joins to correlate vector search results with relational data (very powerful for filtered search), and you can migrate to a dedicated vector database later when you actually hit the ceiling. Use pgvector until it is the bottleneck, then migrate.
§6
Chroma and Faiss: When You Don't Need a Production Vector Store
Chroma is an open-source vector store designed for local development and small-scale deployments. It is easy to set up, has a Pythonic API, and integrates well with LangChain and LlamaIndex. It is not designed for production: it lacks horizontal scaling, high availability, and the operational maturity of Qdrant or pgvector. Use Chroma for prototyping and local development, then migrate before going to production.
Faiss (Facebook AI Similarity Search) is a library, not a database. It provides extremely fast ANN search implementations (IVF, PQ, HNSW) that are the underlying algorithms for many production vector databases. Faiss is the right choice when you need maximum performance for a specific indexing and retrieval workload and you are willing to manage the surrounding infrastructure (serving, metadata, CRUD) yourself. It is used in production at hyperscale — but only by teams with the engineering resources to build and operate the surrounding system.
Do not use Faiss unless you understand why you cannot use a vector database. The engineering cost of building a production serving layer around Faiss is significant. For 99% of production applications, Qdrant, pgvector, or Pinecone is the right answer.
§7
How to Choose
The decision tree: Are you prototyping or in local development? Use Chroma. Do you already run Postgres and have fewer than 5M vectors? Use pgvector. Do you need self-hosted infrastructure with the best performance and cost efficiency? Use Qdrant. Do you need a fully managed service and cost is secondary? Use Pinecone. Do you need integrated vectorization, multimodal search, or the Weaviate module ecosystem specifically? Use Weaviate.
Do not optimize for "most powerful" — optimize for "fewest operational surprises." The most common mistake is selecting a vector database based on benchmarks for workloads that do not match yours. A benchmark showing Qdrant at 10M vectors with 0.1% filter selectivity tells you nothing about your workload at 500K vectors with 30% filter selectivity.
Migration between vector databases is possible but painful — you must re-embed all documents (or at least re-index existing embeddings) and update all API calls. Make a deliberate choice upfront. The pgvector-first approach is pragmatic: start simple, measure your actual constraints, and migrate when you have evidence that the current solution is the bottleneck.
FAQ
Frequently asked questions
- Which vector database is best for production?
- There is no universal best — it depends on your scale, operational constraints, and team expertise. The practical guidance: use pgvector if you already run Postgres and have fewer than 5M vectors; use Qdrant if you need self-hosted infrastructure with strong performance and cost efficiency (especially for filtered search); use Pinecone if you need a fully managed service and have the budget. Weaviate is the choice if its module ecosystem (integrated vectorization, multimodal support) solves a real problem for you. The decision is primarily operational: which solution minimizes the operational burden for your team while meeting your scale requirements?
- Is pgvector good enough for production RAG?
- Yes, for the majority of production RAG applications. pgvector handles millions of vectors with acceptable latency on modern hardware. The hnsw index type added in pgvector 0.5 significantly improved query performance over the older ivfflat. The key advantages are operational: no new service to run, existing Postgres tooling works, SQL joins for metadata filtering, and seamless integration with your existing backup and monitoring. The ceiling is real — very high QPS workloads or indexes above 5–10M vectors will strain pgvector — but most production applications never reach that ceiling. Start with pgvector and migrate when you have evidence it is the bottleneck.
- What is the difference between Pinecone and Weaviate?
- Pinecone is a managed cloud service with a narrow, stable API focused on vector storage and retrieval. You store vectors and metadata; Pinecone handles all infrastructure. Weaviate is an open-source vector database with a broader feature set including integrated vectorization (Weaviate calls the embedding model for you), multimodal search, and re-ranking modules. Pinecone's advantage is operational simplicity and a predictable API. Weaviate's advantage is the module ecosystem — if you need integrated vectorization or multimodal capabilities, Weaviate packages them. Weaviate requires more configuration and operational knowledge, especially when using multiple modules simultaneously.
- How many vectors can each database handle?
- Rough production limits (single-node, without horizontal scaling): pgvector handles 1–5M vectors with good query performance on a 16-core, 64GB instance. Qdrant handles 10–50M vectors on equivalent hardware with faster query times than pgvector. Pinecone Serverless scales to hundreds of millions of vectors (it is distributed by design). Weaviate handles 10–100M vectors in distributed mode. Faiss (as a library) has been used for billion-vector indexes at Meta. These are rough guides — actual performance depends heavily on vector dimensionality, index parameters, filter usage, and QPS requirements. Benchmark with your actual data and query patterns before committing.
- Can I migrate between vector databases?
- Yes, but plan for a full re-ingestion. Vector formats are not standardized — you cannot simply export vectors from Pinecone and import them into Qdrant. You will need to: export your original documents (not the vectors), run the embedding pipeline again on the new vector store, verify that the new store's index produces equivalent retrieval quality, and update all application code that calls the old vector store's API. The embedding model must stay the same (or you must re-embed everything with the new model). For large corpora, re-embedding takes time and costs money — budget for it. The migration window is also a data consistency challenge: documents ingested during migration may be in one store but not the other. Run in parallel with a traffic cutover rather than a hard switchover.
Next