pub struct FilteredDiskANN<D>{ /* private fields */ }Expand description
DiskANN index with metadata filtering support
Implementations§
Source§impl<D> FilteredDiskANN<D>
impl<D> FilteredDiskANN<D>
Sourcepub fn build(
vectors: &[Vec<f32>],
labels: &[Vec<u64>],
base_path: &str,
) -> Result<Self, DiskAnnError>
pub fn build( vectors: &[Vec<f32>], labels: &[Vec<u64>], base_path: &str, ) -> Result<Self, DiskAnnError>
Build a new filtered index
Sourcepub fn build_with_params(
vectors: &[Vec<f32>],
labels: &[Vec<u64>],
base_path: &str,
params: DiskAnnParams,
) -> Result<Self, DiskAnnError>
pub fn build_with_params( vectors: &[Vec<f32>], labels: &[Vec<u64>], base_path: &str, params: DiskAnnParams, ) -> Result<Self, DiskAnnError>
Build with custom parameters
Sourcepub fn open(base_path: &str) -> Result<Self, DiskAnnError>
pub fn open(base_path: &str) -> Result<Self, DiskAnnError>
Open an existing filtered index
Source§impl<D> FilteredDiskANN<D>
impl<D> FilteredDiskANN<D>
Sourcepub fn search_filtered(
&self,
query: &[f32],
k: usize,
beam_width: usize,
filter: &Filter,
) -> Vec<u32>
pub fn search_filtered( &self, query: &[f32], k: usize, beam_width: usize, filter: &Filter, ) -> Vec<u32>
Search with a filter predicate
Uses an expanded beam search that skips non-matching candidates but continues exploring the graph to find matches.
Sourcepub fn search_filtered_with_dists(
&self,
query: &[f32],
k: usize,
beam_width: usize,
filter: &Filter,
) -> Vec<(u32, f32)>
pub fn search_filtered_with_dists( &self, query: &[f32], k: usize, beam_width: usize, filter: &Filter, ) -> Vec<(u32, f32)>
Search with filter, returning distances
Sourcepub fn search_filtered_batch(
&self,
queries: &[Vec<f32>],
k: usize,
beam_width: usize,
filter: &Filter,
) -> Vec<Vec<u32>>
pub fn search_filtered_batch( &self, queries: &[Vec<f32>], k: usize, beam_width: usize, filter: &Filter, ) -> Vec<Vec<u32>>
Parallel batch filtered search
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>
Unfiltered search (delegates to base index)
Sourcepub fn get_labels(&self, id: usize) -> Option<&[u64]>
pub fn get_labels(&self, id: usize) -> Option<&[u64]>
Get labels for a vector
Sourcepub fn num_vectors(&self) -> usize
pub fn num_vectors(&self) -> usize
Number of vectors in the index
Sourcepub fn num_fields(&self) -> usize
pub fn num_fields(&self) -> usize
Number of label fields per vector
Sourcepub fn count_matching(&self, filter: &Filter) -> usize
pub fn count_matching(&self, filter: &Filter) -> usize
Count vectors matching a filter (useful for selectivity estimation)
Auto Trait Implementations§
impl<D> Freeze for FilteredDiskANN<D>where
D: Freeze,
impl<D> RefUnwindSafe for FilteredDiskANN<D>where
D: RefUnwindSafe,
impl<D> Send for FilteredDiskANN<D>
impl<D> Sync for FilteredDiskANN<D>
impl<D> Unpin for FilteredDiskANN<D>where
D: Unpin,
impl<D> UnwindSafe for FilteredDiskANN<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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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