TL;DR: For most teams under roughly 10 million vectors, pgvector is the right starting point because it adds vector search to infrastructure you already run and operate, with full ACID guarantees against your relational data. Choose Qdrant when you need best-in-class filtered search, self-hosting control, and binary quantization for large agent-memory workloads — its self-hosted throughput can exceed pgvector at very large scale with the right tuning. Choose Pinecone when you want zero operational overhead and predictable managed latency and are willing to pay a premium per query for it. Past 100 million vectors, all three start to strain, and purpose-built systems like Milvus enter the conversation.
Why this choice matters more than it used to
Vector databases went from a niche component to a load-bearing piece of production infrastructure the moment retrieval-augmented generation became a default architecture for LLM applications rather than an experiment. That shift changed the evaluation criteria: a vector store that was fine for a prototype with 50,000 embeddings behaves completely differently at 50 million, under concurrent write load, with metadata filters that need to run in single-digit milliseconds. This piece is a decision framework for that production reality, not a feature checklist.
The three options, and what they actually are
pgvector is a PostgreSQL extension that adds a vector column type and approximate nearest-neighbor indexes (IVFFlat and HNSW) directly inside Postgres. It's not a separate database — it's a capability bolted onto infrastructure most teams already run. That's its core value proposition: zero new infrastructure, full SQL joins between vector similarity and relational data, and the operational maturity of Postgres itself (backups, replication, monitoring you already have dashboards for).
Qdrant is a purpose-built vector database written in Rust, offering both a managed cloud tier and a fully self-hostable open-source core. It's built around advanced filtering — a payload-indexing system designed specifically so metadata filters (tenant ID, document type, date ranges) don't degrade nearest-neighbor search performance the way naive post-filtering does in less specialized systems.
Pinecone is a fully managed, serverless vector database with no infrastructure to provision or index-build process exposed to the user. Its value proposition is operational simplicity: you send vectors, you query, scaling and index management are entirely the vendor's problem. That simplicity comes at a materially higher per-query cost than self-hosted alternatives at scale.
What the benchmarks actually show
Benchmark results vary significantly by dataset, hardware, quantization settings, and recall target, so treat any single number as directional rather than universal. That said, the consistent findings across recent large-scale comparisons:
| Dimension | pgvector (+pgvectorscale) | Qdrant | Pinecone |
|---|---|---|---|
| Throughput at 50M vectors, ~99% recall | ~470 QPS (single node, tuned) | ~40-60 QPS (comparable config) | Not directly comparable — serverless autoscaling |
| Filtered-search quality | Good, improving | Best-in-class (purpose-built payload index) | Good, some filter/recall trade-offs at scale |
| Operational model | Self-hosted, part of existing Postgres | Self-hosted or managed | Fully managed only |
| Index build exposure | Visible, can take 20+ min past ~2M vectors on one instance | Visible, tunable | Hidden from the user entirely |
| Best fit ceiling (single deployment) | ~10M comfortably, 50M+ with tuning/read replicas | 10M-100M+ | Any scale, cost scales linearly |
One counterintuitive finding worth internalizing: a well-tuned single-node pgvector deployment with pgvectorscale extensions has demonstrated substantially higher raw throughput than Qdrant in some large-scale (50M vector) benchmarks — meaning "purpose-built" doesn't automatically mean "faster" at every scale point. Qdrant's advantage shows up specifically in filtered-query scenarios and in horizontal scaling patterns that a single Postgres node doesn't support as gracefully.
Decision framework
1. Is your data already living in Postgres, and do you need relational joins against vector results? If your embeddings are tightly coupled to relational entities — user records, product catalogs, document metadata that changes transactionally — pgvector lets you query "find similar products where category = X and price < Y and in_stock = true" as a single SQL statement with ACID guarantees. Splitting that into a separate vector database means either duplicating relational metadata into the vector store or doing an application-level join, both of which add complexity and consistency risk.
2. What's your realistic vector count in 18 months, not today? Under 2 million vectors, this decision barely matters — all three options perform adequately and the choice should be driven by operational preference, not benchmarks. Between 2-10 million, pgvector remains comfortable but you should start watching index build times. Past 10 million, evaluate whether you need Qdrant's horizontal scaling and filtering performance, or whether Pinecone's fully managed model is worth the cost premium to avoid operating that scale yourself.
3. How complex and selective are your metadata filters? If your queries are simple ("top 10 nearest neighbors, no filters") all three options handle this well. If your queries routinely combine vector similarity with selective multi-field filters — the common pattern in multi-tenant SaaS retrieval or agent memory systems scoped per-user — Qdrant's purpose-built payload indexing is the strongest option, because naive post-filtering (retrieve top-K, then filter) degrades badly when the filter excludes most of the candidate set.
4. What's your tolerance for operating the database yourself? pgvector inherits whatever Postgres operational maturity your team already has — if you're comfortable running Postgres in production, you're already most of the way to running pgvector. Qdrant self-hosted requires standing up and operating a new stateful service, though its managed cloud tier removes that if budget allows. Pinecone removes operational burden entirely but removes the tuning knobs along with it — you can't tune an index build you never see.
5. What's the actual per-query economics at your expected volume? Pinecone's serverless pricing scales with usage and is the most expensive per-query of the three at meaningful volume, but the cost includes all operational overhead. Self-hosted pgvector or Qdrant have near-zero marginal cost per query beyond the infrastructure you're already paying for, but that infrastructure cost — and the engineering time to run it — is real and often under-counted in early cost comparisons.
A migration-friendly starting position
Because pgvector is "just Postgres," it's the lowest-risk starting point even for teams that expect to eventually need a purpose-built vector database: you validate the retrieval architecture, embedding model choices, and chunking strategy on infrastructure you already operate, without committing to a new stateful system. If you outgrow pgvector's throughput ceiling, migrating the embeddings and reprocessing pipeline to Qdrant or Pinecone later is a bounded, well-understood project — far cheaper than guessing wrong on a specialized vector database before you know your actual query patterns and filter requirements.
This sequencing matters more than it seems, because retrieval architecture decisions (chunk size, embedding model, hybrid search vs pure vector) tend to change several times during initial development, and pgvector's low switching cost lets those decisions happen without also carrying the cost of standing up and tearing down a separate database.
Failure modes to design against
Treating vector search as a drop-in replacement for full-text or keyword search. Pure vector similarity misses exact-match and rare-term queries that keyword search handles trivially — production RAG systems increasingly use hybrid search (vector plus BM25/keyword) rather than vector search alone. All three databases discussed here support some form of hybrid search, but it needs to be explicitly designed in, not assumed. Systems using adaptive RAG to route between simple retrieval and more expensive agentic pipelines depend even more heavily on this, since a weak retrieval layer at the "simple" tier pushes more traffic into the costly path unnecessarily.
Index build time surprising you in production. pgvector's HNSW and IVFFlat index builds are not instant, and rebuilding an index on a live table can lock or seriously degrade write throughput if not planned around. Past a few million vectors, plan index builds during low-traffic windows or use concurrent index build strategies rather than assuming it's a background non-event.
Under-provisioning for filtered queries at scale. A vector database that benchmarks well on unfiltered top-K queries can perform dramatically worse once realistic metadata filters are applied, because many approximate-nearest-neighbor indexes weren't designed with filtering in mind. Benchmark with your actual filter patterns, not synthetic unfiltered queries, before committing to a choice.
No recall monitoring in production. Approximate nearest-neighbor search trades exact recall for speed, and that trade-off is invisible until retrieval quality degrades and downstream LLM answers get worse. Wire retrieval quality metrics into the same evaluation pipeline you'd use for the rest of an LLM eval pipeline — a vector database migration or index parameter change should trigger the same regression checks as a model or prompt change.
Choosing based on benchmarks alone, ignoring operational fit. The raw throughput numbers matter less than whether your team can operate the chosen system reliably. A database that's 2x faster on paper but requires expertise your team doesn't have is often a worse production choice than a "slower" option your team can run confidently.
Syslabs' AI and machine learning team builds retrieval architectures — including vector database selection and migration — as part of production RAG and data engineering work. Sources: Tiger Data pgvector vs Qdrant, Tensoria 100M vector benchmark, Kalvium Labs vector databases compared.