pub struct BinaryStore { /* private fields */ }Expand description
Binary code store for Hamming distance pre-filtering. Encodes vectors as 1-bit-per-dimension codes via randomized Walsh-Hadamard rotation + sign extraction (SimHash).
Implementations§
Source§impl BinaryStore
impl BinaryStore
Sourcepub fn from_parts(
codes: Vec<u64>,
code_words: usize,
signs: Vec<f32>,
block_size: usize,
) -> Self
pub fn from_parts( codes: Vec<u64>, code_words: usize, signs: Vec<f32>, block_size: usize, ) -> Self
Reassemble from persisted parts (the ANN segment decode path). The SIGNS are persisted rather than re-derived from the seed, so a future seed change can never silently desynchronize codes from queries.
pub fn codes(&self) -> &[u64]
pub fn signs(&self) -> &[f32]
pub fn block_size(&self) -> usize
Sourcepub fn build(store: &PointStore) -> Self
pub fn build(store: &PointStore) -> Self
Build binary codes: random sign flips (D) + Walsh-Hadamard in blocks of
largest_pow2_factor(dim). Fixed seed for build/query consistency.
Sourcepub fn empty(dim: usize) -> Self
pub fn empty(dim: usize) -> Self
A store with signs but no codes, for configs that never consult the
binary pre-filter (binary_rerank == 0). encode_query stays valid;
code() must not be reached (every caller is gated on the rerank
factor), so the per-point encoding pass and its memory are skipped.
Sourcepub fn code_words(&self) -> usize
pub fn code_words(&self) -> usize
Number of u64 words per binary code.
Sourcepub fn encode_query(&self, query: &[f32]) -> Vec<u64>
pub fn encode_query(&self, query: &[f32]) -> Vec<u64>
Encode a query vector to binary code using the same HD rotation.
Auto Trait Implementations§
impl Freeze for BinaryStore
impl RefUnwindSafe for BinaryStore
impl Send for BinaryStore
impl Sync for BinaryStore
impl Unpin for BinaryStore
impl UnsafeUnpin for BinaryStore
impl UnwindSafe for BinaryStore
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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