Skip to content

DiskANN v0.56.0

Choose a tag to compare

@arkrishn94 arkrishn94 released this 21 Aug 21:02
· 37 commits to main since this release
860cf47

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_value was removed. The output buffer now determines k (#1151).
  • Neighbor fields and ordering changed. Use its accessors and the explicit neighbor::ord comparators (#1273).
  • SearchOutputBuffer now accepts Neighbor values 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 FixedChunkPQTable and 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, and get_pivot_data_path were 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_attribute now deletes that attribute (#1307).
  • BfTree indexes now support u64 vertex 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