github tensorchord/VectorChord 0.4.0

latest releases: 0.5.1, 0.5.0, 0.4.3...
3 months ago

VectorChord 0.4 Release Notes


Major Improvements

  • Streaming I/O & Page Prefetch

    • Complete rewrite of page layout to enable pipelined computation with streaming I/O.
    • On PostgreSQL 17, uses fadvise to prefetch buffers into the OS page cache, eliminating per-buffer read waits and fully leveraging disk throughput.
    • In upcoming PostgreSQL 18, direct support for io_uring will further streamline asynchronous I/O.
    • Benchmarks: 2–3× lower latency on cold queries (no buffer or page cache), translating to significantly improved tail latency in production.
  • Prefilter Acceleration

    • Introduces true prefilter support for vector + filter queries.
    • Previous postfilter approach ranked full result sets and then applied filters—inefficient when selectivity is low (e.g., 1% filter rate).
    • Applies SQL filters before full precision vector distance computations, avoiding unnecessary work.
    • Benchmarks: Up to 3× faster end-to-end search on highly selective filters without any additional tuning.

Other Improvements

  • Optimized Residual Quantization

    • Collaboration with RaBitQ author Jianyang: refactored distance term $|⟨o, q–c⟩|$ into $⟨o, q⟩ – ⟨o, c⟩$, so the query vector is quantized only once.
    • Result: ~20% QPS improvement over 0.3.
    • Recommendation: Enable residual quantization for L2 workloads.
  • Fast Walsh-Hadamard Transform for Rotation

    • Collaboration with RaBitQ author Jianyang: replaced manual vchordrq.prewarm_dim GUC with an on-the-fly Fast Walsh-Hadamard Transform.
    • Removes the need to configure a prewarmed dimension list and yields marginal speed gains during setup.

Thank you for using VectorChord! As always, we welcome feedback and contributions on GitHub.

Full Changelog: 0.3.0...0.4.0

Don't miss a new VectorChord release

NewReleases is sending notifications on new releases.