DiskANN v0.56.0
What's changed
This release includes API cleanup, corrected search behavior, expanded quantization support, and a new concurrent in-memory provider.
Breaking changes
Search APIs
Knn::k_valuewas removed. The output buffer now determinesk(#1151).Neighborfields and ordering changed. Use its accessors and the explicitneighbor::ordcomparators (#1273).SearchOutputBuffernow acceptsNeighborvalues instead of(id, distance)tuples (#1284).
Error handling
ANNErrorKind and the ANNError::log_* constructors were removed. Use ANNError::{new, message, context}. Disk-specific error kinds now live under diskann_disk::error (#1282).
Disk index builds
Checkpointing, continuation, and resumable build APIs were removed. This includes ChunkingConfig and the checkpoint/continuation modules. Compression chunk sizing is now configured through DiskIndexBuildParameters (#1254).
Product quantization
- PQ distance computers now borrow
FixedChunkPQTableand carry lifetimes instead of being generic over an owned or dereferenceable table (#1247). - Pivot loading is consolidated under
PQStorage::load_pivots. Raw pivot loaders,load_pq_pivots_bin, explicit pivot-path arguments, andget_pivot_data_pathwere removed (#1276).
Utility APIs
diskann_utils::lifetime and its WithLifetime, Static, and Slice types were removed (#1275).
Garnet FFI
diskann-garnet is now version 5.0.0. Consumers must update their FFI declarations for the new logging callback, read-length hint, filter callback data, backfill result, and beam_width search arguments. The release also adds random_members and search_neighbors (#1336).
Behavior changes
- Range search now strictly respects
max_results, which must accommodate the initial search width (#1253). - Product-PQ graph pruning for normalized cosine distance was corrected. Consider rebuilding affected indexes to benefit from the fix (#1298).
- Passing an empty attribute to Garnet's
set_attributenow deletes that attribute (#1307). - BfTree indexes now support
u64vertex IDs and persist the selected ID width. Loading with a different width is rejected (#1216). - The repository toolchain is now Rust 1.97.1 (#1340).
Highlights
In-Mem 2.0
The new diskann-inmem crate introduces a concurrency-safe in-memory provider with external/internal ID translation and safe concurrent insert, search, and delete operations. It is intended to replace the existing in-memory provider. Quantization, hybrid PQ, and variable-sized items remain follow-up work (#1206).
Other highlights
- Added filtered range search (#1228).
- Added spherical-quantized disk index builds (#1331).
- Added disk search results containing native indexed vectors (#1345).
- Added persistent Garnet quantization state and optimized reranking (#1251, #1308).
- Added
diskann::version()and a runbook ground-truth generation tool (#1240, #1263).
Full changelog: v0.55.0...v0.56.0