Repository navigation
DiskANN v0.60.0
DiskANN v0.60.0
Major Changes
diskann-utils: Matrix API changes
There have been significant changes to the matrix APIs in diskann-utils. The previous contents of diskann_utils::views have been moved to diskann_utils::views::rowmajor. The following type changes have been made
| v0.59 | v0.60 | Remarks |
|---|---|---|
views::Matrix<T> |
views::rowmajor::Owned<T> |
Size changed from 32 bytes to 24 bytes |
views::MatrixView<'a, T> |
views::rowmajor::Ref<'a, T> |
Size changed from 32 bytes to 24 bytes |
views::MatrixViewMut<'a, T> |
views::rowmajor::Mut<'a, T> |
Size changed from 32 bytes to 24 bytes |
MatrixBase inherent methods |
rowmajor::Matrix and rowmajor::MatrixMut trait methods |
The rowmajor::Matrix and rowmajor::MatrixMut trait methods need to be imported to access most matrix functionality. In addition, the following methods have been renamed and changed:
| v0.59 | v0.60 | Remark |
|---|---|---|
row_iter |
rows |
No longer panics when ncols == 0 |
row_iter_mut |
rows_mut |
No longer panics when ncols == 0 |
par_row_iter |
par_rows |
No longer panics when ncols == 0 |
par_row_iter_mut |
par_rows_mut |
|
get_row_unchecked |
row_unchecked |
|
get_row_unchecked_mut |
row_unchecked_mut |
|
as_mut_view |
as_view_mut |
|
try_from constructors |
try_from_data |
In addition,
- The
IndexandIndexMutimplementations have been removed. UseMatrix::elementandMatrix::element_mutinstead. - The
InitandGeneratorstyle constructors forMatrix::newhave been removed. Instead,rowmajor::Owned::from_fnandrowmajor::Owned::from_elementcan be used instead. The former's closure has been changed to take an argumentrowmajor::RowColindicated the row and column being initialized. Both of these constructors take now take the initializer as the last argument. - Matrix constructors validate against integer overflow and
isize::MAXallocations via arowmajor::Layout<T>layout. Constructors panic if these validations fail.try_*variations of these constructors which returnrowmajor::LayoutErrorinstead.
diskann-utils: Strided API changes
- Structs
StridedBase,StridedView, andMutStridedViewwere collapsed into a single, immutableStrided<'a, T>. strided::linear_lengthwas removed, usestrided::Layout::linear_lengthinstead.strided::TryFromErrorLightwas removed.strided::TryFromErrorchanged from a struct to an enum, andinto_inner/as_staticwere removed.
diskann
InsertStrategy is no longer a SearchStrategy subtrait. Implementations must now provide
type SearchAccessor;
type SearchAccessorError;
fn insert_search_accessor(...) -> Result<Self::SearchAccessor, Self::SearchAccessorError>;Previously, insert_search_accessor had a provided implementation forwarding to SearchStrategy::search_accessor. That default is now gone. This change was done to decouple insert element types from search element types.
diskann-disk
The publicly re-exported types below were removed in favor of standard buffered I/O:
diskann_disk::storage::CachedReader
diskann_disk::storage::CachedWriter
Consumers should migrate to std::io::BufReader/BufWriter and the relevant storage-provider reader/writer. READ_WRITE_BLOCK_SIZE also changed from u64 to usize.
diskann-quantization
These public traits now require Debug:
spherical::iface::Quantizer
spherical::iface::DynQueryComputer
spherical::iface::DynDistanceComputer
diskann-inmem (experimental)
The old layers abstraction was removed and replaced by the Representation/Store/Slots architecture. And support for a spherically quantized backed was added.
Full Change Log
- [diskann-inmem] Prepare code for quantization and beyond by Mark Hildebrand (@hildebrandmw) in #1352
- Add Neon inner product U8xU1, U8xU2 and U8xU4 kernels by pfoxARM in #1372
- [CI] Check all workspace features and private docs by Wei Wu (@wuw92) in #1400
- [CI] Check Rust license headers by Wei Wu (@wuw92) in #1401
- [disk] Replace custom cached I/O with standard buffered readers and writers by Wei Wu (@wuw92) in #1396
- [dikkann_wide] Integer SIMDMinMax by Suryansh Gupta (@suri-kumkaran) in #1407
- Add Neon Squared L2 kernels for USlice2 and USlice4 by pfoxARM in #1398
- Bump the github-actions group with 3 updates by Dependabot (@dependabot)[bot] in #1406
- [CI] Check workspace direct dependency versions by Wei Wu (@wuw92) in #1410
- Train fresh disk-search PQ codebooks for each index build by xwj-ox in #1299
- [diskann-quantization] Make most things in
diskann-quantization/spherical/iface.rsdebuggable by Mark Hildebrand (@hildebrandmw) in #1414 - [diskann] Make
InsertStrategyindependent ofSearchStrategyby Mark Hildebrand (@hildebrandmw) in #1393 - Use #[expect] to detect unnecessary lint suppressions by Wei Wu (@wuw92) in #1409
- [diskann-garnet] Store attributes during insert, not after by Jack Moffitt (@metajack) in #1412
- [diskann-wide] Fix
alias!by Mark Hildebrand (@hildebrandmw) in #1417 - [diskann-utils] Simplify
StridedView. by Mark Hildebrand (@hildebrandmw) in #1376 - [diskann-wide] More Neon Zip/Unzip impls by Mark Hildebrand (@hildebrandmw) in #1405
- [diskann-garnet] Deserialize max id for quantization on load by Jack Moffitt (@metajack) in #1419
- More ergonomic
spherical::iface::Quantizerconstructors by Mark Hildebrand (@hildebrandmw) in #1418 - [diskann-bftree] Clamp number of concurrency test parallel workers by Mark Hildebrand (@hildebrandmw) in #1433
- Tweak behavior of adaptive L by Magdalen Dobson Manohar (@magdalendobson) in #1354
- Bump the github-actions group with 2 updates by Dependabot (@dependabot)[bot] in #1436
- Reform Range Search by Magdalen Dobson Manohar (@magdalendobson) in #1337
- PiPNN 2/6: add numerical kernels by weiyaoluo (@SeliMeli) in #1287
- Matrix overhaul 1 of N - Data Accessors by Mark Hildebrand (@hildebrandmw) in #1415
- Add
assert_contains!helper by Mark Hildebrand (@hildebrandmw) in #1421 - Matrix overhaul 2 of N -
Matrixinvariants by Mark Hildebrand (@hildebrandmw) in #1420 - [CI] Run SDE tests for diskann with all features by weiyaoluo (@SeliMeli) in #1440
- [diskann-wide] Add Neon
vabdq_u8andvabdq_s8. by Mark Hildebrand (@hildebrandmw) in #1437 - [diskann-inmem] Add support for spherical quantization by Mark Hildebrand (@hildebrandmw) in #1432
- [benchmark-runner] Bump edition to 2024 by Mark Hildebrand (@hildebrandmw) in #1444
- [diskann-wide] Add byte-vector reinterpretations for u32x8 and u64x8 by juchen-ms (@partychen) in #1445
- Propagate invalid matrix layout errors in production paths by Alex Razumov (@arrayka) in #1453
- Add sparse vector distance kernels (f32/f16 L2, inner product, cosine) by mana-agarwal in #1434
- Bump the github-actions group with 3 updates by Dependabot (@dependabot)[bot] in #1454
- [diskann-utils] Matrix Update 3 of N (constructors) by Mark Hildebrand (@hildebrandmw) in #1451
- [diskann-utils] Matrix Update 4 of 4 by Mark Hildebrand (@hildebrandmw) in #1457
New Contributors
- mana-agarwal made their first contribution in #1434
Full Changelog: v0.59.0...v0.60.0