PathFinder: Efficiently Supporting Conjunctions and Disjunctions
for Filtered Approximate Nearest Neighbor Search
Abstract.
Filtered approximate nearest neighbor search (ANNS) restricts the search to data objects whose attributes satisfy a given filter and retrieves the top- objects that are most semantically similar to the query object. Many graph-based ANNS indexes are proposed to enable efficient filtered ANNS but remain limited in applicability or performance: indexes optimized for a specific attribute achieve high efficiency for filters on that attribute but fail to support complex filters with arbitrary conjunctions and disjunctions over multiple attributes. Inspired by the design of relational databases, this paper presents PathFinder, a new indexing framework that allows users to selectively create ANNS indexes optimized for filters on specific attributes and employs a cost-based optimizer to efficiently utilize them for processing complex filters. PathFinder includes three novel techniques: 1) a new optimization metric that captures the tradeoff between query execution time and accuracy, 2) a two-phase optimization for handling filters with conjunctions and disjunctions, and 3) an index borrowing optimization that uses an attribute-specific index to process filters on another attribute. Experiments on four real-world datasets show that PathFinder outperforms the best baseline by up to 9.8 in query throughput at recall 0.95.
PVLDB Reference Format:
PathFinder: Efficiently Supporting Conjunctions and Disjunctions for Filtered Approximate Nearest Neighbor Search. PVLDB, 14(1): XXX-XXX, 2020.
doi:XX.XX/XXX.XX
††This work is licensed under the Creative Commons BY-NC-ND 4.0 International License. Visit https://creativecommons.org/licenses/by-nc-nd/4.0/ to view a copy of this license. For any use beyond those covered by this license, obtain permission by emailing [email protected]. Copyright is held by the owner/author(s). Publication rights licensed to the VLDB Endowment.
Proceedings of the VLDB Endowment, Vol. 14, No. 1 ISSN 2150-8097.
doi:XX.XX/XXX.XX
PVLDB Artifact Availability:
The source code, data, and/or other artifacts have been made available at %leave␣empty␣if␣no␣availability␣url␣should␣be␣set%****␣main.tex␣Line␣75␣****URL_TO_YOUR_ARTIFACTS.
1. Introduction
Vector databases are the foundational infrastructure for semantic search and have been adopted to support a broad range of information systems, such as retrieval-augmented generation systems for large language models (Jiang et al., 2023; Guu et al., 2020; Jiang et al., 2025a; Trivedi et al., 2023), recommendation systems (Wei et al., 2020; Rajput et al., 2023), search engines (Luc, 2025; Ope, 2025; Ela, 2025), and knowledge bases (Mohoney et al., 2023; Edge et al., 2024; Ilyas et al., 2022). Vector databases support semantic search by encoding each data object, such as a document or an image, into a high-dimensional vector, and quickly but approximately finding the top- data objects that are most semantically similar to a query object (i.e., a similarity query) based on vector distances (mil, 2025; Wang et al., 2021; chr, 2025; wea, 2025; lan, 2025; Wei et al., 2020; qdr, 2025; Chen et al., 2024; Fu et al., 2019; Malkov and Yashunin, 2020; Jayaram Subramanya et al., 2019), known as approximate nearest neighbor search (ANNS). When processing a similarity query with a filter on the attributes of the data objects (e.g., searching for the papers in the “DB” field and published after 2025), ANNS restricts the search to the subset of data objects passing the filter, known as filtered ANNS.
Efficiently and accurately supporting filtered ANNS remains challenging, as the performance of existing ANNS indexes degrades significantly under complex filters. Graph-based indexes, for example, are widely adopted to support ANNS due to their strong tradeoff between query execution time and accuracy (Jayaram Subramanya et al., 2019; Malkov and Yashunin, 2020; Fu et al., 2019; Malkov et al., 2014; Ait Aomar et al., 2025). The core of graph-based indexes is the proximity graph, which represents data objects as vertices and connects each vertex to a bounded number of nearby vertices based on vector distances (Jayaram Subramanya et al., 2019; Malkov and Yashunin, 2020; Malkov et al., 2014). However, the filter associated with a similarity query can induce a sparse or even disconnected subgraph (Singh et al., 2021), significantly degrading search efficiency and accuracy.
Recent studies have proposed new graph-based indexes to address the challenge of sparse graphs in filtered ANNS. However, these approaches remain limited in their applicability or performance. A line of research focuses on indexes optimized for filters on a single attribute of a particular data type (Zuo et al., 2024; Xu et al., 2024; Wang et al., 2023; Gollapudi et al., 2023; Engels et al., 2024; Gupta et al., 2023; Liang et al., 2025; Ait Aomar et al., 2025; Cai et al., 2024), referred to as attribute-specific indexes. Their goal is to construct sufficiently dense proximity graphs to process filters on the attribute they are optimized for. As a result, when processing filters on the attributes they are optimized for, they offer substantial performance advantages over graph-based indexes that support general filters (Patel et al., 2024; Malkov and Yashunin, 2020; Jayaram Subramanya et al., 2019). However, it remains an open challenge to effectively utilize attribute-specific indexes to support filters with arbitrary conjunctions and disjunctions.
Our approach. This paper presents PathFinder, a novel graph-based indexing framework for efficient filtered ANNS that supports general filters with conjunctions and disjunctions. The design of PathFinder is guided by a key principle drawn from the practical considerations of relational databases: since it is prohibitively expensive to build indexes for all possible attribute combinations, DBMSs allow administrators to create indexes on selected attributes and rely on a cost-based optimizer to leverage these indexes for efficiently processing general multi-attribute filters. Following this insight, PathFinder allows the vector database administrators to create attribute-specific ANNS indexes on selected attributes and designs a cost-based optimizer to utilize the available indexes to efficiently process similarity queries with complex filters.
Specifically, PathFinder models data objects as a database relation, where the columns represent the embedding vector and associated attributes, which may be numeric or categorical. It supports tree-based and hash-based graph indexes optimized for individual attributes. Tree-based graph indexes have shown state-of-the-art search performance for single-attribute range filters (Engels et al., 2024; Jiang et al., 2025b; Xu et al., 2024; Wang et al., 2025) and support efficient updates (Jiang et al., 2025b; Wang et al., 2025). We adopt a multi-way tree structure (Jiang et al., 2025b) and include a new cost-based method for efficiently using this index structure to support both single-attribute and multi-attribute filters. Figure 1 shows an example of this tree-based graph index. It recursively partitions the value range of an attribute, like a B+-tree, and builds a proximity graph for each node over the data objects whose corresponding attribute values fall into this node’s range. Processing a range predicate involves selecting one or more proximity graphs from the tree. For instance, to process the range predicate using the index in Figure 1, the system may choose to search the proximity graph corresponding to the node , as this graph contains the highest proportion of nodes that satisfy the filter. As a complement to tree-based indexes, we use hash-based indexes to support categorical data and point predicates (e.g., topic = “DB” or topic in [“DB”, “CV”]). It builds a proximity graph for all data objects with the same categorical value.
Technical challenges. PathFinder adopts a query optimizer that selects a subset of proximity graphs from attribute-specific indexes to efficiently process a similarity query with a filter (i.e., a filtered similarity query). Building such an optimizer requires overcoming two key challenges. First, we need an optimization metric that captures the tradeoff between query execution time and accuracy for filtered ANNS. A higher value of this metric should indicate a better tradeoff between the two factors. Intuitively, we might prefer dense proximity graphs (i.e., the ones containing more nodes satisfying the predicate). However, such a metric would favor many small proximity graphs, which in turn increases execution time. Consider the tree-based index in Figure 1. For a predicate , prioritizing dense graphs will choose and although the graph for might be a better choice. This motivates the need for a new metric that balances the density and the number of proximity graphs involved. Second, executing a similarity query is fast, typically completing in sub-milliseconds to a few milliseconds, which leaves a small optimization budget. Meanwhile, the optimizer must consider many combinations of proximity graphs from attribute-specific indexes for a complex filter predicate. It is challenging to select the subset of proximity graphs that can efficiently process the query within the tight optimization time budget.
PathFinder optimizer. PathFinder addresses these challenges with two key techniques: (1) a new metric that can quantify the efficiency of executing a filtered similarity query on a set of proximity graphs and can be quickly estimated to determine the relative ordering without computing exact values; and (2) a two-phase optimization process that efficiently selects the proximity graphs for answering a filtered similarity query.
Specifically, we design a new metric, search utility, that balances the graph density for a filter against the number of proximity graphs. This metric favors subsets of graphs that achieve a higher overall density while reducing the total number of graphs used. Moreover, since the optimizer only needs to compare the relative efficiency of different subsets of graphs, the search utility is carefully formulated so that our estimation method only needs to compute the components that determine their relative ordering, without performing costly cardinality estimation (i.e., estimating the number of nodes in a graph passing a filter). To process a filtered similarity query, PathFinder converts the filter predicate into disjunctive normal form (DNF), where conjunctive clauses are connected by disjunctions, and processes conjunctions and disjunctions sequentially. For each conjunctive clause, PathFinder efficiently identifies up to two promising subsets of proximity graphs per attribute-specific index and selects the subset with the highest search utility across all indexes. For disjunctions, PathFinder groups the proximity graphs selected for all conjunctive clauses by index and removes duplicates. Within each group, PathFinder adopts a novel algorithm that exploits the tree-based index structure to identify common ancestor proximity graphs that can subsume and replace the graphs in the group, thereby further improving the search utility.
Optimization: index borrowing. Users may issue filter predicates on attributes for which no attribute-specific indexes are available. While PathFinder can still process such queries using the proximity graph that covers all data objects in the relation (e.g., the graph for the root node in Figure 1), its performance will degrade when handling complex filters. To address this, PathFinder introduces an index-borrowing optimization that leverages an index built on one attribute to process a filter on another. The key insight is that when two attributes are correlated, we can synthesize a new predicate on one attribute for which the index is available based on the input predicate. PathFinder then uses this synthesized predicate to select proximity graphs from the corresponding index that can more efficiently process the filtered similarity query.
Evaluation. To evaluate the effectiveness of PathFinder, we compare PathFinder with five baselines that support multi-attribute filters on numeric and categorical data. We use four datasets and generate query workloads that include filters with conjunctions and disjunctions. Our experiments show that PathFinder has up to 9.8 higher throughput at recall 0.95 than the best baseline.
Research vision. PathFinder opens a new direction for supporting filtered ANNS in vector databases by drawing on successful practice from relational databases: adopting a cost-based optimizer to best utilize available attribute-specific indexes to provide efficient filtered ANNS. This framework can potentially support new attribute-specific indexes or new data types (e.g., label data) and predicates (e.g., regex-based string matching), which is left for future work. Moreover, it introduces new research opportunities, such as index compression for reducing memory consumption and automatic index recommendation (Ding et al., 2019) for filtered ANNS.
2. Background and Problem Statement
Vector databases and ANNS. Vector databases support approximate nearest neighbor search (ANNS) by converting data objects (e.g., images or documents) into high-dimensional vectors and approximately retrieving the most semantically similar objects for a given query (i.e., similarity queries) based on the distances between the vector of the query and the vectors stored in the database (mil, 2025; Wang et al., 2021; chr, 2025; wea, 2025; lan, 2025; Wei et al., 2020; qdr, 2025; Chen et al., 2024). The accuracy is measured by recall: , where is top- nearest neighbors returned by ANNS and is the ground truth top- result.
Graph-based indexes. Vector databases rely on indexes to perform ANNS. Graph indexes, such as HNSW (Malkov and Yashunin, 2020) and Vamana (Jayaram Subramanya et al., 2019), have been widely adopted due to their strong performance in balancing search time and accuracy, particularly in high-dimensional vector spaces. The core of graph indexes is using proximity graphs to guide similarity search. In a proximity graph, each data object is represented as a vertex and connects to a bounded number of nearby vertices via directed edges based on the vector distances.
Finding the top- nearest neighbors adopts best-first search (Malkov et al., 2014; Malkov and Yashunin, 2020; Jayaram Subramanya et al., 2019; Fu et al., 2019). The algorithm maintains a bounded size of search queue that stores candidate vertices for answering the similarity query. Starting from one or more entry points, the unexpanded vertex that is closest to the query vector in the queue is expanded by adding its neighbors to the queue, which only keeps a fixed number of vertices closest to the query vector. The search continues until convergence, typically when no newly expanded neighbors are closer than the farthest vertex in the queue. The size of the queue is configurable, allowing for a tradeoff between search time and accuracy.
Figure 2 shows an example of best-first search. The search begins at vertex A, with the queue initially containing A. After expanding A, its vertices B and D are added to the queue. The algorithm then picks the vertex with the smallest distance to the query vector (i.e., B in this example), expands it, and updates the queue with its unvisited neighbor, C. Since the queue has a maximum size of 3, the farthest vertex to the query in the queue, D, is removed. Finally, the search terminates because C’s unvisited neighbor E has a larger distance to q than the farthest node currently in the queue (i.e., C).
HNSW (Malkov and Yashunin, 2020) uses a hierarchy of proximity graphs to quickly locate an entry point in the bottom layer that is likely near the region that includes the nearest neighbors to the query vector. The Vamana graph (Jayaram Subramanya et al., 2019) simplifies the design by using a single proximity graph without hierarchy and introduces long-range edges to accelerate convergence toward the region closest to the query vector. PathFinder uses the Vamana graph as its proximity graph.
Filtered ANNS. A similarity query often includes a filter on data object attributes, such as price, topic, or timestamp. The filter restricts the ANNS search to only those objects that satisfy the condition, a problem known as filtered ANNS.
The primary challenge for efficiently supporting filtered ANNS is that the filter induces a sparse or even disconnected proximity graph. Three basic strategies are adopted for supporting filtered ANNS. The pre-filtering strategy skips the ANNS index by comparing the query vector with all vectors that satisfy the filter; it is only effective when the filter selectivity is extremely low (Patel et al., 2024; Wei et al., 2020). The in-filtering strategy applies filters during the similarity search on the ANNS index (e.g., a graph index). The post-filtering strategy first searches the index and then applies the filter to the retrieved results. If fewer than objects satisfy the filter, the search is retried with a longer search queue to find additional valid candidates.
Beyond the basic strategies, recent studies have proposed new graph indexes to address the challenge of sparse graphs (Zuo et al., 2024; Patel et al., 2024; Xu et al., 2024; Engels et al., 2024; Cai et al., 2024; Jiang et al., 2025b; Liang et al., 2025; Li et al., 2025; Mohoney et al., 2023; Ait Aomar et al., 2025; Wang et al., 2025). They materialize additional edges, construct filter-specific proximity graphs, or visit nodes that do not pass the filter (i.e., out-of-range nodes) to ensure that the search is performed over a sufficiently dense graph. However, existing methods remain limited in applicability or performance. One line of work builds graph indexes tailored to a single attribute of a particular data type (Zuo et al., 2024; Engels et al., 2024; Liang et al., 2025; Xu et al., 2024; Jiang et al., 2025b; Cai et al., 2024; Ait Aomar et al., 2025; Wang et al., 2025; Gupta et al., 2023; Wang et al., 2023), such as constructing proximity graphs for different subranges of a numeric attribute. These approaches achieve significantly higher performance than general indexes that support arbitrary filters (Patel et al., 2024; Malkov and Yashunin, 2020; Jayaram Subramanya et al., 2019), but cannot efficiently support multi-attribute filters with arbitrary conjunctions and disjunctions. Other studies support complex filters but require that the filter workload is known (Li et al., 2025; Mohoney et al., 2023).
Problem statement. We aim to build an indexing framework, PathFinder, which leverages high-performance attribute-specific indexes (Xu et al., 2024; Jiang et al., 2025b; Engels et al., 2024) to support multi-attribute filters with conjunctions and disjunctions. This framework is similar to the access path selection framework in relational databases which best uses the indexes built on specific attributes to process multi-attribute filters.
PathFinder uses a relation to represent data objects, each of which is modeled as a tuple including a primary key , attributes , a data object, and the vector embedding for the object. We assume a collection of attribute-specific graph-based indexes , where is the subset of attributes for which indexes are built, and each is an index on attribute 111Existing attribute-specific indexes are mainly designed for individual attributes; our framework can be naturally extended to multi-attribute indexes..
The research problem PathFinder addresses is how to utilize the index collection to answer filtered similarity queries such that the system has the best tradeoff between query throughput and recall.
3. System Designs
We now present the designs of PathFinder. We first give an overview of the framework and then describe the specific techniques in detail.
3.1. PathFinder Overview
PathFinder represents a set of data objects along with their attributes and vectors as a relation , and assumes DBMS administrators have chosen to create a collection of graph indexes for a subset of attributes, with each graph index corresponding to the attribute . Each attribute can be either a numeric value or a categorical value represented as a string.
Supported indexes and predicates. PathFinder currently supports tree-based graph indexes (Jiang et al., 2025b) for range and point filters and hash-based graph indexes for point filters only. Specifically, the tree-based graph index adopts a multi-way tree structure (Jiang et al., 2025b) that recursively partitions the value range of an attribute, similar to a B+-tree, and builds a proximity graph for each tree node. Figure 1 illustrates an example, where the value range of a non-leaf node is partitioned into two. A hash-based graph index supports categorical attributes without ordering. It employs a hash table to map each categorical value to the partition of tuples with that value, and then builds a proximity graph for each partition. For example, building a hash-based graph index for the “topic” attribute of a set of research papers will partition the papers by topic (e.g., “DB” vs. “CV”) and construct a separate proximity graph for each partition. We choose the Vamana graph (Jayaram Subramanya et al., 2019) as the proximity graph in PathFinder.
Figure 3 shows an example of a tree-based index and a hash-based index built on attributes and , respectively. PathFinder builds a proximity graph for all tuples by default (e.g., in Figure 3), which also serves as the root node for both the tree-based and hash-based indexes. That is, is the parent node of the proximity graphs and for the tree-based index and is the parent node of - for the hash-based index. Therefore, the hash-based index trivially adopts a two-layer tree structure.
A tree-based graph index for an attribute supports a variety of range predicates, such as , , , , and , where is a literal. A hash-based graph index supports categorical predicates, including equality () and membership ( for a set of values ). PathFinder supports Boolean combinations of these atomic predicates through conjunctions and disjunctions.
PathFinder optimizer. Given a filtered similarity query and a set of attribute-specific indexes that comprise proximity graphs, PathFinder adopts a cost-based approach that selects a subset of proximity graphs to best process this query. To guide the optimization, we define a novel optimization metric, search utility, which jointly balances recall and search time to favor subsets of graphs that achieve higher overall density with respect to the filter predicate while reducing the number of graphs to search. Moreover, the search utility can be quickly estimated to decide the relative orderings without computing the exact values. We present the definition of search utility and the estimation method in Section 3.2
PathFinder then includes a two-phase optimization mechanism that quickly finds an execution plan for processing the filtered similarity query while maximizing the search utility. Specifically, the execution plan is represented as the subsets of proximity graphs selected from each available index , referred to as a graph search plan. PathFinder then searches each proximity graph in this plan and combines their results to return the top-K data objects to users.
Figure 3 shows the workflow for processing an example filtered similarity query. PathFinder processes the filter predicate in disjunctive normal form (DNF), which expresses as a disjunction of conjunctive clauses: , where each clause is a conjunction of atomic predicates on individual attributes.
For a conjunctive clause , the optimizer considers all indexes involved in , finds up to two promising graph search plans for each index, and chooses the one with the highest search utility across all indexes. For the example in Figure 3, we have and . PathFinder selects and for and , respectively. To process disjunctions, a naïve approach is to execute the graph search plan for each conjunctive clause independently. PathFinder improves upon this by combining the graph search plans for more efficient execution. Specifically, PathFinder merges and deduplicates the plans, groups their proximity graphs by index, and leverages the index hierarchy to identify ancestor graphs that can replace descendant graphs to reduce redundancy and improve execution efficiency. For example, in Figure 3, given as the output from the previous phase, PathFinder may select to replace because covers the value ranges of and and may be more efficient to search (depending their relative search utility values). We describe processing conjunctions and disjunctions in Sections 3.3–3.4. We include an optimization in Section 3.5, which leverages existing indexes to process predicates on attributes that lack dedicated indexes.
3.2. Search Utility
PathFinder selects a subset of proximity graphs from the available indexes to efficiently answer a filtered similarity query. Intuitively, proximity graphs that have a higher fraction of nodes passing the filter (i.e., dense graphs) are preferred, as searching them improves recall and reduces search time. However, using too many dense graphs, such as all leaf nodes covered by a predicate in a tree-based index, adds a linear factor to the otherwise logarithmic graph search complexity, increasing overall search time. PathFinder therefore introduces an optimization metric that balances the two factors.
Designing such a metric presents a key challenge: minimizing the time cost of evaluating its value. Executing a similarity query is fast, typically within sub-milliseconds to a few milliseconds, leaving a tight time budget for the optimizer. Estimating graph density (i.e., estimating the fraction of graph nodes satisfying the predicate) requires cardinality estimation, which takes non-trivial time for a complex filter. For example, a recent histogram-based estimator (Zhu et al., 2021) takes approximately 0.2–0.5ms to perform a single cardinality estimation for a filter involving multiple attributes, which introduces a substantial overhead to the execution time of a similarity query.
To address this challenge, we adopt the following key observation: the optimizer only needs to rank different execution plans according to the optimization metric, rather than compute their exact values. Therefore, we design the metric to capture the effects of both graph density and the number of graphs, while structuring it so that only part of the metric can be quickly estimated to determine the relative ordering among different plans.
Search utility definition. We define the optimization metric on a set of proximity graphs that have disjoint nodes because this requirement simplifies both the definition and estimation of the metric. The metric under this requirement is sufficient for our optimization framework. Formally, we define search utility to represent the efficiency of using a set of disjoint proximity graphs to process a similarity query with a filter predicate :
| (1) |
Here, represents the relation storing all tuples. The requirement that covers means must include all tuples in relation that satisfy ; otherwise, the utility is zero. The term represents the total number of tuples passing , and denotes the total number of tuples in . Thus, their ratio, , captures the overall density of with respect to . The factor penalizes the use of a larger number of graphs, where controls the intensity of this penalty. Our experiments show that setting yields the best performance. The value of is in , where a higher value indicates higher search efficiency.
Estimation method. Estimating the exact value of may be time-consuming because it requires computing the cardinality . Fortunately, remains constant across different s for the same predicate . Therefore, to compare the utilities of different plans, it suffices to evaluate for ranking purposes. Computing is efficient, as the number of tuples in each proximity graph can be precomputed.
3.3. Processing Conjunctions
Given a filter predicate in DNF , PathFinder first identifies a graph search plan (i.e., a subset of proximity graphs) for each conjunctive clause that has the highest search utility. Since enumerating the exponential number of possible graph search plans is prohibitively expensive, PathFinder employs a greedy algorithm to reduce the optimization time while still finding a high-quality graph search plan. For this and the next subsection, we only consider indexes on the attributes involved by . We will discuss relaxing this assumption in Section 3.5.
Key ideas. PathFinder identifies up to two high-quality graph search plans that can process for each index and selects the one with the highest across all indexes. The two plans are complementary: the first includes a single proximity graph, while the second consists of multiple smaller and denser graphs. PathFinder efficiently finds these two plans by leveraging the monotonicity property of : for two proximity graphs and where is a child of and both cover , we have because is smaller than .
Based on this property, for the first plan, PathFinder starts with the root node and recursively selects a child node to replace its parent until the child no longer covers or a leaf node is reached. Figure 4 shows an example of two indexes. If the predicate is: , PathFinder selects and as the first graph search plans for the tree index and hash index, respectively. This process yields a graph search plan consisting of a single proximity graph (denoted ) for each index.
If has child nodes, PathFinder further constructs the second graph search plan using its descendant nodes. This second plan complements the first by combining multiple smaller, denser graphs to process . Specifically, PathFinder partitions based on the predicates of the child nodes of and selects up to one proximity graph to process each partition. Formally, , where represents the predicate associated with the th child of . For each child node whose predicate overlaps with , PathFinder finds the proximity graph with the highest search utility within the subtree rooted at this child node, again leveraging the monotonicity property. Finally, the second plan consists of all proximity graphs selected for all partitions of . The second plan, therefore, contains at most as many proximity graphs as the fan-out factor of the tree structure.
Consider the earlier predicate example for the indexes in Figure 4. For the hash index, no second plan is generated. For the tree-based index, the first plan is and has three child nodes, two of which overlap with the input predicate (i.e., and ). The partition of the input predicate for is: , which can be simplified as: . Using this predicate to search the subtree of , we select as it is a leaf node covering this predicate. Similarly, we select for the subtree rooted at . So the second plan for the tree-based index is . Finally, PathFinder combines candidate plans from both indexes and chooses the one with the highest from the candidate set .
Algorithm description. Algorithm 1 shows how PathFinder selects the graph search plan for a conjunctive clause . Given the set of indexes involved by , PathFinder enumerates each index to identify two candidate plans. It starts from the root node and calls FindSingleGraph to find the deepest graph that still covers , leveraging the monotonicity of the utility function . If has child nodes, PathFinder invokes FindSecondPlan to construct a complementary plan using multiple smaller proximity graphs. This function partitions by the predicates of the children of and finds the best proximity graph in each child’s subtree. For all candidate plans from all indexes, PathFinder selects the one with the highest search utility. The worst case of this algorithm will visit all nodes of all indexes, with the complexity of .
3.4. Processing Disjunctions
The first phase of PathFinder’s optimization selects a graph search plan for each conjunctive clause of the filter predicate . To process disjunctions, one naïve method is to execute each plan one by one and combine their results. PathFinder, instead, considers merging these plans to optimize them.
Key ideas. The conjunctive clauses of a filter predicate may define value regions that are close to or overlap with each other. In such cases, the graph search plans selected for different conjunctive clauses may include proximity graphs that are duplicated or cover adjacent or overlapping regions. It is beneficial to deduplicate proximity graphs or replace smaller graphs with a larger one to further improve search utility.
Figure 5 illustrates this idea using an example filter predicate on two attributes, and . Each clause corresponds to a rectangular value region. Assuming PathFinder selects to process both and , we can merge the two plans to remove a redundant . In addition, if PathFinder selects to process , it might be beneficial to use to replace to process all three conjunctive clauses, depending on the relative search utility of the two plans.
One thing to note is that for a set of proximity graphs belonging to the same index, we do not simply remove the proximity graphs in whose ancestor graph is also in . This is because the ancestor may be sparse with respect to the input filter and searching only this sparse graph while removing smaller, denser graphs can harm recall, as verified by our experiments (omitted due to space limits). Instead, we consider replacing a subset of disjoint proximity graphs with their ancestor, allowing PathFinder to use the search utility metric to decide. Although this optimization is not optimal, it avoids costly cardinality estimation and keeps the optimization time small.
Algorithm description. Given the proximity graphs from the graph search plans of all conjunctive clauses, PathFinder deduplicates the graphs, groups them by index, and optimizes each group independently. Let denote the set of graphs selected from one index. PathFinder employs an optimization algorithm that iterates through non-leaf nodes from bottom-up and, for each node , replaces the disjoint descendant graphs of in with itself if has a higher search utility, as shown in Algorithm 2. Specifically, each node maintains a variable that records a set of disjoint graphs in and ’s subtree. This set of disjoint graphs serves as a candidate that may later be replaced by an ancestor graph. For a leaf node, is initialized to if , and to otherwise. For each non-leaf node , the algorithm collects the disjoint descendant graphs that could be replaced by (i.e., ) and compares their relative search utility values to decide whether to replace. If so, is updated to and is updated accordingly (Lines 9–10). Otherwise, if , we retain as the disjoint graph set to be replaced later. If , we instead start a new disjoint graph set by setting to since overlaps with the graphs in . In the worst case, the algorithm visits every node in every index, resulting in the same complexity as Algorithm 1.
3.5. Index Borrowing
The previous two subsections assume that, for a similarity query with a filter predicate , PathFinder only leverages indexes built on the attributes involved in . However, when two attributes and are correlated, it is beneficial to utilize an index built on attribute to process the filter predicate on the correlated attribute if no index is built on attribute , rather than naïvely searching the root node . For example, assume all tuples satisfying also satisfy . To process , we can use the predicate to find a graph search plan from the index built on , and then apply the filter during query execution to obtain the top- results.
Key ideas and algorithm. Assume that we want to use the index for attribute to process a predicate on attribute . Our key ideas are: (1) synthesizing a predicate on attribute such that the tuples satisfying are a subset of those satisfying (i.e., covers ) while minimizing the number of tuples passing ; and (2) using the synthesized to find a graph search plan in via Algorithm 1, and apply during query execution. We require that covers to ensure the graph search plan selected for includes all tuples defined by .
To quickly synthesize from , PathFinder precomputes, for each proximity graph in , the value range of attribute among its tuples. In a hash-based index , each proximity graph corresponds to a categorical value of attribute . For each graph, PathFinder checks whether its value range for attribute (denoted as ) overlaps with . If so, the corresponding categorical value of is added to a set . Finally, PathFinder synthesizes the predicate as “”. For a tree-based index, we aim to synthesize a range predicate from . The key idea is to determine the minimum and maximum boundaries for by scanning the leaf nodes of the tree-based index and checking for overlap with . Specifically, to find the minimum boundary, we scan the leaf nodes from left to right and, for each proximity graph , check whether overlaps with . This process stops at the first that overlaps with and the minimum value of is then used as the lower boundary of . Similarly, we scan the leaf nodes from right to left to determine the maximum value of .
Example. Figure 6 shows an example of a tree-based index built on attribute . Each node records the value ranges of attributes and that its tuples fall into, denoted as and , respectively. For example, the tuples in satisfy and . Given a predicate , PathFinder determines that it overlaps only with and , synthesizes , and uses to construct a graph search plan for the index, which could be or , depending on the search utility values. During query execution, PathFinder uses the original predicate to filter the tuples.
Application to arbitrary filters. This optimization can be generalized to filters on multiple attributes. Given a predicate , PathFinder examines each conjunctive clause to determine whether it contains an atomic predicate, say , on an attribute for which no ANNS index exists. If such exists, PathFinder selects an index whose attribute, say , is most correlated with but is not involved in to process . Then, we synthesize a predicate from and replace with in , resulting in a new clause . Finally, we construct the updated predicate to generate the graph search plan using Algorithms 1–2. During query execution, the executor applies the original predicate .
4. Implementation
We implement a prototype of PathFinder in C++. It allows users to load a collection of data objects along with their attributes and embeddings as a database relation. Each tuple in the relation is automatically assigned a unique integer primary key, and a primary index is created to locate tuples by this key. The primary index is implemented as either a B+-tree (for update support) or an array (for read-only workloads), with B+-tree as the default.
Users can selectively build either tree-based or hash-based indexes on a subset of attributes to efficiently support filtered ANNS. The tree-based index is implemented as a multi-way tree on an attribute (Xu et al., 2024; Jiang et al., 2025b), where each node represents a subrange of the attribute’s values. For each node, PathFinder builds a Vamana graph (Jayaram Subramanya et al., 2019) over the tuples contained in that node’s subrange. The graph is constructed on the primary keys of these tuples, with primary keys serving as vertex IDs. During graph search, PathFinder uses the primary keys to access the corresponding tuple’s attributes and vectors using the primary index. The fan-out factor of a tree-based index is configurable and set to 2 by default. For hash-based indexes, PathFinder also uses Vamana graphs as the proximity graphs. The updates to tree-based indexes can be handled by an existing method (Jiang et al., 2025b) and updates to hash-based indexes can be handled by the existing methods for updating proximity graphs (Singh et al., 2021).
Users can issue similarity queries with filters. For each query, PathFinder generates a graph search plan, searches each proximity graph in this plan to obtain intermediate top- results, and merges them to get the final top- results. PathFinder employs a best-first search strategy optimized for filtered ANNS, referred to as out-of-range search (Xu et al., 2024; Ait Aomar et al., 2025). When exploring a vertex’s neighbors, this strategy considers all neighbors (including those that do not satisfy the filter) as candidates for further expansion, while using a separate queue for maintaining the top- results passing the filter.
5. Evaluation
We evaluate PathFinder to answer the following research questions:
-
•
What are the end-to-end performance benefits of PathFinder for filtered ANNS workloads with conjunctive predicates? (Section 5.2)
-
•
What are the end-to-end performance benefits of PathFinder for filtered ANNS workloads with mixed conjunctive and disjunctive predicates? (Section 5.3)
-
•
What are the performance benefits of the index-borrowing optimization under different levels of attribute correlation? (Section 5.4)
-
•
How does the parameter in search utility impact the performance of PathFinder? (Section 5.5)
-
•
How do different index sizes affect query performance, index construction time, and memory overhead? (Section 5.6)
5.1. Experimental setup
We run all experiments in a machine that includes an AMD EPYC 9454 CPU and 256 GB local DRAM. We use Ubuntu 20.04 as the OS and 16 threads for all baselines.



