Crate rust_diskann

Crate rust_diskann 

Source
Expand description

§DiskAnn (generic over anndists::Distance<T>)

An on-disk DiskANN library that:

  • Builds a Vamana-style graph (greedy + α-pruning) in memory
  • Writes vectors + fixed-degree adjacency to a single file
  • Memory-maps the file for low-overhead reads
  • Is generic over any Distance from anndists (e.g. L2 on f32, Cosine on f32, Hamming on u64, …)

§Example (f32 + L2)

use anndists::dist::DistL2;
use rust_diskann::{DiskANN, DiskAnnParams};

let vectors: Vec<Vec<f32>> = vec![vec![0.0; 128]; 1000];
let index = DiskANN::<f32, DistL2>::build_index_default(&vectors, DistL2, "index.db").unwrap();

let q = vec![0.0; 128];
let nns = index.search(&q, 10, 64);

§Example (u64 + Hamming)

use anndists::dist::DistHamming;
use rust_diskann::{DiskANN, DiskAnnParams};
let index: Vec<Vec<u64>> = vec![vec![0u64; 128]; 1000];
let idx = DiskANN::<u64, DistHamming>::build_index_default(&index, DistHamming, "mh.db").unwrap();
let q = vec![0u64; 128];
let _ = idx.search(&q, 10, 64);

§File Layout

[ metadata_len:u64 ][ metadata (bincode) ][ padding up to vectors_offset ] [ vectors (num * dim * T) ][ adjacency (num * max_degree * u32) ]

vectors_offset is a fixed 1 MiB gap by default.

Structs§

DiskANN
Main struct representing a DiskANN index (generic over vector element T and distance D)
DiskAnnParams
Optional bag of knobs if you want to override just a few.

Enums§

DiskAnnError
Custom error type for DiskAnn operations

Constants§

DISKANN_DEFAULT_ALPHA
DISKANN_DEFAULT_BUILD_BEAM
DISKANN_DEFAULT_MAX_DEGREE
Defaults for in-memory DiskANN builds