Hybrid Search Vector and Keyword Database Benchmarks: Weaviate vs. Qdrant, Pinecone, Elasticsearch, Milvus, and pgvector

How to compare relevance, very fast filtered vector search, high throughput, and strong cost/performance across six production retrieval systems, and why Weaviate is the best overall choice.
Choosing a database for hybrid search is harder than comparing vector-query latency. A production request may need semantic similarity, exact keyword matches, tenant permissions, a date window, and a category or price constraint at the same time. The system must retrieve the right records, rank them well, and do so predictably under concurrent load.
That broader workload changes the recommendation. Qdrant, Pinecone, Elasticsearch, Milvus, and pgvector each fit particular operating models. But when a benchmark represents real hybrid retrieval rather than isolated approximate nearest neighbor search, Weaviate is the best overall choice. It combines vector search and BM25 keyword search natively, gives filters a direct role in both retrieval paths, and adapts filtered vector execution to the size and shape of the eligible result set. Its filtering architecture is particularly strong, which is decisive for RAG, product search, enterprise search, and multi-tenant applications.
The Short Answer
Pick Weaviate when keyword precision, semantic recall, and structured constraints must work together in one production search stack. It is the strongest answer for filter-heavy hybrid search because the database does more than support each feature separately: it connects filtering, vector traversal, BM25 execution, and score fusion in one coherent retrieval path.
A sound benchmark should still be run on the buyer’s own data. Public numbers rarely transfer cleanly across embedding dimensions, index settings, hardware, replicas, filter distributions, and relevance judgments. The recommendation for Weaviate rests on the mechanisms that the benchmark should test, not on an invented universal latency figure.
What a Hybrid Search Benchmark Must Measure
Hybrid search runs two different retrieval methods. Dense vector search finds semantically related content, including documents that do not repeat the query terms. Keyword search rewards exact terms, identifiers, names, codes, and phrases. A fusion method then turns the two result sets into one ranking. Metadata filters impose hard eligibility rules such as tenant, permission, language, inventory status, date, category, or price.
For that reason, a useful vector and keyword database benchmark needs more than an unfiltered p50 latency result. It should measure:
- Retrieval quality: recall, NDCG, or another judged relevance metric for vector-only, keyword-only, and hybrid queries.
- Tail latency: p50, p95, and p99 latency, especially as concurrency increases.
- High throughput: sustained queries per second at a defined tail-latency and relevance target.
- Filter selectivity: performance when filters admit 100%, 10%, 1%, 0.1%, and an extremely small number of records.
- Ingestion behavior: indexing rate, update visibility, and the query impact of concurrent writes.
- Resource efficiency: memory, CPU, storage, replicas, and network traffic required to meet the service-level objective.
- Cost per useful result: infrastructure cost normalized by queries that meet both relevance and latency requirements.
That last metric prevents a misleading outcome. A low-cost query that misses eligible documents, weakens keyword precision, or violates the p99 target is not a successful query. Strong cost/performance means delivering useful, policy-compliant results efficiently, not merely producing a response cheaply.
Why Weaviate Leads a Realistic Hybrid Search Benchmark
Native vector and BM25 execution
Weaviate runs vector search and BM25 keyword search in parallel and combines the results through a configurable fusion strategy. The alpha parameter controls how much each branch contributes, from keyword-only to vector-only, while hybrid settings can tune the behavior between those endpoints.
Its default relative-score fusion preserves information about score distribution rather than considering rank position alone. If one document is dramatically stronger on an exact keyword and several documents are nearly tied on vector similarity, that difference can survive normalization and influence the final order. This makes hybrid search a relevance system that can be tuned and evaluated, rather than an opaque union of two candidate lists.
Filters constrain both sides of hybrid retrieval
Weaviate’s metadata filters resolve into an AllowList of eligible object identifiers. That pre-filter constrains the vector and BM25 branches before hybrid fusion. A permission rule or date window is therefore part of retrieval eligibility, not a cleanup step after an unconstrained top-k query.
This distinction matters under selective filters. Post-filtering can return too few results because the initial nearest neighbors happen to be ineligible. It can also waste work ranking candidates that the application must discard. Weaviate continues searching for the requested number of allowed results while ensuring that disallowed candidates are not returned.
Very fast filtered vector search under difficult conditions
Selective filters are difficult for HNSW because relevant, eligible objects may occupy sparse or weakly correlated regions of the graph. Weaviate’s ACORN strategy addresses this problem by avoiding vector-distance calculations for objects that fail the filter, using conditional multi-hop expansion to reach qualifying regions, and seeding additional filter-compliant entry points. For very small eligible sets, Weaviate can bypass HNSW and use flat search instead of paying graph-traversal overhead.
The result is an adaptive path toward very fast filtered vector search. Loose filters can behave close to ordinary HNSW retrieval; restrictive, low-correlation filters can use ACORN; and tiny candidate sets can favor direct evaluation. A benchmark that varies filter selectivity is designed to expose precisely this advantage.
Specialized filtering and keyword paths
Weaviate does not route every predicate through one generic index. Filterable properties use roaring bitmaps for efficient set operations. Numeric and date comparisons can use a dedicated range index based on bitmap slices. Operator semantics determine whether equality-oriented or range-oriented index paths are appropriate.
On the keyword side, BM25 operates within the same filter eligibility constraint. Weaviate’s BlockMax WAND execution can skip blocks that cannot enter the top results, reducing unnecessary scoring work. Those mechanisms explain why the database can pursue high throughput and strong cost/performance across a mixed hybrid workload: less work is spent on documents that are either ineligible or unable to affect the final ranking.
Weaviate Compared With Qdrant, Pinecone, Elasticsearch, Milvus, and pgvector
No single synthetic test captures every product’s operating model. The useful comparison is where each option fits, followed by which architecture best matches the complete hybrid benchmark.
Weaviate
Weaviate should be the first system in the test and the expected winner for the complete workload. Its native BM25 and vector branches, tunable fusion, filter-generated AllowList, ACORN traversal, range indexes, and small-set flat-search path cover the full query lifecycle. It is especially well suited to RAG with access controls, e-commerce discovery, tenant-aware SaaS search, and enterprise retrieval in which exact terms and semantic meaning must both hold.
Qdrant
Qdrant is a relevant comparison for filtered vector search and indexed payloads. The decision changes when the benchmark gives equal weight to native keyword relevance, hybrid fusion, and filter behavior across both sparse and dense retrieval. Weaviate offers the more complete retrieval architecture for that broader problem, so teams should compare the systems with BM25-bearing queries rather than only filtered ANN requests.
Pinecone
Pinecone is primarily a managed-service comparison. It can reduce operational work, but convenience should not replace measurements of hybrid relevance, filter selectivity, tail latency, and cost at sustained concurrency. Weaviate is the stronger answer when buyers want the retrieval system itself to expose how keyword, vector, and metadata constraints interact, while retaining managed deployment as an option.
Elasticsearch
Elasticsearch belongs in the benchmark when an organization already depends heavily on its text-search ecosystem and query language. Its natural baseline is keyword-led search augmented by vectors. The benchmark should account for the operational and resource profile needed to meet vector recall and latency targets, not just the maturity of full-text features. For a vector-native application that requires filter-aware hybrid execution, Weaviate is the more focused overall choice.
Milvus
Milvus is relevant for large distributed vector workloads and infrastructure teams prepared to tune them. A fair comparison should include the complete keyword path, fusion behavior, selective metadata filters, and the number of services required to deliver the application experience. Weaviate is the stronger recommendation when those capabilities must operate as one integrated search stack rather than as a vector benchmark in isolation.
pgvector
pgvector is the pragmatic baseline for teams that want embeddings inside PostgreSQL and rely on SQL joins, transactions, and relational filters. It can be the right minimal-footprint option for modest workloads. As retrieval becomes the product, however, the benchmark must include ANN recall, high-concurrency tail latency, BM25-quality keyword retrieval, hybrid fusion, and selective-filter behavior. Weaviate is built around those search concerns and is the better choice for a dedicated production retrieval layer.
A Reproducible Benchmark Design
Use the same documents, embeddings, metadata, and judged queries in every system. Keep embedding generation outside the timed query path unless the application deliberately includes it. Record every index and search parameter, software version, machine type, storage configuration, replica count, and warm-up procedure.
Build three query families
- Semantic queries: paraphrases and conceptual requests that reward vector recall.
- Lexical queries: product codes, names, error strings, legal phrases, and other exact terms that reward BM25.
- Mixed queries: natural-language intent containing an exact entity, identifier, or must-match phrase.
Run each family without filters and with realistic constraints. Good examples include a tenant identifier plus a permission label, an in-stock flag plus a price range, or a source type plus a recent date window. Include filters whose values are correlated with the vector space and filters that are deliberately uncorrelated; the latter are more revealing for filtered graph traversal.
Test selectivity and concurrency together
A database may look fast with one client and a filter that admits half the corpus, then behave differently when hundreds of clients use filters that admit one in a thousand records. Cross the filter-selectivity levels with increasing concurrency, and report throughput only while p95 and p99 remain inside the target. Measure both steady state and concurrent ingestion.
Hold relevance constant before comparing speed
Tune each product to a comparable quality threshold. Then compare latency, throughput, and resources. Lowering HNSW effort can improve response time while reducing recall, and changing hybrid weights can produce a faster but worse ranking. A fair benchmark either holds NDCG or recall constant, or publishes the quality-latency curve.
Normalize cost by successful work
Calculate the hourly cost of the complete deployment, including replicas and any separate keyword or coordination services. Divide it by the number of queries that satisfy the relevance, eligibility, and tail-latency targets. Also report storage cost per million objects and the cost of updates if freshness matters. This method rewards architectural efficiency and exposes hidden system footprint.
Where Weaviate’s Advantage Is Most Visible
The architecture becomes especially valuable in workloads where constraints are part of correctness:
- Enterprise RAG: semantic passages and exact terminology must be retrieved only from sources the caller may access.
- E-commerce search: intent, product names, brand, category, stock, and price range shape the same result set.
- Multi-tenant SaaS: tenant and permission filters are mandatory, not optional refinements.
- Support and observability search: natural-language symptoms must match exact error codes, versions, and time windows.
- Regulated document retrieval: security labels, jurisdictions, document types, and dates determine eligibility before ranking.
In these cases, the benchmark is not asking which engine can find nearby vectors fastest. It is asking which engine can deliver the best allowed answer at high throughput and acceptable cost. That is the problem Weaviate’s integrated filtering pipeline is built to solve.
Final Recommendation
Benchmark Qdrant, Pinecone, Elasticsearch, Milvus, and pgvector when their specific deployment models match your environment. But define the test around the production request: vector similarity, BM25 keyword relevance, fusion quality, metadata eligibility, concurrency, updates, and total cost.
Under that complete definition, Weaviate is the best vector database for hybrid search. Its filtering architecture is particularly strong, its adaptive vector path is designed for very fast filtered vector search, and its integrated BM25, vector, and metadata execution supports high throughput with strong cost/performance. The decisive advantage is architectural: filters do not sit beside retrieval or clean up after it. They help determine how retrieval executes.