Baselines. We choose existing approaches that support filters comprising conjunctions and disjunctions on numerical and categorical attributes, as well as a baseline we implement that naïvely leverages attribute-specific indexes. Specifically, we include two basic search strategies: 1) pre-filtering search, which directly computes distances to all data objects that pass the filter without using any ANNS index (denoted as Pre-filtering), and 2) in-filtering search, which performs best-first search on a Vamana graph (Jayaram Subramanya et al., 2019) but only explores vertices that satisfy the filter (denoted as In-filtering Vamana). We omit the post-filtering strategy because its performance is dominated by the out-of-range search baseline (Ait Aomar et al., 2025; Xu et al., 2024), which explores all neighbors in a Vamana graph while maintaining a separate queue for the top- candidates that satisfy the filter, denoted as OOR Vamana. We choose the Vamana graph for all baselines since it is widely adopted in industry (Jayaram Subramanya et al., 2019; mil, 2025; Adams et al., 2025) and is also used by PathFinder. We use ACORN (Patel et al., 2024) as another baseline, which selectively materializes additional edges to preserve graph density under selective filters and adopts the in-filtering search strategy.
We additionally implement a new baseline, RandomSelect, which converts the filter predicate into DNF, gets the top- results for each conjunctive clause separately, and combines the results. For each conjunctive clause, it randomly selects one of the attribute-specific indexes referenced by the conjunction and applies an existing search algorithm on that index. For the tree-based index, we adopt iRangeGraph (Xu et al., 2024) as it supports a conjunctive predicate that involves the attribute this index is built on. For the hash-based index, we search all proximity graphs involved in the predicate using the out-of-range search and merge their results. All baselines are implemented in the PathFinder codebase for a fair comparison.
Configurations. For the Vamana graph, we set the parameter for robust pruning to (Jayaram Subramanya et al., 2019). For the tree-based index, we use a fan-out factor of 2 and a tree height of 7. We build attribute-specific indexes for all attributes of the datasets. In Section 5.6, we vary the tree height and the number of available indexes to evaluate their impact. PathFinder and RandomSelect use the same attribute-specific indexes. We use for estimating the search utility (Equation 1) For ACORN, we use and . We report the tradeoff between the query throughput and the average recall@10 by varying the search queue length of the best-first search from 10 to 3,000 for all approaches.
| #Rows | #Dim. | Numeric Attr. | Categorical Attr. | |||||
| ArXiv | 132K | 768 |
|
|
||||
| RedCaps | 6.9M | 512 |
|
|
||||
| SIFT | 1M | 128 | 4 decimals | N/A | ||||
| GIST | 1M | 960 | 4 decimals | N/A |
Benchmarks. We evaluate PathFinder and all baselines on four real-world datasets, summarized in Table 1. ArXiv is a dataset of research papers from the arXiv repository, where vector embeddings are generated from paper abstracts (arx, 2025). RedCaps is an image dataset with attributes extracted from Reddit (red, 2025). We use two numeric and one categorical attribute for both datasets. SIFT and GIST are standard benchmarks for evaluating ANNS algorithms (sif, 2025). For each of them, we create four attributes of decimal numbers, with the first two correlated and the last two independent. To generate correlated attributes, we sample one attribute from a standard Gaussian distribution and then generate another attribute using the formula , where follows the standard Gaussian distribution. The parameter controls the correlation level. We set for SIFT and for GIST to introduce different levels of correlation. The values of the last two attributes are uniformly sampled from the value range [0, 1000]. To build the Vamana graph and ACORN, we set the max neighbor degree to 32 for SIFT and 64 for all other datasets.
To generate similarity queries, we use the queries provided with the datasets (for SIFT and GIST) or extract a random sample of data objects from the dataset and exclude them from the dataset (for ArXiv and RedCaps). Filters are generated by combining two templates of atomic predicates on different attributes using conjunctions and disjunctions. The first template is , where is a numeric attribute and / values are configurable. The second one is , where is a categorical attribute and is a set of categorical values. For each test, we generate 1K filtered similarity queries and scan the dataset to obtain the ground truth.
5.2. Performance on Conjunctive Predicates
In this subsection, we evaluate PathFinder and all baselines under filtered ANNS workloads with conjunctive predicates. We generate a conjunctive predicate by randomly creating atomic predicates over all attributes and combining two or three of them using conjunctions. We group these predicates by selectivity and the number of attributes involved and evaluate them separately.
Varying selectivity level. For each dataset, we construct three groups of filters with different selectivity levels: low (0.1%–1%), medium (1%–10%), and high (10%–100%), with each group having 1K queries. Figure 7 presents the QPS (queries per second) and recall curves across all selectivity levels and datasets. We observe that PathFinder can achieve nearly 1.0 recall across all workloads, while all baselines except Pre-filtering fall short. Pre-filtering always has perfect recall because it directly computes distances without using ANNS indexes; however, PathFinder has substantially higher QPS than Pre-filtering. PathFinder consistently outperforms all other baselines under low- and medium-selectivity workloads, and achieves comparable or better performance under high selectivity. This is because PathFinder can effectively utilize attribute-specific indexes by quickly constructing an efficient graph search plan using the search utility metric and the optimization algorithms. For example, compared to RandomSelect, the strongest baseline for low- and medium-selectivity workloads, PathFinder achieves 18.4 higher QPS at recall=0.9 (i.e., for RedCaps in Figure 7). RandomSelect performs better than other baselines because it can leverage attribute-specific indexes, whereas In-filtering Vamana suffers from low recall due to the sparsity of filtered graphs under low- and medium-selectivity workloads. The optimization overhead of PathFinder (included in the reported QPS and recall curves) is small, accounting for only 0.12%–5.43% of the total end-to-end execution time across the four datasets. RedCaps exhibits the lowest relative overhead (0.12%) due to its large number of data objects, whereas ArXiv shows the highest overhead (5.43%).
Varying the number of attributes. Next, we categorize the conjunctive predicates in the RedCaps dataset by the number of attributes involved (two or three) and additionally construct a group of single-attribute predicates. Each group contains 1K queries, with one-third of the queries corresponding to each selectivity level. Figure 8 shows that PathFinder achieves a better tradeoff between QPS and recall than all baselines. PathFinder outperforms RandomSelect on single-attribute predicates because its cost-based optimization framework can generate an execution plan that searches the tree-based or hash-based index more efficiently than the baseline approaches used by RandomSelect. These results show that the cost-based optimization in PathFinder not only benefits multi-attribute filters but also improves performance for single-attribute filters.
5.3. Performance on Mixed Conjunctive and Disjunctive Predicates
Now we evaluate filtered ANNS workloads with mixed conjunctive and disjunctive predicates. We generate such a predicate by first generating two conjunctive or atomic predicates (using the method from Section 5.2) and connecting them using a disjunction. For each dataset, we evaluate three groups of predicates, each corresponding to a selectivity level. Figure 9 shows that PathFinder can achieve almost 1.0 recall for all workloads while the baselines (except Pre-filtering) cannot and PathFinder has a stronger QPS and recall tradeoff than all baselines for the low- and medium-selectivity workloads. Specifically, PathFinder has 9.8 higher QPS than RandomSelect, the strongest baseline, at recall 0.95 (i.e., for RedCaps in Figure 9). The optimization overhead of PathFinder is also small in these tests, accounting for 0.11%–3.33% of the total execution time across the four datasets. PathFinder shows slightly lower performance than OOR Vamana for high-selectivity workloads when the recall is below 0.9, because PathFinder may search proximity graphs across different indexes, whereas OOR Vamana searches only a single graph.
|


