writing

NC · article

Top Vector Databases for Enterprise RAG (2026)

Most teams choose a vector database on benchmark speed, then discover their retrieval problem was never latency. Here is what actually separates these systems in production.

by Nic Chin13 min readRAG / Vector Databases / AI Architecture

part of Production RAG · 9 articles

Choose a vector database on how well it does hybrid search and metadata filtering. Do not choose it on benchmark latency, and do not choose it first. In the RAG systems I have built and inherited, the vector store has almost never been the reason retrieval was bad. Chunking was. Missing keyword search was. No reranking was. The database was usually fine, and swapping it would have fixed nothing.

That is an awkward opening for an article that then compares five vector databases, so let me be precise about why the comparison is still worth having. The choice does matter - just not for the reasons the comparison tables usually give. It matters because some of these systems hand you hybrid retrieval and multi-stage reranking as configuration, and others make you build that yourself. That difference shows up in your retrieval quality months later. Index speed does not.

The Five, Compared on What Decides It

Capability claims here come from each project’s own documentation, linked in the sections below. I have deliberately left latency out of this table - the section after it explains why.

pgvector, Qdrant, Weaviate, Pinecone and Milvus compared on hybrid search, filtering, operational burden and best fit for enterprise RAG
SystemHybrid searchOps burdenReach for it when
pgvectorNot fused for you; needs a separate keyword pathLowest - it is your existing PostgresDefault. Documents, metadata and embeddings in one transactional store
QdrantNamed + sparse vectors, RRF and DBSF fusionMedium - self-host or managedYou want explicit control of multi-stage retrieval and reranking
WeaviateNative BM25F + vector, one alpha parameterMedium - self-host or managedYou want hybrid configured rather than assembled
PineconeManaged hybrid and rerankingLowest operationally, highest lock-inYou want zero infrastructure and will pay for it
MilvusAvailable, more assembly requiredHighest - a distributed system to runVery large corpora, or you need GPU-accelerated indexing

Why the Benchmark Numbers Mislead

Every vector database comparison leads with latency, and almost none of them are worth acting on. Three reasons, in increasing order of how much they should bother you.

The numbers are usually produced by an interested party. Vendor benchmarks flatter the vendor; independent ones are often run by someone with a conclusion in mind. Look at how many published comparisons crown a different winner, all citing measurements.

Latency without recall is meaningless. Approximate nearest neighbour search trades accuracy for speed by design - that is what approximate means. Any of these systems can post excellent latency if permitted to return worse results, and a benchmark that does not fix a recall target is measuring how aggressively each system was tuned rather than how good it is.

The vector store is not your bottleneck. This is the one that should end the argument. In a RAG request, retrieval is a small fraction of the wall-clock time and generation is nearly all of it. Shaving milliseconds off the retrieval leg while a language model takes seconds is optimising the wrong stage. I have never once diagnosed a slow RAG system and found the vector database responsible.

The exception worth naming: index build time can genuinely hurt, because it lands in your deploy and reindex cycle rather than in a user request. A corpus that takes hours to reindex changes how often you are willing to improve your chunking strategy, and that is a real constraint on iteration speed.

If you take one thing from this article: the single highest-value retrieval upgrade in most production RAG systems is adding keyword search alongside vector search. Embeddings encode meaning, not exact strings. Vector search finds passages that are semantically similar and routinely misses the exact identifiers enterprise users actually search for - policy numbers, statute references, part codes, error codes, proper nouns.

The failure is specific and recognisable. A user searches for a clause by its reference and gets three documents about similar clauses, none of them the one they named. To the user this reads as the system being stupid, and no amount of prompt engineering fixes it, because the right passage was never retrieved.

This is where the five genuinely diverge:

  • Weaviate gives you hybrid as a first-class query. It runs a BM25F keyword leg and a vector leg independently and fuses them, with an alpha parameter where 1.0 is pure vector and 0.0 is pure keyword. Fusion is relative score fusion by default, or ranked fusion if you prefer positions to raw scores. It is the least work to get right.
  • Qdrant gives you more control and asks more of you. Multiple named vectors per point let you carry dense and sparse representations together, fused with Reciprocal Rank Fusion or Distribution-Based Score Fusion. Its prefetch mechanism lets you retrieve cheaply and then rerank with a heavier multi-vector model - the cleanest expression of multi-stage retrieval in this group.
  • pgvector does not fuse for you. You have Postgres full-text search available in the same database, which is a real advantage, but combining and weighting the two result sets is your code. That is very achievable and I have shipped it, but it is work you should plan for rather than discover.

I go through the retrieval pipeline this sits inside - chunking, reranking, citation verification - in RAG architecture in production. If you are choosing between higher-level patterns rather than stores, the five compared in production RAG architectures is the companion decision.

Metadata Filtering Decides Enterprise Viability

The second thing that separates these systems in enterprise use has nothing to do with search quality. It is whether the store can restrict results to what this particular user is allowed to see.

Almost every enterprise corpus is multi-tenant or permissioned. Documents belong to departments, clients, matters, regions. Retrieval that ignores that is not a ranking problem, it is a data leak, and it is the failure mode most likely to end a project.

pgvector has a structural advantage here that rarely appears in comparisons. Because your embeddings live in the same database as your permissions, a filtered vector query is an ordinary SQL WHERE clause against tables you already trust. The pgvector documentation supports exactly this, and recommends indexing the filter column. There is no second system to keep in sync, no window where a revoked permission is still live in the vector store, and no separate authorisation model to reason about.

