Skip to content

RaBitQ Library 0.7.0

This release introduces modular C++ components, stable core API v1, optional OpenMP for numerical components, and unified index counts.

Upgrading from 0.6.0

C++ components and headers

Choose rabitqlib::core for per-vector quantization, estimation and rotation, rabitqlib::fastscan for batch scoring, or rabitqlib::index for ANN and clustering. The former rabitqlib::rabitqlib target and forwarding headers are removed. Update includes and link targets using the migration guide. Rebuild C++ consumers with matching headers and libraries; no cross-version C++ binary ABI is promised.

Core and FastScan support RABITQ_USE_OPENMP=OFF. ANN and Python retain their OpenMP requirement. Use a fresh installation prefix when changing components so stale headers from an older installation cannot mask migration errors.

Stable core API v1

The new core API provides a source-stable float32 interface with caller-owned code buffers and workspace, separate factors, and no heap allocation on valid calls. API version 1.0 is independent of package version 0.7.0. Advanced templates and index APIs are not covered by this stability guarantee.

Index counts in C++ and Python

IVF-RaBitQ, HNSW-RaBitQ and SymphonyQG share max_elements, num_stored_points and num_points for capacity, stored records and live points respectively. HNSW-RaBitQ's num_points now excludes removed records. Use num_stored_points for ID bounds, append offsets and minimum resize capacity. See the count migration details.

Python continues to use import rabitqlib and the existing index class names. Saved index formats are retained from 0.6.0; loading recovers counts from existing removal markers. These changes do not require index-file conversion. Restrictions for readers older than 0.6.0 still apply; see the 0.6.0 notes.