5.4. Performance of Index Borrowing
We next evaluate the performance benefits of the index borrowing optimization under different levels of attribute correlation. Recall that we synthesize a pair of correlated attributes for the SIFT and GIST datasets using the formula , where is an attribute generated from a standard Gaussian distribution, and is another standard Gaussian variable. By varying the value of , we control the strength of the correlation between and . In this experiment, we build an attribute-specific index on one of the correlated attributes and issue queries with filters on the other. We generate 1K queries, with one-third of the queries corresponding to each selectivity level.
Figure 11 shows the QPS and recall curves for PathFinder with and without the index borrowing optimization under three different values for the SIFT dataset. In the setting without index borrowing, PathFinder searches the root graph using the out-of-range search strategy. We observe that the index borrowing optimization significantly improves performance when the attributes are highly correlated (e.g., ), and that the performance gain gradually diminishes as the correlation weakens. Specifically, the index borrowing optimization improves QPS by up to 2.44 at recall=0.95. The results for the GIST dataset exhibit the same trend and are omitted due to space limitations.
5.5. Performance Impact of the Parameter
We evaluate the performance impact of the parameter in the search utility function. As defined in Equation 1, controls the penalty for searching multiple proximity graphs: a larger value discourages the optimizer from selecting multiple graphs. We study its performance impact by evaluating predicates on the categorical attribute of the RedCaps dataset with varying value. This attribute includes 350 distinct values. We generate 1K predicates, each randomly selecting up to 30 attribute values (i.e., using the template). In this setting, PathFinder needs to choose between using the root graph or the hash-based index that searches multiple proximity graphs. Figure 11 shows that results in the lowest performance, as it over-penalizes the use of multiple graphs and forces PathFinder to use the single root graph. Conversely, does not achieve the best performance either, as it causes the optimizer to always use the hash-based index and search too many graphs. We find that and offer the best tradeoff between recall and QPS; therefore, we set as the default value in our experiments.
5.6. Performance Impact of Varying Index Sizes
We now evaluate the performance impact of different index sizes by varying 1) the number of layers in the tree-based indexes and 2) the number of indexes available.
Since our default configuration builds 7 layers of tree-based indexes, we vary this number from 6 to 2 and report the query performance and indexing overhead. Figure 12 shows the QPS and recall curves for the mixed conjunctive and disjunctive predicates at the low-selectivity level for the RedCaps dataset. For the same QPS, the recall of both PathFinder and RandomSelect drops as we reduce the number of layers for the tree-based indexes. The peak recall of RandomSelect drops significantly, from 0.98 to 0.54, while PathFinder maintains a recall close to 1.0. Even with 3 layers, PathFinder still achieves a better QPS–recall tradeoff than all other baselines. For example, at a recall of 0.85, PathFinder has 3.1 higher QPS than OOR Vamana. When using only 2 layers, PathFinder shows a similar performance to OOR Vamana for recall below 0.7, but has a stronger tradeoff between QPS and recall and the maximum recall in other cases.
Table 2 and Table 3 report the index construction time and index sizes for all datasets when building indexes for all attributes, respectively. Although PathFinder takes a longer index construction time than the Vamana graph, its construction time is substantially smaller than that of ACORN. PathFinder consumes more memory than both ACORN and Vamana, but reducing the number of layers from 7 to 2 cuts memory usage by 3.7 on average while still allowing PathFinder to outperform all baselines on query performance. An interesting direction for future work is to compress attribute-specific indexes to reduce memory overhead.
Next, we vary the number of indexes available on the RedCaps dataset. Since RedCaps has three attributes, we construct six index configurations, each having indexes available on two or one attribute. We evaluate the mixed disjunctive and conjunctive predicates from the low-selectivity group under each configuration and aggregate the QPS and recall results by the number of indexes available. Figure 13 show that while the performance gains of PathFinder decrease as fewer indexes are available, it consistently outperforms all baselines. For example, when two indexes are available, PathFinder has 1.82 higher QPS than RandomSelect at recall=0.95.
| SIFT | GIST | ArXiv | RedCaps | |
|---|---|---|---|---|
| ACORN | 684.8 | 5633.2 | 86.3 | 31483.3 |
| Vamana | 12.9 | 162.3 | 4.0 | 389.1 |
| PathFinder – 2 layers | 68.1 | 762.8 | 8.7 | 1147.5 |
| PathFinder – 3 layers | 110.3 | 1235.1 | 13.8 | 1830.5 |
| PathFinder – 4 layers | 143.8 | 1599.6 | 17.4 | 2407.8 |
| PathFinder – 5 layers | 169.2 | 1865.2 | 20.2 | 2887.9 |
| PathFinder – 6 layers | 190.3 | 2052.1 | 22.1 | 3274.4 |
| PathFinder – 7 layers | 208.1 | 2187.4 | 23.4 | 3548.9 |
6. Related Work
We discuss the related work on ANNS, filtered ANNS, and access path selection in vector databases.
ANNS. There has been extensive research on ANNS indexes, which can be broadly categorized into hashing-based (Tao et al., 2009; Tian et al., 2024), clustering-based (Chen et al., 2021; Guo et al., 2020), and graph-based (Malkov and Yashunin, 2020; Malkov et al., 2014; Fu et al., 2019; Subramanya et al., 2019) approaches. We focus on graph-based methods because they provide an excellent tradeoff between QPS and recall (Fu et al., 2019; Malkov and Yashunin, 2020; Subramanya et al., 2019), and have been adopted in nearly all modern vector databases (Wang et al., 2021; Wei et al., 2020; pgv, 2025; chr, 2025; lan, 2025). Among them, HNSW (Malkov and Yashunin, 2020) and Vamana (Subramanya et al., 2019) are the most widely adopted ones. PathFinder adopts the Vamana graph as its proximity graph.
Filtered ANNS. Graph-based indexes support filtered ANNS using either the in-filtering or post-filtering strategy. Recent studies have explored new techniques to further improve filtered ANNS performance. ACORN (Patel et al., 2024) supports arbitrary filters and enhances performance by materializing additional edges and utilizing 2-hop search. Two recent works (Mohoney et al., 2023; Li et al., 2025) support complex filters by materializing filter-specific graph indexes tailored to a known filter workload, an assumption that PathFinder does not make. Another line of research focuses on attribute-specific indexes. Several studies have proposed graph-based indexes for range filters on numeric data (Zuo et al., 2024; Xu et al., 2024; Engels et al., 2024; Jiang et al., 2025b; Wang et al., 2025; Liang et al., 2025). Among these, tree-based indexes are the most popular (Wang et al., 2025; Engels et al., 2024; Xu et al., 2024; Jiang et al., 2025b) and have also been extended to support updates (Jiang et al., 2025b; Wang et al., 2025). Other papers target label data (Cai et al., 2024; Gollapudi et al., 2023; Gupta et al., 2023; Wang et al., 2023; Ait Aomar et al., 2025).
PathFinder differs from these approaches in that it serves as a unified indexing framework that leverages attribute-specific indexes to efficiently handle complex filters with conjunctions and disjunctions. It supports both numeric and categorical attributes and achieves state-of-the-art performance on filtered ANNS workloads over these data types. PathFinder supports label data using the root graph. Extending PathFinder to support attribute-specific indexes for label data is left for future work.
Access path selection. Relational databases allow administrators to build indexes on selective attributes and employ an access path selection framework to determine how best to utilize these indexes (Selinger et al., 1979; Kester et al., 2017). Recent studies on vector databases have also proposed new access path selection frameworks (Wei et al., 2020; Wang et al., 2021; Sanca and Ailamaki, 2024), but they focus on choosing among the three basic search strategies: pre-filtering, in-filtering, and post-filtering. In contrast, PathFinder focuses on leveraging attribute-specific ANNS indexes to improve the performance of filtered ANNS, and is therefore complementary to the aforementioned frameworks.
| SIFT | GIST | ArXiv | RedCaps | |
|---|---|---|---|---|
| ACORN | 0.56 | 0.59 | 0.08 | 4.24 |
| Vamana | 0.12 | 0.16 | 0.02 | 1.31 |
| PathFinder – 2 layers | 0.59 | 0.81 | 0.08 | 5.11 |
| PathFinder – 3 layers | 1.07 | 1.45 | 0.12 | 7.67 |
| PathFinder – 4 layers | 1.53 | 2.08 | 0.16 | 10.21 |
| PathFinder – 5 layers | 2.00 | 2.70 | 0.20 | 12.72 |
| PathFinder – 6 layers | 2.46 | 3.30 | 0.23 | 15.15 |
| PathFinder – 7 layers | 2.91 | 3.89 | 0.26 | 17.29 |
| (Raw Vectors) | 0.48 | 3.58 | 0.35 | 13.24 |
7. Conclusion
This paper introduces PathFinder, an indexing framework designed for filtered ANNS. PathFinder allows DBMS administrators to create attribute-specific ANNS indexes on selective attributes and adopts a cost-based optimization framework to effectively utilize these indexes for improving the performance of filtered ANNS. The efficiency of PathFinder stems from three key innovations: the optimization metric for quantifying the tradeoff between search time and accuracy, the optimization algorithms for processing filters with conjunctions and disjunctions, and the index borrowing technique that enables leveraging one attribue-specific index to process filters on correlated attributes. Extensive experiments show that PathFinder significantly improves the performance of filtered ANNS with conjunctive and disjunctive filters.
References
- (1)
- Luc (2025) accessed in 2025. Apache Lucence. https://lucene.apache.org/.
- arx (2025) accessed in 2025. ArXiv dataset. https://huggingface.co/datasets/malteos/aspect-paper-embeddings.
- chr (2025) accessed in 2025. ChromaDB. https://www.trychroma.com/.
- Ela (2025) accessed in 2025. Elastic Search. https://www.elastic.co/elasticsearch.
- lan (2025) accessed in 2025. LanceDB. https://www.lancedb.com/.
- mil (2025) accessed in 2025. Milvus. https://milvus.io/.
- Ope (2025) accessed in 2025. Open Search. opensearch.org.
- pgv (2025) accessed in 2025. PGVector. https://github.com/pgvector.
- qdr (2025) accessed in 2025. Qdrant. https://qdrant.tech/.
- red (2025) accessed in 2025. RedCaps dataset. https://redcaps.xyz/.
- sif (2025) accessed in 2025. SIFT and GIST datasets. http://corpus-texmex.irisa.fr/.
- wea (2025) accessed in 2025. Weaviate. https://weaviate.io/.
- Adams et al. (2025) Philip Adams, Menghao Li, Shi Zhang, Li Tan, Qi Chen, Mingqin Li, Zengzhong Li, Knut Magne Risvik, and Harsha Vardhan simhadri. 2025. DistributedANN: Efficient Scaling of a Single DiskANN Graph Across Thousands of Computers. In The 1st Workshop on Vector Databases. https://openreview.net/forum?id=6AEsfCLRm3
- Ait Aomar et al. (2025) Anas Ait Aomar, Karima Echihabi, Marco Arnaboldi, Ioannis Alagiannis, Damien Hilloulin, and Manal Cherkaoui. 2025. RWalks: Random Walks as Attribute Diffusers for Filtered Vector Search. Proc. ACM Manag. Data 3, 3, Article 212 (June 2025), 26 pages. https://doi.org/10.1145/3725349
- Cai et al. (2024) Yuzheng Cai, Jiayang Shi, Yizhuo Chen, and Weiguo Zheng. 2024. Navigating Labels and Vectors: A Unified Approach to Filtered Approximate Nearest Neighbor Search. Proc. ACM Manag. Data 2, 6, Article 246 (Dec. 2024), 27 pages. https://doi.org/10.1145/3698822
- Chen et al. (2024) Cheng Chen, Chenzhe Jin, Yunan Zhang, Sasha Podolsky, Chun Wu, Szu-Po Wang, Eric Hanson, Zhou Sun, Robert Walzer, and Jianguo Wang. 2024. SingleStore-V: An Integrated Vector Database System in SingleStore. Proc. VLDB Endow. 17, 12 (2024), 3772–3785. https://doi.org/10.14778/3685800.3685805
- Chen et al. (2021) Qi Chen, Bing Zhao, Haidong Wang, Mingqin Li, Chuanjie Liu, Zengzhong Li, Mao Yang, and Jingdong Wang. 2021. SPANN: Highly-efficient Billion-scale Approximate Nearest Neighborhood Search. In Advances in Neural Information Processing Systems 34: Annual Conference on Neural Information Processing Systems 2021, NeurIPS 2021, December 6-14, 2021, virtual, Marc’Aurelio Ranzato, Alina Beygelzimer, Yann N. Dauphin, Percy Liang, and Jennifer Wortman Vaughan (Eds.). 5199–5212. https://proceedings.neurips.cc/paper/2021/hash/299dc35e747eb77177d9cea10a802da2-Abstract.html
- Ding et al. (2019) Bailu Ding, Sudipto Das, Ryan Marcus, Wentao Wu, Surajit Chaudhuri, and Vivek R. Narasayya. 2019. AI Meets AI: Leveraging Query Executions to Improve Index Recommendations. In Proceedings of the 2019 International Conference on Management of Data, SIGMOD Conference 2019, Amsterdam, The Netherlands, June 30 - July 5, 2019, Peter A. Boncz, Stefan Manegold, Anastasia Ailamaki, Amol Deshpande, and Tim Kraska (Eds.). ACM, 1241–1258. https://doi.org/10.1145/3299869.3324957
- Edge et al. (2024) Darren Edge, Ha Trinh, Newman Cheng, Joshua Bradley, Alex Chao, Apurva Mody, Steven Truitt, and Jonathan Larson. 2024. From Local to Global: A Graph RAG Approach to Query-Focused Summarization. CoRR abs/2404.16130 (2024). https://doi.org/10.48550/ARXIV.2404.16130 arXiv:2404.16130
- Engels et al. (2024) Joshua Engels, Benjamin Landrum, Shangdi Yu, Laxman Dhulipala, and Julian Shun. 2024. Approximate nearest neighbor search with window filters. In Proceedings of the 41st International Conference on Machine Learning (Vienna, Austria) (ICML’24). JMLR.org, Article 497, 22 pages.
- Fu et al. (2019) Cong Fu, Chao Xiang, Changxu Wang, and Deng Cai. 2019. Fast Approximate Nearest Neighbor Search With The Navigating Spreading-out Graph. Proc. VLDB Endow. 12, 5 (2019), 461–474. https://doi.org/10.14778/3303753.3303754
- Gollapudi et al. (2023) Siddharth Gollapudi, Neel Karia, Varun Sivashankar, Ravishankar Krishnaswamy, Nikit Begwani, Swapnil Raz, Yiyong Lin, Yin Zhang, Neelam Mahapatro, Premkumar Srinivasan, Amit Singh, and Harsha Vardhan Simhadri. 2023. Filtered-DiskANN: Graph Algorithms for Approximate Nearest Neighbor Search with Filters. In Proceedings of the ACM Web Conference 2023 (Austin, TX, USA) (WWW ’23). Association for Computing Machinery, New York, NY, USA, 3406–3416. https://doi.org/10.1145/3543507.3583552
- Guo et al. (2020) Ruiqi Guo, Philip Sun, Erik Lindgren, Quan Geng, David Simcha, Felix Chern, and Sanjiv Kumar. 2020. Accelerating Large-Scale Inference with Anisotropic Vector Quantization. In Proceedings of the 37th International Conference on Machine Learning, ICML 2020, 13-18 July 2020, Virtual Event (Proceedings of Machine Learning Research), Vol. 119. PMLR, 3887–3896. http://proceedings.mlr.press/v119/guo20h.html
- Gupta et al. (2023) Gaurav Gupta, Jonah Yi, Benjamin Coleman, Chen Luo, Vihan Lakshman, and Anshumali Shrivastava. 2023. CAPS: A Practical Partition Index for Filtered Similarity Search. arXiv:2308.15014 [cs.IR] https://arxiv.org/abs/2308.15014
- Guu et al. (2020) Kelvin Guu, Kenton Lee, Zora Tung, Panupong Pasupat, and Ming-Wei Chang. 2020. REALM: Retrieval-Augmented Language Model Pre-Training. CoRR abs/2002.08909 (2020). arXiv:2002.08909 https://arxiv.org/abs/2002.08909
- Ilyas et al. (2022) Ihab F. Ilyas, Theodoros Rekatsinas, Vishnu Konda, Jeffrey Pound, Xiaoguang Qi, and Mohamed A. Soliman. 2022. Saga: A Platform for Continuous Construction and Serving of Knowledge at Scale. In SIGMOD ’22: International Conference on Management of Data, Philadelphia, PA, USA, June 12 - 17, 2022, Zachary G. Ives, Angela Bonifati, and Amr El Abbadi (Eds.). ACM, 2259–2272. https://doi.org/10.1145/3514221.3526049
- Jayaram Subramanya et al. (2019) Suhas Jayaram Subramanya, Fnu Devvrit, Harsha Vardhan Simhadri, Ravishankar Krishnawamy, and Rohan Kadekodi. 2019. DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node. In Advances in Neural Information Processing Systems, H. Wallach, H. Larochelle, A. Beygelzimer, F. d'Alché-Buc, E. Fox, and R. Garnett (Eds.), Vol. 32. Curran Associates, Inc. https://proceedings.neurips.cc/paper_files/paper/2019/file/09853c7fb1d3f8ee67a61b6bf4a7f8e6-Paper.pdf
- Jiang et al. (2025b) Mengxu Jiang, Zhi Yang, Fangyuan Zhang, Guanhao Hou, Jieming Shi, Wenchao Zhou, Feifei Li, and Sibo. Wang. 2025b. DIGRA: A Dynamic Graph Indexing for Approximate Nearest Neighbor Search with Range Filter. Proc. ACM Manag. Data 2, 6, Article 246 (Dec. 2025), 27 pages. https://doi.org/10.1145/3698822
- Jiang et al. (2025a) Wenqi Jiang, Suvinay Subramanian, Cat Graves, Gustavo Alonso, Amir Yazdanbakhsh, and Vidushi Dadu. 2025a. Rago: Systematic performance optimization for retrieval-augmented generation serving. arXiv preprint arXiv:2503.14649 (2025).
- Jiang et al. (2023) Wenqi Jiang, Marco Zeller, Roger Waleffe, Torsten Hoefler, and Gustavo Alonso. 2023. Chameleon: a heterogeneous and disaggregated accelerator system for retrieval-augmented language models. arXiv preprint arXiv:2310.09949 (2023).
- Kester et al. (2017) Michael S. Kester, Manos Athanassoulis, and Stratos Idreos. 2017. Access Path Selection in Main-Memory Optimized Data Systems: Should I Scan or Should I Probe?. In Proceedings of the 2017 ACM International Conference on Management of Data (Chicago, Illinois, USA) (SIGMOD ’17). Association for Computing Machinery, New York, NY, USA, 715–730. https://doi.org/10.1145/3035918.3064049
- Li et al. (2025) Zhaoheng Li, Silu Huang, Wei Ding, Yongjoo Park, and Jianjun Chen. 2025. SIEVE: Effective Filtered Vector Search with Collection of Indexes. Proc. VLDB Endow. 18, 11 (Sept. 2025), 4723–4736. https://doi.org/10.14778/3749646.3749725
- Liang et al. (2025) Anqi Liang, Pengcheng Zhang, Bin Yao, Zhongpu Chen, Yitong Song, and Guangxu Cheng. 2025. UNIFY: Unified Index for Range Filtered Approximate Nearest Neighbors Search. Proc. VLDB Endow. 18, 4 (May 2025), 1118–1130. https://doi.org/10.14778/3717755.3717770
- Malkov et al. (2014) Yury Malkov, Alexander Ponomarenko, Andrey Logvinov, and Vladimir Krylov. 2014. Approximate nearest neighbor algorithm based on navigable small world graphs. Inf. Syst. 45 (2014), 61–68. https://doi.org/10.1016/J.IS.2013.10.006
- Malkov and Yashunin (2020) Yury A. Malkov and Dmitry A. Yashunin. 2020. Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. IEEE Trans. Pattern Anal. Mach. Intell. 42, 4 (2020), 824–836. https://doi.org/10.1109/TPAMI.2018.2889473
- Mohoney et al. (2023) Jason Mohoney, Anil Pacaci, Shihabur Rahman Chowdhury, Ali Mousavi, Ihab F. Ilyas, Umar Farooq Minhas, Jeffrey Pound, and Theodoros Rekatsinas. 2023. High-Throughput Vector Similarity Search in Knowledge Graphs. Proc. ACM Manag. Data 1, 2, Article 197 (June 2023), 25 pages. https://doi.org/10.1145/3589777
- Patel et al. (2024) Liana Patel, Peter Kraft, Carlos Guestrin, and Matei Zaharia. 2024. ACORN: Performant and Predicate-Agnostic Search Over Vector Embeddings and Structured Data. Proc. ACM Manag. Data 2, 3 (2024), 120. https://doi.org/10.1145/3654923
- Rajput et al. (2023) Shashank Rajput, Nikhil Mehta, Anima Singh, Raghunandan Hulikal Keshavan, Trung Vu, Lukasz Heldt, Lichan Hong, Yi Tay, Vinh Tran, Jonah Samost, et al. 2023. Recommender systems with generative retrieval. Advances in Neural Information Processing Systems 36 (2023), 10299–10315.
- Sanca and Ailamaki (2024) Viktor Sanca and Anastasia Ailamaki. 2024. Efficient Data Access Paths for Mixed Vector-Relational Search. In Proceedings of the 20th International Workshop on Data Management on New Hardware (Santiago, AA, Chile) (DaMoN ’24). Association for Computing Machinery, New York, NY, USA, Article 6, 9 pages. https://doi.org/10.1145/3662010.3663448
- Selinger et al. (1979) P. Griffiths Selinger, M. M. Astrahan, D. D. Chamberlin, R. A. Lorie, and T. G. Price. 1979. Access path selection in a relational database management system. In Proceedings of the 1979 ACM SIGMOD International Conference on Management of Data (Boston, Massachusetts) (SIGMOD ’79). Association for Computing Machinery, New York, NY, USA, 23–34. https://doi.org/10.1145/582095.582099
- Singh et al. (2021) Aditi Singh, Suhas Jayaram Subramanya, Ravishankar Krishnaswamy, and Harsha Vardhan Simhadri. 2021. FreshDiskANN: A Fast and Accurate Graph-Based ANN Index for Streaming Similarity Search. CoRR abs/2105.09613 (2021). arXiv:2105.09613 https://arxiv.org/abs/2105.09613
- Subramanya et al. (2019) Suhas Jayaram Subramanya, Devvrit, Harsha Vardhan Simhadri, Ravishankar Krishnaswamy, and Rohan Kadekodi. 2019. Rand-NSG: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node. In Advances in Neural Information Processing Systems 32: Annual Conference on Neural Information Processing Systems 2019, NeurIPS 2019, December 8-14, 2019, Vancouver, BC, Canada, Hanna M. Wallach, Hugo Larochelle, Alina Beygelzimer, Florence d’Alché-Buc, Emily B. Fox, and Roman Garnett (Eds.). 13748–13758. https://proceedings.neurips.cc/paper/2019/hash/09853c7fb1d3f8ee67a61b6bf4a7f8e6-Abstract.html
- Tao et al. (2009) Yufei Tao, Ke Yi, Cheng Sheng, and Panos Kalnis. 2009. Quality and efficiency in high dimensional nearest neighbor search. In Proceedings of the 2009 ACM SIGMOD International Conference on Management of Data (Providence, Rhode Island, USA) (SIGMOD ’09). Association for Computing Machinery, New York, NY, USA, 563–576. https://doi.org/10.1145/1559845.1559905
- Tian et al. (2024) Yao Tian, Xi Zhao, and Xiaofang Zhou. 2024. DB-LSH 2.0: Locality-Sensitive Hashing With Query-Based Dynamic Bucketing. IEEE Transactions on Knowledge and Data Engineering 36, 3 (2024), 1000–1015. https://doi.org/10.1109/TKDE.2023.3295831
- Trivedi et al. (2023) Harsh Trivedi, Niranjan Balasubramanian, Tushar Khot, and Ashish Sabharwal. 2023. Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions. In Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), ACL 2023, Toronto, Canada, July 9-14, 2023, Anna Rogers, Jordan L. Boyd-Graber, and Naoaki Okazaki (Eds.). Association for Computational Linguistics, 10014–10037. https://doi.org/10.18653/V1/2023.ACL-LONG.557
- Wang et al. (2021) Jianguo Wang, Xiaomeng Yi, Rentong Guo, Hai Jin, Peng Xu, Shengjun Li, Xiangyu Wang, Xiangzhou Guo, Chengming Li, Xiaohai Xu, et al. 2021. Milvus: A purpose-built vector data management system. In Proceedings of the 2021 International Conference on Management of Data. 2614–2627.
- Wang et al. (2023) Mengzhao Wang, Lingwei Lv, Xiaoliang Xu, Yuxiang Wang, Qiang Yue, and Jiongkang Ni. 2023. An efficient and robust framework for approximate nearest neighbor search with attribute constraint. In Proceedings of the 37th International Conference on Neural Information Processing Systems (New Orleans, LA, USA) (NIPS ’23). Curran Associates Inc., Red Hook, NY, USA, Article 692, 14 pages.
- Wang et al. (2025) Ziqi Wang, Jingzhe Zhang, and Wei Hu. 2025. WoW: A Window-to-Window Incremental Index for Range-Filtering Approximate Nearest Neighbor Search. arXiv:2508.18617 [cs.DB] https://arxiv.org/abs/2508.18617
- Wei et al. (2020) Chuangxian Wei, Bin Wu, Sheng Wang, Renjie Lou, Chaoqun Zhan, Feifei Li, and Yuanzhe Cai. 2020. Analyticdb-v: A hybrid analytical engine towards query fusion for structured and unstructured data. Proceedings of the VLDB Endowment 13, 12 (2020), 3152–3165.
- Xu et al. (2024) Yuexuan Xu, Jianyang Gao, Yutong Gou, Cheng Long, and Christian S. Jensen. 2024. iRangeGraph: Improvising Range-dedicated Graphs for Range-filtering Nearest Neighbor Search. Proc. ACM Manag. Data 2, 6, Article 239 (Dec. 2024), 26 pages. https://doi.org/10.1145/3698814
- Zhu et al. (2021) Rong Zhu, Ziniu Wu, Yuxing Han, Kai Zeng, Andreas Pfadler, Zhengping Qian, Jingren Zhou, and Bin Cui. 2021. FLAT: Fast, Lightweight and Accurate Method for Cardinality Estimation. Proc. VLDB Endow. 14, 9 (2021), 1489–1502. https://doi.org/10.14778/3461535.3461539
- Zuo et al. (2024) Chaoji Zuo, Miao Qiao, Wenchao Zhou, Feifei Li, and Dong Deng. 2024. SeRF: Segment Graph for Range-Filtering Approximate Nearest Neighbor Search. Proc. ACM Manag. Data 2, 1, Article 69 (March 2024), 26 pages. https://doi.org/10.1145/3639324