JingsongLi opened a new pull request, #22: URL: https://github.com/apache/paimon-vector-index/pull/22
## Summary Improve IVF-HNSW-SQ quantization quality by moving SQ from global absolute-vector bounds to residual, per-dimension, per-IVF-list bounds. This preserves the compact SQ storage profile while improving recall substantially in the recall benchmark. ## Changes - Train SQ on IVF residuals (`vector - centroid`) instead of raw vectors. - Use per-dimension bounds and round-to-nearest encoding in `ScalarQuantizer`. - Store per-list SQ bounds in IVF-HNSW-SQ format v3, while keeping reader compatibility for v1 global-bound files and v2 residual-bound files. - Decode residual SQ vectors by adding the IVF centroid back before building/loading HNSW graphs. - Add serialized size reporting to the recall benchmark. ## Testing - `cargo test -p paimon-vindex-core` - `cargo clippy -p paimon-vindex-core --all-targets -- -D warnings` - `cargo bench -p paimon-vindex-core --bench recall_bench` ## Benchmark Notes On `recall_bench`, IVF-HNSW-SQ size remains about half of IVF-HNSW-FLAT: - small-lists: IVF-HNSW-SQ `4.10 MiB` vs IVF-HNSW-FLAT `7.73 MiB` - large-lists: IVF-HNSW-SQ `10.13 MiB` vs IVF-HNSW-FLAT `19.28 MiB` Recall improved versus the previous global SQ baseline observed during iteration: - small-lists: from about `79%` to `99.4%` at nprobe >= 8 - large-lists: from about `66%` to `78%` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
