Skip to content

DiskANN v0.60.0

Choose a tag to compare

@hildebrandmw hildebrandmw released this 05 Oct 19:32
· 39 commits to main since this release
97a828a

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 Index and IndexMut implementations have been removed. Use Matrix::element and Matrix::element_mut instead.
  • The Init and Generator style constructors for Matrix::new have been removed. Instead, rowmajor::Owned::from_fn and rowmajor::Owned::from_element can be used instead. The former's closure has been changed to take an argument rowmajor::RowCol indicated 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::MAX allocations via a rowmajor::Layout<T> layout. Constructors panic if these validations fail. try_* variations of these constructors which return rowmajor::LayoutError instead.

diskann-utils: Strided API changes

  • Structs StridedBase, StridedView, and MutStridedView were collapsed into a single, immutable Strided<'a, T>.
  • strided::linear_length was removed, use strided::Layout::linear_length instead.
  • strided::TryFromErrorLight was removed.
  • strided::TryFromError changed from a struct to an enum, and into_inner/as_static were 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

New Contributors

Full Changelog: v0.59.0...v0.60.0