pub struct DiskANN<D>{
pub dim: usize,
pub num_vectors: usize,
pub max_degree: usize,
pub distance_name: String,
/* private fields */
}Expand description
Main struct representing a DiskANN index (generic over distance)
Fields§
§dim: usizeDimensionality of vectors in the index
num_vectors: usizeNumber of vectors in the index
max_degree: usizeMaximum number of edges per node
distance_name: StringInformational: type name of the distance (from metadata)
Implementations§
Source§impl<D> DiskANN<D>
impl<D> DiskANN<D>
Sourcepub fn build_index_default(
vectors: &[Vec<f32>],
dist: D,
file_path: &str,
) -> Result<Self, DiskAnnError>
pub fn build_index_default( vectors: &[Vec<f32>], dist: D, file_path: &str, ) -> Result<Self, DiskAnnError>
Build with default parameters: (M=32, L=256, alpha=1.2).
Sourcepub fn build_index_with_params(
vectors: &[Vec<f32>],
dist: D,
file_path: &str,
p: DiskAnnParams,
) -> Result<Self, DiskAnnError>
pub fn build_index_with_params( vectors: &[Vec<f32>], dist: D, file_path: &str, p: DiskAnnParams, ) -> Result<Self, DiskAnnError>
Build with a DiskAnnParams bundle.
Source§impl<D> DiskANN<D>
Extra sugar when your distance type implements Default (most unit-struct metrics do).
impl<D> DiskANN<D>
Extra sugar when your distance type implements Default (most unit-struct metrics do).
Sourcepub fn build_index_default_metric(
vectors: &[Vec<f32>],
file_path: &str,
) -> Result<Self, DiskAnnError>
pub fn build_index_default_metric( vectors: &[Vec<f32>], file_path: &str, ) -> Result<Self, DiskAnnError>
Build with default params and D::default() metric.
Sourcepub fn open_index_default_metric(path: &str) -> Result<Self, DiskAnnError>
pub fn open_index_default_metric(path: &str) -> Result<Self, DiskAnnError>
Open an index using D::default() as the distance (matches what you built with).
Source§impl<D> DiskANN<D>
impl<D> DiskANN<D>
Sourcepub fn build_index(
vectors: &[Vec<f32>],
max_degree: usize,
build_beam_width: usize,
alpha: f32,
dist: D,
file_path: &str,
) -> Result<Self, DiskAnnError>
pub fn build_index( vectors: &[Vec<f32>], max_degree: usize, build_beam_width: usize, alpha: f32, dist: D, file_path: &str, ) -> Result<Self, DiskAnnError>
Builds a new index from provided vectors
§Arguments
vectors- The vectors to index (slice ofVec<f32>)max_degree- Maximum edges per node (M ~ 24-64)build_beam_width- Construction L (e.g., 128-400)alpha- Pruning parameter (1.2–2.0)dist- Anyanndists::Distance<f32>(e.g.,DistL2)file_path- Path of index file
Sourcepub fn open_index_with(path: &str, dist: D) -> Result<Self, DiskAnnError>
pub fn open_index_with(path: &str, dist: D) -> Result<Self, DiskAnnError>
Opens an existing index file, supplying the distance strategy explicitly.
Sourcepub fn from_bytes(bytes: Vec<u8>, dist: D) -> Result<Self, DiskAnnError>
pub fn from_bytes(bytes: Vec<u8>, dist: D) -> Result<Self, DiskAnnError>
Load an index from an owned byte buffer (no file needed).
Load an index from a shared byte buffer (cheap clone, multi-reader).
Sourcepub fn search_with_dists(
&self,
query: &[f32],
k: usize,
beam_width: usize,
) -> Vec<(u32, f32)>
pub fn search_with_dists( &self, query: &[f32], k: usize, beam_width: usize, ) -> Vec<(u32, f32)>
Searches the index for nearest neighbors using a best-first beam search.
Like search but also returns the distance for each neighbor.
Sourcepub fn search(&self, query: &[f32], k: usize, beam_width: usize) -> Vec<u32>
pub fn search(&self, query: &[f32], k: usize, beam_width: usize) -> Vec<u32>
search but only return neighbor ids
Sourcepub fn get_vector(&self, idx: usize) -> Vec<f32>
pub fn get_vector(&self, idx: usize) -> Vec<f32>
Gets a vector from the index (useful for tests)
Auto Trait Implementations§
impl<D> Freeze for DiskANN<D>where
D: Freeze,
impl<D> RefUnwindSafe for DiskANN<D>where
D: RefUnwindSafe,
impl<D> Send for DiskANN<D>
impl<D> Sync for DiskANN<D>
impl<D> Unpin for DiskANN<D>where
D: Unpin,
impl<D> UnwindSafe for DiskANN<D>where
D: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more