pub struct BinaryIndex { /* private fields */ }Expand description
Index of binary vectors for fast batch search
Implementations§
Source§impl BinaryIndex
impl BinaryIndex
Sourcepub fn with_capacity(dim: usize, capacity: usize) -> Self
pub fn with_capacity(dim: usize, capacity: usize) -> Self
Create with pre-allocated capacity
Sourcepub fn add(&mut self, vector: &BinaryVector)
pub fn add(&mut self, vector: &BinaryVector)
Add a vector to the index
Sourcepub fn memory_bytes(&self) -> usize
pub fn memory_bytes(&self) -> usize
Get memory usage in bytes
Sourcepub fn get(&self, idx: usize) -> Option<BinaryVector>
pub fn get(&self, idx: usize) -> Option<BinaryVector>
Get a vector by index
Sourcepub fn search(&self, query: &BinaryVector, k: usize) -> Vec<(usize, u32)>
pub fn search(&self, query: &BinaryVector, k: usize) -> Vec<(usize, u32)>
Search for k nearest neighbors using Hamming distance
Returns (index, hamming_distance) pairs sorted by distance.
Sourcepub fn search_f32(&self, query: &[f32], k: usize) -> Vec<(usize, u32)>
pub fn search_f32(&self, query: &[f32], k: usize) -> Vec<(usize, u32)>
Search from fp32 query (will be quantized)
Sourcepub fn batch_search(
&self,
queries: &[BinaryVector],
k: usize,
) -> Vec<Vec<(usize, u32)>>
pub fn batch_search( &self, queries: &[BinaryVector], k: usize, ) -> Vec<Vec<(usize, u32)>>
Batch search for multiple queries
More efficient than individual searches due to cache locality.
Trait Implementations§
Source§impl Clone for BinaryIndex
impl Clone for BinaryIndex
Source§fn clone(&self) -> BinaryIndex
fn clone(&self) -> BinaryIndex
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for BinaryIndex
impl RefUnwindSafe for BinaryIndex
impl Send for BinaryIndex
impl Sync for BinaryIndex
impl Unpin for BinaryIndex
impl UnsafeUnpin for BinaryIndex
impl UnwindSafe for BinaryIndex
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request