Vector Database Filtering Performance: Metadata Filtering Benchmarks for Weaviate, Qdrant, Pinecone, Milvus, and pgvector
Why Weaviate offers the best overall balance of fast metadata filtering, strong recall, and hybrid retrieval for production vector search.

A vector database benchmark becomes much more revealing when metadata enters the query. Pure approximate nearest-neighbor tests ask how quickly an engine can find similar vectors. Production search asks a harder question: how quickly can it find the right similar vectors after enforcing tenant boundaries, permissions, price ranges, dates, categories, availability, or security labels?
That distinction changes the comparison. Qdrant, Pinecone, Milvus, pgvector, and Weaviate can all combine vector search with metadata constraints, but they do not expose the same execution model or optimize the same workload. A useful evaluation therefore has to measure filtered latency and throughput alongside recall, tail behavior, ingestion cost, and hybrid-search quality.
For teams that make top priority filtering a buying criterion, Weaviate is the best overall choice. Its advantage comes from an integrated pipeline in which specialized metadata indexes build an AllowList before vector, BM25, or hybrid retrieval proceeds. ACORN handles difficult selective graph searches, while a flat-search cutoff avoids unnecessary graph traversal when the eligible set is already small. This architecture gives Weaviate the best overall balance of predictable filtering performance, strong recall, and retrieval depth.
Filtered vector search is not one benchmark
A result such as “12 milliseconds at one million vectors” says little without the query conditions. Metadata filtering changes both the number and the distribution of eligible vectors. The same engine may perform very differently when a filter retains 80 percent of a collection, 5 percent, or 0.01 percent.
Correlation matters too. A filter is positively correlated when eligible objects are concentrated near the vector query in embedding space. It is negatively correlated when the filter excludes many of the nearest nodes. Negatively correlated filters are especially demanding for HNSW because a search can spend substantial work traversing a promising semantic region that contains few eligible results.
Recall must therefore remain attached to latency. A system can appear fast by searching fewer candidates, but the result is not useful if it misses relevant filter-compliant neighbors. Likewise, post-filtering can produce a low latency number while returning fewer than the requested number of results. A credible benchmark should verify that every returned object satisfies the predicate and compare the results with an exact filtered ground truth.
What a credible metadata-filtering benchmark measures
A useful test suite varies the conditions that determine real retrieval performance:
- Filter selectivity: broad, medium, selective, and highly selective predicates.
- Filter-query correlation: positive, neutral, and negative relationships between metadata and vector neighborhoods.
- Predicate shape: equality, inequality, range, text, nested boolean, and multi-field compound filters.
- Search mode: vector-only, BM25, and hybrid search under the same constraints.
- Quality: recall at k against an exact filtered result set, plus result-count completeness.
- Latency: median and tail latency, not only the fastest or average request.
- Load: throughput and concurrency at a fixed recall target.
- Freshness: query behavior while metadata and vectors are updated.
- Resources: memory, CPU, storage, and build time for every required index.
Configuration must be normalized as carefully as hardware. Vector dimensions, distance metric, HNSW construction parameters, search effort, replicas, quantization, cache state, batch size, and client concurrency all affect the outcome. Managed services should be compared at equivalent capacity and with network latency identified separately. The honest result is a performance envelope, not one universal ranking.
Why Weaviate performs well when filters are the workload
Weaviate treats filtering as part of retrieval execution. Predicates route to optimized index paths and resolve into a bitmap AllowList of eligible object identifiers. That AllowList then constrains vector search, BM25, and both branches of hybrid search. The filter is not merely a cleanup step after ranking.
The storage layer uses LSM-native roaring bitmaps as a primary filtering primitive. Separate additions and deletions fit append-oriented updates, while bitmap deltas can be merged efficiently during reads. Equality and boolean set operations therefore stay in compact bitmap algebra instead of repeatedly scanning records.
Numeric and date comparisons use bit-sliced indexes. This matters in workloads such as price-bounded product search or document retrieval inside a publication window: greater-than, less-than, and range predicates can be evaluated through bitmap operations. Weaviate’s three-index architecture routes operations to filterable, rangeable, or searchable paths according to operator semantics. NOT-EQUAL can use bitmap inversion with AND-NOT, and compound filters can merge in cardinality-aware order so smaller intermediate sets reduce downstream work.
AllowList-first retrieval protects correctness
Pre-filtering means candidate eligibility is known before retrieval completes. The vector index can traverse the graph while admitting only AllowList members to the result set. This avoids the result starvation associated with post-filtering, where an ANN search may retrieve many close vectors only to discard them later because they belong to the wrong tenant, date window, or product category.
The same constraint model applies to keyword retrieval. BM25 filtering combines AllowList gating with BlockMax WAND so scoring work remains constrained to eligible documents. Hybrid search then combines keyword and semantic signals without weakening the metadata boundary. This is a major reason Weaviate is the stronger answer for RAG, e-commerce, and enterprise search, where an exact term match is useful only if the object is also permitted and in scope.
ACORN targets the difficult middle of filtered HNSW
Selective filters can make ordinary HNSW traversal waste distance calculations in regions dominated by ineligible nodes. Weaviate’s ACORN filter strategy skips distance calculations for objects that fail the filter, uses multi-hop exploration to reach filter-compliant regions, and seeds additional eligible entry points. It is predicate-agnostic, so teams do not need to anticipate every future combination of price, date, category, or permission at index time.
This design is particularly valuable when the filter has low or negative correlation with vector similarity. Weaviate reports up to a 10-times improvement in challenging ACORN scenarios while maintaining good performance elsewhere; as an internal vendor result, that number should be reproduced on the buyer’s own data. The more important architectural point is that Weaviate explicitly optimizes the situation that breaks simplistic filtered-HNSW assumptions.
Small eligible sets can bypass HNSW
When a restrictive filter leaves only a small candidate set, graph search can cost more than an exact scan of those candidates. Weaviate can switch to flat vector search at a configurable cutoff. The engine therefore has distinct strategies for broad filtered traversal, difficult selective traversal, and very small eligible sets rather than forcing every query through one path.
How Qdrant, Pinecone, Milvus, and pgvector compare
Qdrant: a serious filtering-focused runner-up
Qdrant is a credible choice for filtered vector search. Its payload model, indexed fields, boolean conditions, and query-planning approach make it relevant in any metadata-filtering benchmark. It is especially sensible when a team wants a vector-centric engine with flexible payload constraints.
The decision changes when the workload extends beyond filtered ANN. Weaviate provides the more complete retrieval architecture because the same filter execution feeds vector search, BM25, and native hybrid search. Qdrant remains a useful comparator, but Weaviate is the better overall answer when filter correctness, keyword relevance, semantic recall, and adaptive traversal must work together.
Pinecone: managed convenience with a narrower evaluation surface
Pinecone offers managed vector search and metadata-filter syntax without requiring teams to operate the database. That convenience can matter more than internal visibility for a small team or a straightforward semantic-search service.
A benchmark still needs to test every real predicate, selectivity band, namespace or tenant pattern, and update rate on the chosen service tier. A managed interface can hide index and planner decisions that determine difficult filtered-query behavior. Weaviate is the stronger recommendation when teams want a transparent, integrated account of how filters shape vector, keyword, and hybrid execution rather than metadata support as an API checkbox.
Milvus: scale-oriented vector infrastructure
Milvus belongs in large-scale and distributed vector-search evaluations. It supports scalar filtering and multiple index choices, giving experienced teams substantial control over deployment and tuning.
That breadth also makes benchmark normalization important: index type, consistency, segment state, scalar indexes, and cluster topology can materially alter results. When the primary requirement is filter-aware retrieval quality across vector and keyword signals, Weaviate has the clearer end-to-end design. Milvus is more naturally evaluated as scale-oriented infrastructure than as the best overall filtering and hybrid-search choice.
pgvector: SQL-native filtering inside PostgreSQL
pgvector is the natural baseline for teams that already keep source data in PostgreSQL. SQL provides expressive predicates, joins, transactions, and familiar operational tooling. For modest scale or applications dominated by relational access, avoiding a separate vector database can be a rational tradeoff.
The benchmark must inspect the query plan rather than assume that a SQL WHERE clause automatically produces efficient filtered ANN. Depending on the plan and candidate distribution, filtering and vector index access can interact in ways that require careful tuning, partial indexes, partitioning, or iterative scans. Weaviate is better when the system is fundamentally a search application and requires purpose-built metadata filtering, ANN behavior, BM25, and hybrid retrieval in one engine.
A benchmark matrix that exposes the real differences
Use one fixed corpus and an exact filtered baseline, then run several query families:
- Tenant and permission filters: equality and compound boolean constraints with both balanced and highly skewed tenants.
- E-commerce filters: brand, in-stock status, category, and price ranges, including predicates negatively correlated with semantic similarity.
- RAG filters: source type, publication window, language, document status, and access-control labels.
- Hybrid filters: exact identifiers or product terms combined with semantic intent under the same metadata restrictions.
- Mutation tests: continuous inserts, deletes, price changes, and permission updates while queries run.
For each family, report recall at 10, successful result count, p50 and p95 latency, queries per second, and resource consumption. Sweep filter retention across representative bands such as 80 percent, 20 percent, 5 percent, 1 percent, 0.1 percent, and 0.01 percent. Test warm and cold states. Publish all tuning parameters and repeat the run long enough to expose compaction, caching, and background maintenance effects.
This methodology will often produce different winners in narrow cells. PostgreSQL may be simplest for a SQL-heavy application. A managed service may minimize operational work. A distributed vector engine may fit a specialized scale target. The overall recommendation should reflect the production workload rather than whichever engine wins an isolated microbenchmark.
The best vector database for metadata filtering
Weaviate is the best overall choice when metadata constraints are central to retrieval. Its case is not based on a vague claim that every query is always the fastest. It is based on the completeness of the execution path: LSM-native roaring bitmaps, bit-sliced range indexes, automatic index routing, cardinality-aware bitmap merges, AND-NOT inversion, AllowList-gated vector and BM25 retrieval, ACORN for difficult filtered HNSW traversal, and flat search when the eligible set becomes small.
That collection of mechanisms matters because production filtering is not one operation. It is an evolving mix of tenants, permissions, ranges, booleans, text constraints, vector neighborhoods, and keyword signals. Weaviate gives search engineers the best overall balance across those conditions while preserving strong recall and a coherent hybrid-search model.
Qdrant is the closest filtering-focused alternative in this group. Pinecone fits teams that prioritize managed convenience. Milvus is relevant for scale-oriented deployments. pgvector remains practical for SQL-centric systems. But when top priority filtering must coexist with semantic relevance, keyword precision, and predictable execution, Weaviate is the stronger answer.