diff --git a/CMakeLists.txt b/CMakeLists.txt index d39a376e..4a25c909 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.20) -project(RaBitQLib VERSION 0.3.10 LANGUAGES CXX) +project(RaBitQLib VERSION 0.4.0 LANGUAGES CXX) include(CMakePackageConfigHelpers) include(GNUInstallDirs) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8d0387ce..9561e667 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,11 +38,12 @@ Run any examples you add or change, including examples inside Markdown. ## Setup for code changes -Source builds support x86-64 with AVX2/FMA (AVX-512 optional) and macOS ARM64 -with NEON. They need CMake 3.20 or newer, a C++17 compiler, and OpenMP. -Windows x86-64 uses Visual Studio 2026; Linux AArch64 needs separate platform -validation. See the [platform-specific build instructions](tests/README.md#quick-start) -for Windows and [Apple Silicon](tests/README.md#macos-arm64). +Source builds support Linux and Windows x86-64 with AVX2/FMA (AVX-512 +optional), and Linux and macOS ARM64 with NEON. They need CMake 3.20 or newer, +a C++17 compiler, and OpenMP. Windows x86-64 uses Visual Studio 2026. See the +[platform-specific build instructions](tests/README.md#quick-start) for +[Linux ARM64](tests/README.md#linux-arm64) and +[Apple Silicon](tests/README.md#macos-arm64). Documentation-only contributions do not need this hardware or compiler setup. On Ubuntu or Debian: @@ -150,7 +151,7 @@ for details. | Problem | What to check | | --- | --- | | CMake cannot find OpenMP or a compiler | Check the [platform-specific prerequisites](tests/README.md#prerequisites). On Apple Silicon, install `libomp` and pass its prefix as `OpenMP_ROOT`. Include the compiler version and CMake error when asking for help. | -| Unsupported CPU or architecture | Use x86-64 with AVX2/FMA or macOS ARM64 with NEON. Linux AArch64 still needs platform validation; disabling native tuning alone does not establish support. Report your CPU model in the issue or PR. | +| Unsupported CPU or architecture | Use Linux or Windows x86-64 with AVX2/FMA, or Linux or macOS ARM64 with NEON. Disabling native tuning does not add an unsupported architecture. Report your CPU model in the issue or PR. | | Tests do not reflect your Python or C++ edits | Re-run the platform-specific install command above in the active environment, then check the import paths below. Re-run the regression test that exercises your change. | | Formatting or analysis reports the wrong tool version | Use the pinned versions and executable overrides in the [development reference](DEVELOPMENT.md). | diff --git a/README.md b/README.md index 5f2f6c1e..d31d8c6a 100644 --- a/README.md +++ b/README.md @@ -35,26 +35,15 @@ ## News -- **September 2026 — Linux ARM64 support:** Native AArch64 C++ tests and - CPython 3.11–3.14 wheel builds cover NEON kernels and all three indexes. - See the [platform requirements](docs/docs/quick_start.md#requirements). +- **September 2026 — Platform support:** CPython 3.11–3.14 wheels cover Linux + x86-64 and ARM64, Windows x86-64, and macOS 14+ ARM64. C++ source builds are + validated on these platforms. See the + [platform requirements](docs/docs/quick_start.md#requirements). -- **September 2026 — Apple Silicon support:** macOS ARM64 joins Linux and - Windows x86-64, with NEON kernels and CPython 3.11–3.14 wheel builds for - macOS 14+. See the [platform requirements](docs/docs/quick_start.md#requirements). - -- **September 2026 — Windows x86-64 support:** C++ and Python source builds now - support MSVC, runtime AVX2/AVX-512 dispatch, and Unicode index paths. Windows - wheels are available for CPython 3.11–3.14. For source builds, see the - [Windows build instructions](tests/README.md#prerequisites). - -- **September 2026 — IVF raw-vector reranking:** Use `nbits=32` for float32 - reranking. Quantized IVF automatically selects HACC for 4–9-bit codes. - See the [IVF documentation](docs/docs/index/ivf.md). - -- **September 2026 — Quantized SymphonyQG:** Set `quantization_bits=4` or `8` - for compact vector storage; raw vectors remain the default. - See the [SymphonyQG documentation](docs/docs/index/qg.md). +- **September 2026 — txtai integration:** [txtai](https://github.com/neuml/txtai) + now includes `rabitqlib` as an ANN backend with IVF and HNSW modes. See its + [RaBitQ configuration](https://github.com/neuml/txtai/blob/master/docs/embeddings/configuration/ann.md#rabitq) + and the [integration discussion](https://github.com/VectorDB-NTU/RaBitQ-Library/issues/110). ## Install @@ -65,9 +54,8 @@ python -m pip install --upgrade rabitqlib Wheels: CPython 3.11–3.14 on Linux x86-64 and ARM64, Windows x86-64, and macOS 14+ ARM64 (Apple Silicon). x86-64 uses AVX2/FMA with optional AVX-512 acceleration; ARM64 uses NEON and portable scalar kernels. Linux ARM64 and -macOS wheels bundle OpenMP. Linux ARM64 wheels use a `manylinux_2_28` build -image; check each wheel's tags for its glibc compatibility. Intel Mac and -universal2 wheels are not provided. +macOS wheels bundle OpenMP. Linux ARM64 wheels carry +`manylinux_2_27_aarch64` and `manylinux_2_28_aarch64` tags. ## Python quick start diff --git a/docs/docs/index.md b/docs/docs/index.md index 88ea6395..8a1edcca 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -111,6 +111,10 @@ University. ## Used across the vector-search ecosystem +[txtai](https://github.com/neuml/txtai) uses `rabitqlib` directly as an ANN +backend with IVF and HNSW modes. See its +[RaBitQ configuration](https://github.com/neuml/txtai/blob/master/docs/embeddings/configuration/ann.md#rabitq). + RaBitQ has been adopted by projects including [Milvus](https://github.com/milvus-io/milvus), [Faiss](https://github.com/facebookresearch/faiss), diff --git a/docs/docs/quick_start.md b/docs/docs/quick_start.md index 4ee149aa..358253a3 100644 --- a/docs/docs/quick_start.md +++ b/docs/docs/quick_start.md @@ -18,8 +18,8 @@ workload and CMake 4.2+ for its generator). Apple Silicon uses AppleClang and an external OpenMP runtime such as Homebrew `libomp`. Linux ARM64 source builds and repaired wheels run on native AArch64 CI. -The Linux ARM64 wheels use a `manylinux_2_28` build image; auditwheel assigns -the final glibc compatibility tags. Intel Mac and universal2 wheels are not provided. +Linux ARM64 wheels carry `manylinux_2_27_aarch64` and +`manylinux_2_28_aarch64` tags.
CPU dispatch details diff --git a/pyproject.toml b/pyproject.toml index 11566a15..df89b4c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "rabitqlib" -version = "0.3.10" +version = "0.4.0" description = "RaBitQ Python bindings for HNSW, IVF, and SymQG" readme = "README.md" requires-python = ">=3.11" diff --git a/tests/README.md b/tests/README.md index 2e54d5d0..4a6d09ff 100644 --- a/tests/README.md +++ b/tests/README.md @@ -88,7 +88,7 @@ as the native-optimization setting below. Release CI uses native `macos-14` runn builds CPython 3.11–3.14 ARM64 wheels, bundles OpenMP with delocate, then installs and runs the full Python suite for each wheel. The minimum wheel OS target is macOS 14. Set `RABITQ_TEST_WHEEL=1` when testing a repaired wheel locally to also check its -ARM64 extension and bundled OpenMP loader path. Intel and universal2 wheels are excluded. +ARM64 extension and bundled OpenMP loader path. The combined executable is `build/tests/Release/rabitq_tests.exe` on Windows and `build/tests/rabitq_tests` on Linux/macOS. To run a subset, add `-R ` to