Repository navigation
chore(release): prepare v0.8.0 - #206
Merged
Merged
Conversation
Bump the version to 0.8.0, update install pins and version text, add the 0.8.0 release notes with their navigation entry and a README news entry, and move benchmarks/run.py off the deprecated index call forms while keeping its clustering protocol and recorded configuration.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepare the 0.8.0 release.
pyproject.tomlandCMakeLists.txt.docs/docs/releases/0.8.0.md), their navigation entry and a README news entry. The notes cover thetrain/add/searchAPI (feat(index): train centroids inside IVF and HNSW indexes #203, feat(python): train, set_centroids and add for IvfIndex and HnswIndex #204, feat(python): train, add and search for SymqgIndex #205), its deprecations and behavior changes, k-means sampling andassign(feat(clustering): add optional k-means sampling and assignment of new vectors #202), the breaking C++ changes (theg_accessor rename from refactor!: rename query factor accessors with the g_ prefix #201, the removedrabitqlib::Arrayheader from refactor: simplify core and utils and remove unused Array #175, and saving empty indexes), seeded-rotation andt_constchanges off GCC 11+ (feat(core): portable seeded rotations and a frozen fast-mode scale table #199), and the validation, ISA-isolation, allocation and atomic-save fixes.benchmarks/run.pyoff the deprecated forms. It still clusters withRaBitQKMeansitself and passes the result throughset_centroidsandadd(..., cluster_ids=...), so the benchmark protocol and its recorded configuration (quantization_bits) are unchanged.Testing
python -m mkdocs build --strict --config-file docs/mkdocs.yml,git diff --check,./scripts/check-python.shruff format --check .github/scripts,ruff check .github/scripts,python -m unittest discover -s .github/scripts -p 'test_*.py'(60 tests)benchmarks/run.pyon 3,000 synthetic 64-dim vectors withPYTHONWARNINGS=error::DeprecationWarning:rabitq-ivf,rabitq-hnsw,rabitq-symqg(--quantization-bits 0and4) all complete. With--threads 1, the old and new runner write byte-identical HNSW index files. This is a smoke test, not a performance measurement.Downstream compatibility
Platform: Intel Xeon Gold 6418H, Ubuntu 22.04.5 (kernel 6.8.0), GCC 14.3, CMake 3.28.3. The txtai candidate is a package built from this branch's working tree with
RABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF. The zvec candidate is agit archiveof08bc325, this branch's base, whose library sources differ from this branch only in the version inCMakeLists.txt.txtai
masterat2a11bb1cfb(its RaBitQ backend last changed in4d5e05f), Python 3.13, run in a temporary virtual environment:DeprecationWarningfrom txtai's use of the oldIvfIndex/HnswIndexconstructors andbuildThis covers the backend's IVF and HNSW build, query, save and load, and IVF append and delete. txtai keeps working in 0.8 but will break in 0.9 unless it moves to the 0.8 API.
zvec
mainatbc7a90b258, which pins RaBitQ-Library v0.7.0 (de793e8) as a submodule and builds core and FastScan only (RABITQ_BUILD_INDEX=OFF, OpenMP off). Configured with-DCMAKE_BUILD_TYPE=Release -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_TOOLS=OFF -DBUILD_C_BINDINGS=OFF;RABITQ_SOURCE_DIRpointed at the candidate archive.ivf_rabitq_streamer_testhnsw_rabitq_streamer_testrabitq_dispatch_testhnsw_rabitq_index_testThe candidate requires one change in zvec:
tests/core/algorithm/ivf_rabitq/ivf_rabitq_streamer_test.cccallskbxsumq(), which #201 renamed tog_kbxsumq(). Without that change the test fails to compile (no member named 'kbxsumq'; did you mean 'g_kbxsumq'?); with it, all tests above pass. zvec's library sources need no change.Not tested: other zvec targets and its Python bindings, txtai outside its RaBitQ test module, platforms other than Linux x86-64, and native-optimized builds downstream.
Performance
No performance measurement was made for this release. The k-means sampling benchmark was not run, and the 2,000-cluster threshold for
QGKMeansin indextrainis unmeasured; the release notes say so. The published benchmarks keep their 0.7.1 provenance.Merging this into
maintriggers the automatic release: onceTestandPython Wheelsucceed for the merge commit,Release wheelstagsv0.8.0, publishes to PyPI and creates the GitHub Release.