pub struct Turbovec { /* private fields */ }Expand description
turbovec 2/3/4-bit TurboQuant encoder.
The on-row payload is the original vector’s f32
little-endian bytes. Compression and SIMD scoring happen at
the per-table layer (see [crate::index::TurboTable]) where
a turbovec::TurboQuantIndex holds every vector in its
2/3/4-bit packed form. Per-row storage stays at 4 * dim
bytes; the in-memory ANN index achieves the headline 8x
(4-bit) or 16x (2-bit) compression on the slot table.
The on-row passthrough is deliberate: turbovec’s public API
does not expose per-vector reconstruction, so a faithful
decode implementation requires keeping the source bytes.
The trade-off (no row-layer compression) is documented in
docs/dynvecdb/architecture.md.
Implementations§
Trait Implementations§
Source§impl Encoder for Turbovec
impl Encoder for Turbovec
Source§fn encode(&self, values: &[f32]) -> Result<EncodedVector, EncodingError>
fn encode(&self, values: &[f32]) -> Result<EncodedVector, EncodingError>
Source§fn decode(&self, ev: &EncodedVector) -> Result<Vec<f32>, EncodingError>
fn decode(&self, ev: &EncodedVector) -> Result<Vec<f32>, EncodingError>
impl Copy for Turbovec
Auto Trait Implementations§
impl Freeze for Turbovec
impl RefUnwindSafe for Turbovec
impl Send for Turbovec
impl Sync for Turbovec
impl Unpin for Turbovec
impl UnsafeUnpin for Turbovec
impl UnwindSafe for Turbovec
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> 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> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.