Neighbors Ivf Flat Index Module

View as Markdown

Rust module: cuvs::neighbors::ivf_flat::index

Source: rust/cuvs/src/neighbors/ivf_flat/index.rs

Index

1#[derive(Debug)]
2pub struct Index(ffi::cuvsIvfFlatIndex_t); {
3 /* private fields */
4}

IVF-Flat ANN index.

Methods

NameSource
buildrust/cuvs/src/neighbors/ivf_flat/index.rs:29
searchrust/cuvs/src/neighbors/ivf_flat/index.rs:60
search_filteredrust/cuvs/src/neighbors/ivf_flat/index.rs:80

build

1pub fn build<T>(res: &Resources, params: &IndexParams, dataset: &T) -> Result<Index>
2where
3T: AsDlTensor + ?Sized,

Builds an IVF-Flat index over dataset for efficient search.

dataset is a row-major matrix on the host or device implementing [AsDlTensor]. It is copied into the index, so the caller may free it once this call returns (hence Index carries no lifetime).

Supported dataset/query dtypes in the current C-backed implementation are f32, f16, i8, and u8.

Source: rust/cuvs/src/neighbors/ivf_flat/index.rs:29

1pub fn search<Q, N, D>(
2&self,
3res: &Resources,
4params: &SearchParams,
5queries: &Q,
6neighbors: &mut N,
7distances: &mut D,
8) -> Result<()>
9where
10Q: AsDlTensor + ?Sized,
11N: AsDlTensorMut + ?Sized,
12D: AsDlTensorMut + ?Sized,

Searches the index for the k nearest neighbors of each query.

queries, neighbors, and distances must reside in device memory and implement [AsDlTensor] / [AsDlTensorMut]. neighbors receives the neighbor indices and distances their distances; both are written in place.

Source: rust/cuvs/src/neighbors/ivf_flat/index.rs:60

search_filtered

1pub fn search_filtered<Q, N, D>(
2&self,
3res: &Resources,
4params: &SearchParams,
5queries: &Q,
6neighbors: &mut N,
7distances: &mut D,
8filter: &Filter<'_, Bitset>,
9) -> Result<()>
10where
11Q: AsDlTensor + ?Sized,
12N: AsDlTensorMut + ?Sized,
13D: AsDlTensorMut + ?Sized,

Searches the index with a row-level bitset filter.

Source: rust/cuvs/src/neighbors/ivf_flat/index.rs:80

Source: rust/cuvs/src/neighbors/ivf_flat/index.rs:18