pub trait Index {
fn is_trained(&self) -> bool;
fn ntotal(&self) -> u64;
fn d(&self) -> u32;
fn metric_type(&self) -> MetricType;
fn add(&mut self, x: &[f32]) -> Result<()>;
fn add_with_ids(&mut self, x: &[f32], xids: &[Idx]) -> Result<()>;
fn train(&mut self, x: &[f32]) -> Result<()>;
fn assign(&mut self, q: &[f32], k: usize) -> Result<AssignSearchResult>;
fn search(&mut self, q: &[f32], k: usize) -> Result<SearchResult>;
fn range_search(
&mut self,
q: &[f32],
radius: f32
) -> Result<RangeSearchResult>;
fn reset(&mut self) -> Result<()>;
fn remove_ids(&mut self, sel: &IdSelector) -> Result<i64>;
}
Expand description
Interface for a Faiss index. Most methods in this trait match the ones in the native library, whereas some others serve as getters to the index’ parameters.
Although all methods appear to be available for all index implementations,
some methods may not be supported. For instance, a FlatIndex
stores
vectors sequentially, and so does not support add_with_ids
nor
remove_ids
. Users are advised to read the Faiss wiki pages in order
to understand which index algorithms support which operations.
Required Methods§
sourcefn is_trained(&self) -> bool
fn is_trained(&self) -> bool
Whether the Index does not require training, or if training is done already
sourcefn metric_type(&self) -> MetricType
fn metric_type(&self) -> MetricType
The metric type assumed by the index
sourcefn add(&mut self, x: &[f32]) -> Result<()>
fn add(&mut self, x: &[f32]) -> Result<()>
Add new data vectors to the index.
This assumes a C-contiguous memory slice of vectors, where the total
number of vectors is x.len() / d
.
sourcefn add_with_ids(&mut self, x: &[f32], xids: &[Idx]) -> Result<()>
fn add_with_ids(&mut self, x: &[f32], xids: &[Idx]) -> Result<()>
Add new data vectors to the index with IDs.
This assumes a C-contiguous memory slice of vectors, where the total
number of vectors is x.len() / d
.
Not all index types may support this operation.
sourcefn assign(&mut self, q: &[f32], k: usize) -> Result<AssignSearchResult>
fn assign(&mut self, q: &[f32], k: usize) -> Result<AssignSearchResult>
Similar to search
, but only provides the labels.
sourcefn search(&mut self, q: &[f32], k: usize) -> Result<SearchResult>
fn search(&mut self, q: &[f32], k: usize) -> Result<SearchResult>
Perform a search for the k
closest vectors to the given query vectors.
sourcefn range_search(&mut self, q: &[f32], radius: f32) -> Result<RangeSearchResult>
fn range_search(&mut self, q: &[f32], radius: f32) -> Result<RangeSearchResult>
Perform a ranged search for the vectors closest to the given query vectors by the given radius.
sourcefn remove_ids(&mut self, sel: &IdSelector) -> Result<i64>
fn remove_ids(&mut self, sel: &IdSelector) -> Result<i64>
Remove data vectors represented by IDs.