REVIEW 4 major objections 5 minor 25 references
Filtered Vector Search in a Disaggregated Lakehouse: Composing Table-Format Pruning with Per-File ANN
T0 review · 4 major / 5 minor · reviewed 2026-08-08 · deepseek-v4-flash
Pith's one-line read Filtered vector search gets fast when the table's own file pruning runs before per-file ANN, avoiding a new filtering algorithm entirely.
desk verdict Solid systems work with honest disclosure, but the headline filtered-vector-search claim is not supported by the paper's own measurements: the 32x is unfiltered, the pruned filtered query runs at 34s, and the 94x needs a materialized re-partitioned copy. read the letter →
The pith
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
The reading
What carries the argument
The load-bearing mechanism is the composition of the lakehouse's existing file pruning with a per-file IVF index: the planner first runs the query predicate through Iceberg partition pruning, per-column zone-maps, and a scalar bitmap index to get the surviving file set, then runs IVF only over those files. A second distinct piece is the predicate-pushdown purity condition, which states that a residual filter can be pushed into the per-file search only when the filter column is provably pure in a file, meaning an identity partition or a materialized cluster column; a merely sorted or z-ordered column prunes well but is not pure, so it is excluded. The paper also contributes the distributed, non-destructive index build, a metadata-only Iceberg replace that preserves time travel, and the disaggregated warm-set engineering, a rendezvous-hashed per-file cache with stable pod placement, which the ablation shows is what turns correct recall into sub-second latency.
What would settle it
Run the filtered query on a table where the filter column is uniformly mixed across all files with no partition or clustering, keep the same warm cache, and check whether the speedup over brute force remains large; if it does, the claim that file-level locality is required is contradicted.
Extended reading notes
Core claim
The central discovery is that filtered ANN search does not need a new in-index filtering method when the vectors live inside an open lakehouse table; it needs the table's own file-pruning stack to do the filtering one level up. The paper embeds an IVF index in each Parquet file's footer, then rewrites the query plan so the predicate runs through the table's existing partition, zone-map, and bitmap pruning before any ANN search happens. Only the surviving files are probed, and the per-file search returns its top candidates together with their projected columns, so the final merge needs no second data scan. The composition pays off exactly when the filter column has file-level locality, meaning each value is concentrated in few files, because that is when metadata pruning can drop most files. The paper measures a roughly 32 times warm speedup over brute force on an 11.5M by 768 table at recall@10 at least 0.90, with 355 of 444 files pruned before ANN, and a roughly 94 times speedup on real 5M-vector embeddings when a join filter is materialized into a region-partitioned layout.
Load-bearing premise
The headline speedups assume that the filter column has file-level locality in the physical layout and that the per-pod warm cache stays warm with stable rendezvous placement, because without those conditions the paper's own ablation shows per-file IVF is no faster than brute force.
Editorial extensions
If this is right
- Vector search can inherit the lakehouse catalog's access control and single source of truth, because vectors never leave the Iceberg or Parquet table and the index is an ignorable footer artifact.
- When the filter dimension is already partitioned or clustered, or is materialized into a partition, filtered vector queries reduce to an ordinary file-pruned scan followed by a small ANN probe, with no dedicated filtered-ANN algorithm needed.
- The measured 32 times and 94 times speedups are system-level numbers, while the underlying arithmetic reduction is much larger, so improvements to object-store read latency and cache warmth should translate into proportionally larger end-to-end wins.
- Sorted or z-ordered columns can drive file pruning but must not be used for residual-predicate pushdown, because a boundary file holds two values and a purity assumption would corrupt results.
- Per-file failures during the distributed build are non-fatal and unindexed files fall back to brute force at query time, so the table stays correct while the index fills in.
Reading between the lines
- If the locality precondition is the real lever, practitioners should treat filtered-vector-search tuning as a physical-design task, namely partitioning or clustering tables on the common filter dimensions, rather than as a choice among filtered-ANN algorithms; this generalizes the paper's uniform versus value-local layout comparison.
- The gap between the roughly 500 times arithmetic reduction and the roughly 30 times measured speedup implies that on a faster storage tier, such as local NVMe or an object store with lower per-request latency, the same composition could approach a much larger fraction of the algorithmic win, which is a testable prediction using the paper's own cost model.
- Because the footer blob is opaque to the table format, the per-file index could be swapped from IVF to product quantization or a small graph without changing the build and commit protocol, and a shared global codebook across files is a natural next experiment.
- The sorted-is-not-pure distinction likely applies beyond ANN, meaning any lakehouse optimization that pushes a predicate into a per-file operator based on zone-map pruning alone should re-check whether the column is truly single-valued per file rather than merely locally contiguous.
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper proposes embedding a per-file IVF index in each Parquet footer of an Apache Iceberg table, then composing the table's existing file-pruning tiers (partition pruning, zone-maps, bitmap index) with per-file ANN so that filtered vector queries first prune files and then run IVF only over survivors. It describes a distributed, metadata-only Iceberg build, a planner rewrite that fuses pruning with per-file search and direct top-k assembly, predicate pushdown restricted to provably pure columns, a semi-join reduction for filters arriving across joins, and a rendezvous-hashed per-pod cache that makes warm latency tolerable on disaggregated object storage. The evaluation reports a ~32x unfiltered warm speedup over brute force at recall@10 >= 0.90 on an 11.5M x 768 table, pruning counts for a category-filtered query, and a ~94x speedup (14.7 s to 157 ms) for a region-filtered join on real IBM Granite embeddings, the latter after materializing the reduction into a region-partitioned copy.
Significance. If the central claim held as stated, the paper would make a useful systems contribution: filtered vector search inside an open lakehouse table without a specialized filtered-ANN algorithm, reusing the table format's own pruning and preserving multi-engine readability, time travel, and catalog access control. The paper is honest in its limitations section: it reports failure modes, discloses the warm-set ablation showing that naive per-file IVF is no faster than brute force, and explicitly says the locality it exploits is constructed rather than organic. It also ships a concrete reproducibility plan (open Iceberg datasets, precomputed ground truth, and benchmark drivers), which is a strength. However, the headline claim is not supported by the measurements as written: the 32x figure is unfiltered; the only filtered query on the original value-local layout is reported with pruning counts but no latency, and its latency appears elsewhere as 34 s, worse than brute force; and the fast filtered result is obtained only after a materialized, region-partitioned physical redesign. These are load-bearing gaps for the paper's central claim, not mere presentation issues.
major comments (4)
- [Abstract; §8.6 (Table 3) and §8.7 (Table 4, footnote ∥)] The abstract states that "the payoff comes entirely from file pruning," but the only filtered query on the original value-local layout is not shown to be fast. Table 3 reports that WHERE category='tech' prunes 355/444 files before ANN, but it reports no wall-clock latency; Table 4 footnote ∥ reports the same query at p50 34 s because the surviving 89 files take the projection/rescore path rather than the fused direct top-k path, while the unfiltered brute-force p50 is 21.1 s (Table 1). Thus the paper's headline 32x figure is unfiltered, and the filtered query on the layout that is supposed to demonstrate the composition is actually slower than the unfiltered brute-force baseline. The central claim requires either a measured filtered-query latency on the value-local layout with the residual predicate pushed (i.e., with category registered as a pure column so the fast path is taken), or a substantial revision of the claim to separate the unfiltered algorithmic speedup from the filtered-query behavior.
- [§5.2, §8.8 (Table 5)] The 94x speedup is achieved only after a materialized physical redesign: the docs_r table is a denormalized copy of the fact table with region partitioned as a partition column. The query-time join path on the original tables, which uses the existing customer_id pruning, runs at 14.7 s p50 and prunes no partitions (Table 5). Therefore the headline filtered speedup does not come from the original table's existing file pruning alone; it comes from the user first performing a schema/materialization change (denormalization plus partition-by-region). The paper should state this prominently in the abstract and contributions, and should not present the 94x result as evidence that composing the table's existing pruning with per-file ANN suffices for filtered vector search. The materialized-layout result is still interesting, but it is a different claim.
- [§8.4 (Table 2)] The ablation in Table 2 shows that the naive per-file IVF implementation is no faster than brute force (1.0x), and the speedup to 31.6x is accumulated only after adding the per-file matrix cache, rendezvous placement, and stable pod set. This directly contradicts the abstract's statement that "the payoff comes entirely from file pruning." The paper's own body correctly frames the warm-set engineering as turning correctness into speed, but the abstract and Section 1's framing should be corrected to say that the algorithmic win is due to pruning-plus-IVF while the end-to-end measured speedup is due to pruning-plus-IVF plus the warm-set engineering of Section 7.
- [§5.1 and §8.6/§8.7] Section 5.1 defines file_local_cols as partition columns or materialized cluster-spec columns and states that only then can the residual predicate be pushed into the per-file search. The value-local layout of Section 8.6 (per-category files) appears to satisfy the purity condition for category, yet Section 8.7 reports that the same query takes the projection/rescore path and costs 34 s. The paper never explains why the residual predicate was not pushed for this layout, nor does it report the natural experiment: declare category as a partition or materialized cluster column on the original table and measure the filtered query on the fused fast path. Without this experiment, the paper's only fast filtered number comes from the materialized docs_r layout, and the reader cannot tell whether the composition itself delivers filtered speedups or only the combination of composition plus a pure-partition physical design.
minor comments (5)
- [§4 title and text] The build is described as "in-place," but it rewrites each file to a new object and commits a metadata-only replace; "in-place" is misleading. Consider "non-destructive per-file rewrite" or similar.
- [Abstract and §5.2] The statement that "the vectors never leave the table" should be reconciled with the docs_r materialization, which is a copy (albeit inside the lakehouse) of the fact table with a denormalized region column.
- [§8.7 (Table 4, footnote ∥)] The 34 s filtered-query latency is reported only in a footnote; it should be called out in the main text of Section 8.6, since it directly qualifies the pruning-count result in Table 3.
- [§8.3] Minor typo: "the recalldistribution" should be "the recall distribution."
- [§5.1] The set file_local_cols is introduced informally; a formal definition with an equation or a table would improve precision, especially since the soundness of the pushdown depends on it.
Circularity Check
No significant circularity: the design is evaluated against external and self baselines, and the analytic links (pruning, locality, cost model) are derived from the table format's mechanics rather than from the results they are used to explain.
full rationale
Walking the derivation chain: the paper's central mechanism is a planner rewrite (Alg. 1) that (Step 1) feeds the SQL predicate through the engine's existing partition/zone-map/bitmap file pruning, (Step 2) runs per-file IVF over surviving files, and (Step 3) fuses projection with candidate rescore. None of these steps is defined in terms of the latency or recall numbers it explains: pruning counts come from PlanFiles over Iceberg metadata, IVF is standard k-means/IVF with explicit knobs C, n_probe, s, and the speedups are measured against the system's own brute force and query-time join. The 'locality iff' claim (Section 6) is an analytic consequence of how file pruning proves absence, and it is then verified on uniform versus value-local layouts rather than used as a fitted prediction. The Section 9 cost model is a direct arithmetic count (C/(sigma*n_probe)) explicitly contrasted with the smaller measured speedup, so the model is not presented as a measurement. There is no load-bearing self-citation: references 16, 7, 10, and 23 are external, and the in-footer idea is credited to prior practice. The evaluation's weak points—the 34 s rescore path for the pruned category='tech' query (Table 4 footnote), the 94x result being measured on a materialized region-partitioned copy rather than the original layout (Section 8.8), and Section 10's own admission that the locality is constructed and the Milvus baseline is a 300K-subset stand-in—are evidentiary limitations, not instances of a conclusion being equivalent to its premise. No fitted parameter is renamed as a prediction, and no author-imported uniqueness theorem forces a choice. Verdict: no significant circularity.
Assumptions & free parameters
free parameters (3)
- C (IVF centroids per file) =
1024
- n_probe =
10
- over-fetch safety factor s =
not stated
assumptions (7)
- domain assumption Object-store data files are immutable once written; new writes go to new paths
- domain assumption Byte-for-byte copy of data pages preserves file-local row ordinals so posting lists stay valid
- domain assumption Partition columns and materialized cluster-spec columns are provably single-valued per file; sorted or ZORDER columns are not
- domain assumption Synthetic embedding corpus has latent cluster structure so IVF recall is meaningful
- domain assumption Object stores have no atomic rename, so the build uses new paths
- standard math IVF and k-means provide a valid ANN approximation with the reported parameters
- domain assumption The Flight-SQL engine and co-located worker process execute shards as described
Cite this review
Pith. "Pith review of Filtered Vector Search in a Disaggregated Lakehouse: Composing Table-Format Pruning with Per-File ANN." pith.science (2026). https://pith.science/paper/GJQ67D37
@misc{pith2026260805441,
author = {Pith},
title = {Pith review of: Filtered Vector Search in a Disaggregated Lakehouse: Composing Table-Format Pruning with Per-File ANN},
year = {2026},
howpublished = {\url{https://pith.science/paper/GJQ67D37}},
note = {Machine review of arXiv:2608.05441}
}
read the original abstract
Approximate nearest-neighbor (ANN) search increasingly runs alongside structured data - "find the 10 nearest documents where tenant='acme' AND lang='en'" - yet similarity and filtering are usually bolted together: a specialized vector index for one, a separate filter step for the other. We ask what happens when both live inside an open lakehouse table (Apache Iceberg over Parquet on object storage), where the engine already owns a mature file-pruning stack (partition pruning, zone-maps, a bitmap index). We embed an IVF index in place in each Parquet file's footer and make filtered vector queries fast not with a new filtering algorithm but by composing the table's existing file pruning with per-file ANN: the planner prunes data files by the predicate first, then runs IVF only over the survivors. The index is built distributed and non-destructively - a metadata-only Iceberg replace that every other engine still reads - and a rendezvous-hashed per-file cache keeps object-store read latency from swamping the algorithmic win. The payoff comes entirely from file pruning. On an 11.5M x 768 table, warm IVF search is ~32x faster than brute force at recall@10 >= 0.90, a selective predicate having pruned 355 of 444 data files before ANN runs; on 5M real IBM Granite embeddings, a filter arriving across a join prunes four of five region partitions and runs nearly two orders of magnitude (~94x: 14.7 s -> 157 ms) faster than the query-time join at identical top-k, once the reduction is materialized into a region-partitioned layout. We characterize when the composition pays off - it requires file-level locality on the filter column, and the residual predicate is only safe to push into the search over a provably pure (partitioned) column, not a merely sorted one - and report the failure modes we hit bolting ANN onto a lakehouse engine.
Figures
Figures from the paper (2 more)
Reference graph
Works this paper leans on
-
[1]
Apache Software Foundation. 2023. Apache Iceberg: An open table format for huge analytic datasets. https://iceberg.apache.org
work page 2023
-
[2]
Apache Software Foundation. 2023. Apache Parquet. (2023). https://parquet.apache.org
work page 2023
-
[3]
Michael Armbrust, Ali Ghodsi, Reynold Xin, and Matei Zaharia. 2021. Lake- house: A new generation of open platforms that unify data warehousing and advanced analytics.CIDR(2021)
work page 2021
-
[4]
Alexander Behm, Shoumik Palkar, Utkarsh Agarwal, et al. 2022. Photon: A fast query engine for lakehouse systems. InSIGMOD
work page 2022
-
[5]
Artur Borycki. 2026. Puffin-Backed Vector Indexes: Attaching Approxi- mate Nearest Neighbor Indexes to Apache Iceberg Snapshots for Compute- Disaggregated Query Engines.arXiv preprint arXiv:2606.04196(2026)
work page Pith review arXiv 2026
-
[6]
Qi Chen, Bing Zhao, Haidong Wang, et al. 2021. SPANN: Highly-efficient billion- scale approximate nearest neighbor search. InNeurIPS
work page 2021
-
[7]
Yannis Chronis, Helena Caminal, Yannis Papakonstantinou, Fatma Özcan, and Anastasia Ailamaki. 2025. Filtered Vector Search: State-of-the-art and Research Opportunities.Proceedings of the VLDB Endowment (PVLDB)18, 12 (2025), 5488–
work page 2025
-
[8]
ClickHouse. 2024. ClickHouse: Approximate nearest neighbor search in- dexes. https://clickhouse.com/docs/en/engines/table-engines/mergetree- family/annindexes
work page 2024
Show all 25 references
-
[9]
Benoit Dageville, Thierry Cruanes, Marcin Zukowski, et al. 2016. The Snowflake elastic data warehouse. InSIGMOD
2016
-
[10]
DuckDB Labs. 2024. DuckDB VSS: Vector Similarity Search extension. https://duckdb.org/docs/extensions/vss
2024
-
[11]
Siddharth Gollapudi, Neel Karia, Varun Sivashankar, Ravishankar Krish- naswamy, Nikit Begwani, Swapnil Raz, Yiyong Lin, Yu Zhang, Neelam Maha- patro, Premkumar Srinivasan, et al. 2023. Filtered-DiskANN: Graph algorithms for approximate nearest neighbor search with filters.Proc...
2023
-
[12]
Gaurav Gupta, Jonah Yu, Tharun Medini, and Anshumali Shrivastava. 2023. CAPS: A practical partition index for filtered similarity search. InarXiv preprint arXiv:2308.15014
2023 arXiv
-
[13]
Herve Jégou, Matthijs Douze, and Cordelia Schmid. 2011. Product quantization for nearest neighbor search.IEEE TPAMI33, 1 (2011), 117–128
2011
-
[14]
Andrew Kane. 2024. pgvector: Open-source vector similarity search for Postgres. https://github.com/pgvector/pgvector
2024
-
[15]
LanceDB. 2024. Lance: modern columnar data format for ML and LLMs. https://lancedb.github.io/lance/
2024
-
[16]
Mocheng Li, Yue Zhang, Chenhao Ma, Xiao Yan, Baotong Lu, and James Cheng
-
[17]
Malkov and Dmitry A
Yu A. Malkov and Dmitry A. Yashunin. 2020. Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs.IEEE TPAMI42, 4 (2020), 824–836
2020
-
[18]
Liana Patel, Peter Kraft, Carlos Guestrin, and Matei Zaharia. 2024. ACORN: Per- formant and predicate-agnostic search over vector embeddings and structured data. InSIGMOD
2024
-
[19]
Suhas Jayaram Subramanya, Devvrit, Rohan Kadekodi, Ravishankar Kr- ishaswamy, and Harsha Vardhan Simhadri. 2019. DiskANN: Fast accurate billion-point nearest neighbor search on a single node. InNeurIPS
2019
-
[20]
Thaler and Chinya V
David G. Thaler and Chinya V. Ravishankar. 1998. Using name-based mappings to increase hit rates.IEEE/ACM Transactions on Networking6, 1, 1–14
1998
-
[21]
Jianguo Wang, Xiaomeng Yi, Rentong Guo, et al. 2021. Milvus: A purpose-built vector data management system. InSIGMOD
2021
-
[22]
Mengzhao Wang, Lingwei Xu, Xiaoliang Guo, et al. 2022. Native hybrid queries via structured labels and near neighbor search over vectors.arXiv preprint arXiv:2203.13601(2022)
2022 arXiv
-
[23]
Peng Xiang. 2024. Vector search with Parquet and DataFusion. https://blog.xiangpeng.systems/posts/vector-search-with-parquet-datafusion/. 12
2024
-
[2025]
Attribute Filtering in Approximate Nearest Neighbor Search: An In-depth Experimental Study.arXiv preprint arXiv:2508.16263(2025)
2025
-
[5492]
https://doi.org/10.14778/3750601.3750700
Reviewed August 8, 2026 · model on record in the stance chip above.
Discussion (0). Continue with ORCID to comment.