Skip to content

DiskANN v0.54.0

Latest

Choose a tag to compare

@arkrishn94 arkrishn94 released this 15 Jun 19:20
· 5 commits to main since this release
56e1919

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<Item = DP::InternalId> + Send instead of Range<DP::InternalId> — 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::<T>::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<[u8], AlignOfEight>; 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.

Full Changelog: v0.53.0...v0.54.0