diff --git a/CMakeLists.txt b/CMakeLists.txt index 2649d66d..98e864bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.20) -project(RaBitQLib VERSION 0.8.3 LANGUAGES CXX) +project(RaBitQLib VERSION 0.8.4 LANGUAGES CXX) include(CMakePackageConfigHelpers) include(GNUInstallDirs) diff --git a/README.md b/README.md index bcaa815f..4a3c364e 100644 --- a/README.md +++ b/README.md @@ -27,14 +27,14 @@ approximate nearest-neighbor search. See the [research papers](https://vectordb- ## News +- **v0.8.4:** input validation reads each batch once instead of twice + ([notes](https://vectordb-ntu.github.io/RaBitQ-Library/releases/0.8.4/)). - **v0.8.3:** provisional `rabitqlib.quant` module: rotate, quantize, pack and score RaBitQ codes stored outside an index ([notes](https://vectordb-ntu.github.io/RaBitQ-Library/releases/0.8.3/)). - **v0.8.2:** three lines to an index: the first `add` trains, `nbits` defaults to 7 and search settings are optional; faster IVF-RaBitQ `add` ([notes](https://vectordb-ntu.github.io/RaBitQ-Library/releases/0.8.2/)). -- **v0.8.1:** the default `num_threads=0` respects `OMP_NUM_THREADS`, fixing a macOS - crash alongside Faiss and PyTorch ([notes](https://vectordb-ntu.github.io/RaBitQ-Library/releases/0.8.1/)). Earlier versions: [all releases](https://github.com/VectorDB-NTU/RaBitQ-Library/releases). @@ -62,7 +62,7 @@ settings, and limitations. ### Python ```bash -python -m pip install --upgrade "rabitqlib>=0.8.3" +python -m pip install --upgrade "rabitqlib>=0.8.4" ``` Wheels support CPython 3.11–3.14 on Linux x86-64/ARM64, Windows x86-64, diff --git a/docs/docs/cpp_integration.md b/docs/docs/cpp_integration.md index 0ee29128..2961e043 100644 --- a/docs/docs/cpp_integration.md +++ b/docs/docs/cpp_integration.md @@ -58,12 +58,12 @@ The core example is built as the `core_example` CMake target. For the GIST bench The [core quantization v1 API](rabitq/core_api.md) has a C++ source-compatibility contract. Other C++ APIs may evolve, and no cross-version C++ binary ABI is promised. -Pin the `v0.8.3` release and include RaBitQ-Library as a Git submodule: +Pin the `v0.8.4` release and include RaBitQ-Library as a Git submodule: ```bash git submodule add https://github.com/VectorDB-NTU/RaBitQ-Library.git third_party/rabitqlib git submodule update --init --recursive -git -C third_party/rabitqlib checkout v0.8.3 +git -C third_party/rabitqlib checkout v0.8.4 git add third_party/rabitqlib ``` diff --git a/docs/docs/index.md b/docs/docs/index.md index 526ff20d..160395c8 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -26,7 +26,7 @@ estimation into your own C++ search engine.

```bash -python -m pip install "rabitqlib>=0.8.3" +python -m pip install "rabitqlib>=0.8.4" ``` [Installation and supported platforms](installation.md) · @@ -112,5 +112,5 @@ on your own dataset when choosing an index. ## Explore further - [Algorithm overview](rabitq/rabitq.md) for the rotation, encoding, and scoring workflow. -- [RaBitQ Library 0.8.3 release notes](releases/0.8.3.md) for the latest changes and upgrade guidance. +- [RaBitQ Library 0.8.4 release notes](releases/0.8.4.md) for the latest changes and upgrade guidance. - [Papers and citations](papers.md) for the original RaBitQ method, its multi-bit extension, and SymphonyQG. diff --git a/docs/docs/installation.md b/docs/docs/installation.md index bebed9f3..5d5c3627 100644 --- a/docs/docs/installation.md +++ b/docs/docs/installation.md @@ -1,6 +1,6 @@ # Installation -Platform requirements and source installation for RaBitQ Library **0.8.3**. +Platform requirements and source installation for RaBitQ Library **0.8.4**. For the first Python example, see [Quick Start](quick_start.md). ## Requirements @@ -40,7 +40,7 @@ build can use scalar kernels without the FastScan CPU baseline. ## Python wheels ```bash -python -m pip install "rabitqlib>=0.8.3" +python -m pip install "rabitqlib>=0.8.4" ``` For changes from 0.6.0, see the [0.7.0 upgrade notes](releases/0.7.0.md). @@ -61,11 +61,11 @@ importing those classes. Array shapes and parameter ranges are still checked at ## Get the source -For Python source builds or C++ use, obtain the 0.8.3 checkout once. With Git +For Python source builds or C++ use, obtain the 0.8.4 checkout once. With Git installed, run: ```bash -git clone --branch v0.8.3 --depth 1 https://github.com/VectorDB-NTU/RaBitQ-Library.git +git clone --branch v0.8.4 --depth 1 https://github.com/VectorDB-NTU/RaBitQ-Library.git cd RaBitQ-Library ``` diff --git a/docs/docs/quick_start.md b/docs/docs/quick_start.md index 99032928..e7d344db 100644 --- a/docs/docs/quick_start.md +++ b/docs/docs/quick_start.md @@ -1,14 +1,14 @@ # Quick start Build, search, save and reload a small IVF-RaBitQ index with Python. This guide describes -**0.8.3** and uses synthetic data, so no dataset download is required. Coming from 0.7? +**0.8.4** and uses synthetic data, so no dataset download is required. Coming from 0.7? See the [migration guide](python_migration.md). For C++, go directly to [C++ integration](cpp_integration.md). ## Install ```bash -python -m pip install "rabitqlib>=0.8.3" +python -m pip install "rabitqlib>=0.8.4" ``` Wheels support CPython 3.11–3.14 on Linux x86-64/ARM64, Windows x86-64 and diff --git a/docs/docs/releases/0.8.4.md b/docs/docs/releases/0.8.4.md new file mode 100644 index 00000000..066baa2e --- /dev/null +++ b/docs/docs/releases/0.8.4.md @@ -0,0 +1,23 @@ +# RaBitQ Library 0.8.4 + +This release makes input validation faster. APIs, defaults, results, error +messages and index files are unchanged. + +## Performance + +- Every index checks that the vectors, centroids and queries it receives are + finite and inside the safe float32 range. The check now reads the input once + instead of twice (#223). This applies to `train`, `add` and `search` in Python + and C++, and to `rabitqlib.quant` inputs. On 1,000,000 × 960 vectors, the check + alone took about 0.43 s instead of 0.77 s on one core of a Xeon Gold 6418H + (GCC 14, `-O3`). That is the time of this check only, not of a whole `add`. + Invalid input raises the same errors as before. + +## Upgrading + +From 0.8.3, index file formats, the stable core API v1 and Python signatures +are unchanged. Rebuild C++ consumers with matching headers and libraries; no +cross-version C++ binary ABI is promised. + +When upgrading from 0.7, follow the [0.8.0 release notes](0.8.0.md) and the +[migration guide](../python_migration.md). diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index a1dfd332..f9a7dba3 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -15,6 +15,7 @@ nav: # Group by minor version: nested groups stay collapsed except the current page's. - Release notes: - "0.8": + - "0.8.4": releases/0.8.4.md - "0.8.3": releases/0.8.3.md - "0.8.2": releases/0.8.2.md - "0.8.1": releases/0.8.1.md diff --git a/pyproject.toml b/pyproject.toml index b49a9106..5ea7ac0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "rabitqlib" -version = "0.8.3" +version = "0.8.4" description = "Official RaBitQ library for vector quantization and approximate nearest-neighbor search" readme = "README.md" requires-python = ">=3.11"