diff --git a/CMakeLists.txt b/CMakeLists.txt index 858000e6..480409d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.20) -project(RaBitQLib VERSION 0.7.1 LANGUAGES CXX) +project(RaBitQLib VERSION 0.7.2 LANGUAGES CXX) include(CMakePackageConfigHelpers) include(GNUInstallDirs) diff --git a/README.md b/README.md index 2f777d77..52563789 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,13 @@ approximate nearest-neighbor search. See the [research papers](docs/docs/papers. ## News +- **v0.7.2:** Python type hints, expanded API documentation, path-like inputs, + clearer input errors, and concise index representations. Internal quantization + refactoring and streamlined regression checks preserve existing APIs and index formats. + See the [release notes](docs/docs/releases/0.7.2.md). - **v0.7.0:** Modular C++ components, stable core API v1, optional - OpenMP for numerical components, and unified index counts. This documentation - targets 0.7.0; see the [upgrade notes](docs/docs/releases/0.7.0.md). + OpenMP for numerical components, and unified index counts. See the + [upgrade notes](docs/docs/releases/0.7.0.md). ## Vector indexes @@ -44,7 +48,7 @@ settings, and limitations. ### Python ```bash -python -m pip install --upgrade "rabitqlib>=0.7.1" +python -m pip install --upgrade "rabitqlib>=0.7.2" ``` 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 70931b6f..ec135f53 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.7.0` release and include RaBitQ-Library as a Git submodule: +Pin the `v0.7.2` 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.7.0 +git -C third_party/rabitqlib checkout v0.7.2 git add third_party/rabitqlib ``` diff --git a/docs/docs/index.md b/docs/docs/index.md index 1f2ad8dc..538a6f2c 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -24,7 +24,7 @@ estimation into your own C++ search engine.

```bash -python -m pip install "rabitqlib>=0.7.0" +python -m pip install "rabitqlib>=0.7.2" ``` [Installation and supported platforms](installation.md) · @@ -102,5 +102,5 @@ when choosing an index. ## Explore further - [Algorithm overview](rabitq/rabitq.md) for the rotation, encoding, and scoring workflow. -- [RaBitQ Library 0.7.0 release notes](releases/0.7.0.md) for new APIs and upgrade guidance. +- [RaBitQ Library 0.7.2 release notes](releases/0.7.2.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 c44542e4..f8e9e572 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.7.0**. +Platform requirements and source installation for RaBitQ Library **0.7.2**. 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.7.0" +python -m pip install "rabitqlib>=0.7.2" ``` For changes from 0.6.0, see the [0.7.0 upgrade notes](releases/0.7.0.md). @@ -50,13 +50,21 @@ Linux ARM64 and macOS ARM64 wheels bundle OpenMP, so wheel users do not need a separate OpenMP installation. Release wheels disable native CPU tuning and select supported kernels at runtime. +### Python editor support + +Version 0.7.2 includes type declarations (`__init__.pyi`) and a `py.typed` marker +for editor completion and static type checking. Select the Python environment +where `rabitqlib` is installed. Index and clustering docstrings describe parameters, +defaults and returned arrays; use `help(IvfIndex)` or `help(RaBitQKMeans)` after +importing those classes. Array shapes and parameter ranges are still checked at runtime. + ## Get the source -For Python source builds or C++ use, obtain the 0.7.0 checkout once. With Git +For Python source builds or C++ use, obtain the 0.7.2 checkout once. With Git installed, run: ```bash -git clone --branch v0.7.0 --depth 1 https://github.com/VectorDB-NTU/RaBitQ-Library.git +git clone --branch v0.7.2 --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 5759a89e..b45f728a 100644 --- a/docs/docs/quick_start.md +++ b/docs/docs/quick_start.md @@ -1,13 +1,13 @@ # Quick start Build, search, save and reload a small IVF-RaBitQ index with Python. This guide describes -**0.7.0** and uses synthetic data, so no dataset download is required. +**0.7.2** and uses synthetic data, so no dataset download is required. For C++, go directly to [C++ integration](cpp_integration.md). ## Install ```bash -python -m pip install "rabitqlib>=0.7.0" +python -m pip install "rabitqlib>=0.7.2" ``` Wheels support CPython 3.11–3.14 on Linux x86-64/ARM64, Windows x86-64 and diff --git a/docs/docs/releases/0.7.2.md b/docs/docs/releases/0.7.2.md new file mode 100644 index 00000000..41973a60 --- /dev/null +++ b/docs/docs/releases/0.7.2.md @@ -0,0 +1,40 @@ +# RaBitQ Library 0.7.2 + +This release improves Python API usability and consolidates internal quantization +code and regression checks. + +## Python changes + +- Packages include type declarations and `py.typed` for editor completion and + static checking. Index and clustering docstrings now describe parameters, + defaults, array shapes and returned values. See [editor support](../installation.md#python-editor-support). +- Index `save` and `load` accept `pathlib.Path` and `os.PathLike`, alongside + existing string, bytes and bytearray paths. Embedded null characters are + rejected before file access. See [file-path contracts](../index/usage.md#threading-and-file-paths). +- Invalid inputs report more context, including expected dimensions, actual + shapes or dtypes, and invalid cluster-ID positions. +- `repr(index)` summarizes index configuration, counts and build state without + searching or modifying the index. See [index counts](../index/usage.md#index-counts). + +## Internal changes + +Quantization paths share factor and threshold calculations and reuse prepared +residuals. Regression coverage includes numerical references, degenerate inputs, +Python boundaries and persistence. Test and CI consolidation reduces repeated +validation while retaining platform and installed-package checks. These changes +do not establish a new performance result; the published +[benchmarks](../benchmarks/bench.md) retain their recorded 0.7.1 provenance. + +## Upgrading + +From 0.7.1, existing public call forms and index file formats remain supported; +no index conversion is required. C++ component targets and the stable core API v1 +remain unchanged. Rebuild C++ consumers with matching headers and libraries; +no cross-version C++ binary ABI is promised. + +When upgrading from before 0.7.0, also follow the +[0.7.0 migration guide](../modular_migration.md) for component targets, headers +and index-count semantics. + +Use the [installation guide](../installation.md) for supported platforms and +the [quick start](../quick_start.md) for a complete Python example. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index cb3d32db..ac225b80 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -12,6 +12,7 @@ nav: - Installation: installation.md - C++ Integration: cpp_integration.md - Release notes: + - "0.7.2": releases/0.7.2.md - "0.7.0": releases/0.7.0.md - "0.6.0": releases/0.6.0.md - RaBitQ: diff --git a/pyproject.toml b/pyproject.toml index 46a246da..408d768a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "rabitqlib" -version = "0.7.1" +version = "0.7.2" description = "RaBitQ Python bindings for indexes and clustering" readme = "README.md" requires-python = ">=3.11"