ReleaseMicrosoftMicrosoftpublished Jun 15, 2026seen 1w

microsoft/DiskANN v0.54.0

microsoft/DiskANN

Open original ↗

Captured source

source ↗
published Jun 15, 2026seen 1wcaptured 1whttp 200method plain

DiskANN v0.54.0

Repository: microsoft/DiskANN

Tag: v0.54.0

Published: 2026-06-15T19:20:38Z

Prerelease: no

Release notes:

Breaking changes since 0.53.0

Graph search: DataProvider contract collapsed into SearchAccessor (#1067)

Accessor, BuildQueryComputer, ExpandBeam, SearchExt, and AsNeighbor/NeighborAccessor are merged into a single SearchAccessor trait. The indexing layer no longer has a notion of element types.

  • Upgrade: Implement SearchAccessor instead of the removed traits; use SearchAccessor::expand_beam for search. SearchStrategy/InsertStrategy/DefaultSearchStrategy/DefaultPostProcessor now carry a lifetime, and the query is passed into search_accessor (accessors may now borrow the query). SearchPostProcess no longer takes a QueryComputer (only requires HasId). The blanket workingset::Fill impl for workingset::Map was removed — implement Fill yourself, or use the new synchronous Map::fill helper.

Insert/prune: consolidated into PruneAccessor (#1138, follow-up to #1067)

Removed DelegateNeighbor, AsNeighbor, AsNeighborMut, HasElementRef, BuildDistanceComputer, workingset::Fill, and workingset::AsWorkingSet, folded into a single PruneAccessor trait.

  • Upgrade: Implement PruneAccessor (provides neighbors() for neighbor delegation and fill() returning both a View and the distance computer). Note neighbors() now borrows &mut self.

VectorId: removed scalar conversion traits/bounds (#1145, #1133)

Dropped VectorIdTryFrom, TryIntoVectorId, methods vector_id_try_from/try_into_vector_id, helpers vecid_from_u32/vecid_from_usize, and IdConversionError/ErrorToVectorId. Internal IDs no longer need to convert to/from usize.

  • Upgrade: Where usize conversion is still required (e.g. roaring-treemap keys in diskann-label-filter), add an explicit IntoUsize bound (now required on RoaringAttributeStore, InlineBetaStrategy, QueryBitmapEvaluator/BitmapFilter). DiskANNIndex::prune_range now takes impl IntoIterator + Send instead of Range — construct the iterator for your ID type at the call site. SimpleNeighborProviderAsync and bftree::VectorProvider are no longer generic over the ID type (fixed to u32).

DiskIndexReader: dropped vestigial VectorType generic (#1161)

  • Upgrade: Replace DiskIndexReader::::new(...) with DiskIndexReader::new(...).

Filtered search renames (#1149)

MultihopSearchMultihopFilterSearch; benchmark config phases MultiHopSearchPhase/InlineSearchPhaseMultihopFilterSearchPhase/InlineFilterSearchPhase.

  • Upgrade: Update references to the new names.

diskann-garnet FFI: BIN/Q8 quantizers, bumped to 2.0.0 (#1050)

Vectors are now stored as Poly; a type-erased GarnetQuantizer trait replaces index/provider type parameterization. New FFI: insert() returns a success/training-ready flag, plus build_quant_table() and backfill_quant_vectors() for caller-driven async training/backfill. Accessor renamed to DynamicAccessor; the FSM is now lockable and gained visit_used().

  • Upgrade: Garnet consumers must adopt the new 2.0.0 FFI surface (handle the new insert() return flag and drive build_quant_table/backfill_quant_vectors).

Full list of changes.

  • Multi-vector MaxSim benchmark with BYOTE factory by @suri-kumkaran in https://github.com/microsoft/DiskANN/pull/1027
  • BufferedFnPtr and take UnalignedSlice. by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1113
  • [diskann-wide] Test unaligned loads properly. by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1110
  • [diskann-garnet] Implement BIN and Q8 quantizers by @metajack in https://github.com/microsoft/DiskANN/pull/1050
  • Right-size tile conversion buffer in tiled_reduce by @suri-kumkaran in https://github.com/microsoft/DiskANN/pull/1123
  • Add JobId labels to disk benchmark CI runners by @arrayka in https://github.com/microsoft/DiskANN/pull/1120
  • nightly: remove stale bf_tree feature from DISKANN_FEATURES by @Copilot in https://github.com/microsoft/DiskANN/pull/1112
  • Add a small streaming runbook and groundtruth to test_data by @magdalendobson in https://github.com/microsoft/DiskANN/pull/1127
  • fix: redirect disk-index benchmark build artifacts to target/tmp by @arrayka in https://github.com/microsoft/DiskANN/pull/1132
  • Remove try_into_vector_id conversion in prune. by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1133
  • [diskann-garnet] Fix handling of missing quant vectors during delete() by @metajack in https://github.com/microsoft/DiskANN/pull/1130
  • Simplify the DataProvider contract for graph search by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1067
  • Add Documentation DO/DON'T section in agents.md by @suri-kumkaran in https://github.com/microsoft/DiskANN/pull/1103
  • Fix quantizer detection in train_quantizer() and set_element() by @metajack in https://github.com/microsoft/DiskANN/pull/1140
  • add bf_tree benchmark infrastructure by @JordanMaples in https://github.com/microsoft/DiskANN/pull/1106
  • [RFC] What filtered search algorithms should DiskANN support? by @magdalendobson in https://github.com/microsoft/DiskANN/pull/1128
  • Inline filtered search with adaptive L by @magdalendobson in https://github.com/microsoft/DiskANN/pull/1131
  • [benchmark] Spherical exhaustive benchmark threadpool bug by @arkrishn94 in https://github.com/microsoft/DiskANN/pull/1148
  • Consolidate insert into PruneAccessor by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1138
  • Rename MultihopSearch to MultihopFilterSearch by @magdalendobson in https://github.com/microsoft/DiskANN/pull/1149
  • [bftree] Bug with writing length to neighbor list by @arkrishn94 in https://github.com/microsoft/DiskANN/pull/1150
  • Fix handling of deletes and ID minting during concurrent insert/delete by @metajack in https://github.com/microsoft/DiskANN/pull/1146
  • [VectorId] Remove Id conversion bounds and traits by @arkrishn94 in https://github.com/microsoft/DiskANN/pull/1145
  • Remove vestigial VectorType parameter from DiskIndexReader by @doliawu in https://github.com/microsoft/DiskANN/pull/1161
  • change documentation link to repository link by @harsha-simhadri in https://github.com/microsoft/DiskANN/pull/1156
  • [diskann-garnet] Fix handling of start points on fresh indexes by @metajack in https://github.com/microsoft/DiskANN/pull/1167
  • Bump version to 0.54.0 by...

Excerpt shown — open the source for the full document.

Notability

notability 3.0/10

Minor version update of existing library.