Dedicated vector databases all support metadata filtering, and they support it well. But you now own a synchronisation problem: when a document is reclassified or a user loses access, two systems must agree, and the gap between them is a security question rather than a performance one. That is manageable and thousands of teams manage it. It is simply a cost that belongs in the comparison and usually is not in it.

Why I Start With pgvector

Most teams should begin with pgvector in the Postgres they already run, and add a dedicated vector database only when something specific forces it.

The argument is not that pgvector is technically superior. It is that a second datastore is a permanent tax - another system to operate, back up, monitor, secure, upgrade and keep consistent with the first - and at the start of a RAG project you do not yet know whether you need it. Meanwhile pgvector is not a toy: HNSW and IVFFlat indexes, six distance functions, half-precision and binary and sparse vector types, up to 16,000 dimensions, and filtering that composes with the rest of your schema.

What actually pushes a project off pgvector, in the order I see it happen:

  • Index build time blocking iteration. When reindexing takes long enough that you stop experimenting with chunking, the store is now costing you retrieval quality.
  • Wanting native sparse vectors and multi-stage reranking. Assembling that on Postgres is possible and tedious; Qdrant treats it as the primary path.
  • Scale where Postgres tuning becomes the job. There is a corpus size beyond which you are no longer building a RAG system, you are operating a vector index, and a purpose-built system is the better use of the same effort.

Note that none of those is “the benchmark said Postgres was slower.” They are all operational thresholds you will recognise when you reach them - and many teams never do.

Frequently Asked Questions

Which vector database is best for enterprise RAG?

For most enterprise RAG workloads, pgvector inside the Postgres you already run is the strongest starting point, because your embeddings, documents and metadata live in one database you can join and transact across. Dedicated vector databases earn their place when you outgrow that: Qdrant for fine control over multi-stage retrieval and reranking, Weaviate when you want hybrid search configured rather than assembled, Pinecone when you want no operational burden at all, Milvus at very large scale. The mistake is treating this as the first decision. Retrieval quality is determined mostly by chunking, hybrid search and reranking, and every option here can be made to work or to fail on those.

Why does pure vector search fail in production?

Because embeddings capture meaning, not exact strings. Vector search reliably finds passages that are semantically similar but routinely misses the exact identifiers enterprise queries depend on - policy numbers, statute references, part codes, error codes and proper nouns. A user searching for a specific contract clause by reference gets documents about similar clauses instead of the one they named. Hybrid search fixes this by running dense vector search alongside sparse keyword search and fusing the two result sets before reranking, which is why hybrid support should drive the database choice far more than index speed does.

Do I need a dedicated vector database, or is pgvector enough?

pgvector is enough for a large majority of enterprise RAG systems, and starting there avoids a second datastore to operate, back up, secure and keep consistent. It supports HNSW and IVFFlat indexes, six distance functions, and filtering vector queries with ordinary SQL WHERE clauses, which means permissions and tenancy can be enforced by the same database that holds your documents. Move to a dedicated vector database when you hit a specific limit: index build times that block deploys, a need for native sparse vectors and multi-stage reranking, or scale where Postgres tuning stops being a good use of your time.

What is hybrid search in a vector database?

Hybrid search runs two retrievals over the same corpus - a dense vector search for semantic similarity and a sparse keyword search, usually BM25, for exact term matching - then fuses the two result sets into one ranking. Weaviate exposes this directly with an alpha parameter, where 1.0 is pure vector and 0.0 is pure keyword, and fuses with either relative score fusion or ranked fusion. Qdrant assembles it from named vectors plus Reciprocal Rank Fusion or Distribution-Based Score Fusion. pgvector needs a separate keyword path, since Postgres full-text search is not fused for you. The mechanism matters less than having it at all.

Should I trust vector database benchmarks?

Treat published latency and throughput figures as directional at best. They are usually run by a vendor or an author with a preferred answer, on synthetic embeddings, at a recall target chosen to flatter the result - and recall is the variable that makes those numbers meaningful, because any of these systems can be fast if allowed to be inaccurate. More importantly, retrieval latency is rarely the bottleneck in a RAG pipeline; generation is. A difference of a few milliseconds in the vector store is invisible next to a multi-second model call, and choosing on it optimises the wrong stage.

Pick Last, Not First

The vector database is one of the least consequential decisions in a RAG project and reliably one of the most argued about. It is concrete and comparable, which makes it feel like progress, while the decisions that actually determine retrieval quality - how you chunk, whether you run keyword search alongside vectors, whether anything reranks, whether an answer that cannot be grounded is blocked rather than returned - are harder to benchmark and easier to defer.

So: start on pgvector, get hybrid retrieval and reranking working, measure retrieval separately from generation, and let a real constraint tell you when to move. If you would rather not discover those constraints the expensive way, my RAG implementation page covers how I work with teams on exactly this, and the agent platform comparison covers the layer above it.

Ready to discuss your AI project?

Book a free 30-minute discovery call to explore how AI can transform your business. Or if you already have a codebase, get an instant architecture report at SystemAudit.dev No technical knowledge needed, results in 3 minutes.

About the Author

Nic Chin is an AI Architect and Fractional CTO who helps companies design and deploy production AI systems including RAG pipelines, multi-agent systems, and AI automation platforms. He has delivered enterprise AI solutions across the UK, US, and Europe, and provides AI consulting in Malaysia and Singapore.