ReleaseMicrosoftMicrosoftpublished May 12, 2026seen 5d

microsoft/DiskANN v0.52.0

microsoft/DiskANN

Open original ↗

Captured source

source ↗
published May 12, 2026seen 5dcaptured 10hhttp 200method plain

DiskANN v0.52.0

Repository: microsoft/DiskANN

Tag: v0.52.0

Published: 2026-05-12T21:07:40Z

Prerelease: no

Release notes:

DiskANN v0.52.0 Release Notes

Breaking Changes

An AI generated, human reviewed list of changes is summarized below.

get_degree_stats signature changed (#998)

DiskANNIndex::get_degree_stats now takes an explicit iterator of IDs instead of requiring the data provider to implement IntoIterator.

// Before — provider had to impl IntoIterator
index.get_degree_stats(&mut accessor)?;

// After — caller supplies the ID iterator
index.get_degree_stats(&mut accessor, id_iter)?;

PQ dimension contract tightened; entries now &[f32] only (#1044)

With AlignedBoxWithSlice removed from the PQ path, the dimension handling has been refactored into a three-layer contract:

| Layer | Where | Contract | |---|---|---| | Boundary (inmem) | QueryComputer::new, MultiQueryComputer::new, DistanceComputer::evaluate_similarity | len == dim (returns Err on mismatch) | | Boundary (disk) | PQScratch::set | len >= dim, slices to [..dim] | | Internal | TableL2/IP/Cosine::{new, populate} | Trusted — no re-validation |

Other changes:

  • PQ table populate/distance methods now accept &[f32] instead of >. Callers must pre-decode quantized vectors via VectorRepr::as_f32.
  • Generic trampoline impls (&Vec, &&[u8]) on QueryComputer / DistanceComputer have been removed.

calculate_chunk_offsets relocated to ChunkOffsets constructors (#976)

The free functions calculate_chunk_offsets and calculate_chunk_offsets_auto have been moved into constructors on ChunkOffsets / ChunkOffsetsView in diskann-quantization::views.

// Before
let offsets = calculate_chunk_offsets(dim, num_chunks);

// After (allocating)
let offsets = ChunkOffsets::partition(dim, num_chunks)?;

// After (zero-alloc, borrows caller-owned scratch)
let view = ChunkOffsetsView::partition_into(dim, &mut scratch)?;

Additionally, get_chunk_from_training_data has been moved from public API.

CachingProvider removed (#1052)

The entire diskann_providers::model::graph::provider::async_::caching module has been deleted.

Why: The CachingProvider was an experiment in transparent caching over DataProvider. In practice it required double monomorphization of the indexing code, didn't save integration work for bulk methods like on_elements_unordered/distances_unordered, and was complex to maintain. An internal user who …migrated off it removed ~1,000 lines of code, improved compile times by ~20%, and substantially reduced complexity.

Upgrade: Manage caching directly in your DataProvider implementation.

New Features

AVX-512 4-bit distance kernels (#1045)

Native V4 (AVX-512) specializations for 4-bit packed vector distance computations:

  • `SquaredL2` — 16 × u32 lanes per iteration via _mm512_madd_epi16.
  • `InnerProduct` — AVX-512 VNNI (_mm512_dpbusd_epi32) over u8x64 / i8x64 operands.

Previously, V4 hardware fell back to two AVX2 (V3) kernel invocations per 512-bit chunk. The native kernels double per-instruction throughput. No API changes — existing code benefits automatically on AVX-512 capable hardware.

Merged PRs

  • Deprecate 32-bit targets by @suhasjs in https://github.com/microsoft/DiskANN/pull/1022
  • Add a fast path to Map::prepare. by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1023
  • Add boundary checks in gen_associated_data_from_range() by @Copilot in https://github.com/microsoft/DiskANN/pull/847
  • [deps] Don't pull rayon as a dependency of diskann. by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1024
  • Bump openssl from 0.10.78 to 0.10.79 by @dependabot[bot] in https://github.com/microsoft/DiskANN/pull/1026
  • Cleaning up test work and changing the get_degree_stats signature. by @JordanMaples in https://github.com/microsoft/DiskANN/pull/998
  • Reduce scalar-quantization benchmark monomorphization by @suri-kumkaran in https://github.com/microsoft/DiskANN/pull/1041
  • [diskann-vector] Support truly unaligned distances. by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/981
  • rename spherical.json to graph index with spherical quantization by @harsha-simhadri in https://github.com/microsoft/DiskANN/pull/1042
  • [PQ Cleanup] Part 2: Consolidate calculate_chunk_offsets* by @arkrishn94 in https://github.com/microsoft/DiskANN/pull/976
  • PQ: tighten dim contract; right-size scratch buffer by @wuw92 in https://github.com/microsoft/DiskANN/pull/1044
  • Add v4 distance kernels (4-bit SquaredL2 / InnerProduct) by @m3hm3t in https://github.com/microsoft/DiskANN/pull/1045
  • Remove the Caching Provider by @hildebrandmw in https://github.com/microsoft/DiskANN/pull/1052

New Contributors

  • @suhasjs made their first contribution in https://github.com/microsoft/DiskANN/pull/1022
  • @m3hm3t made their first contribution in https://github.com/microsoft/DiskANN/pull/1045

Full Changelog: https://github.com/microsoft/DiskANN/compare/v0.51.0...v0.52.0

Notability

notability 5.0/10

Minor version release of established library