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]

Reply via email to