pub struct FourBitQuantizer { /* private fields */ }Expand description
4-bit quantizer for balanced memory/accuracy trade-off (8x compression)
Converts float32 vectors to 4-bit (16 levels) by per-dimension min-max scaling. Packs two 4-bit values into each u8 byte (high and low nibbles).
Implementations§
Source§impl FourBitQuantizer
impl FourBitQuantizer
Sourcepub fn fit(&mut self, vectors: &[Vec<f32>]) -> Result<()>
pub fn fit(&mut self, vectors: &[Vec<f32>]) -> Result<()>
Fit quantizer to training data
Computes per-dimension min/max values for 4-bit quantization.
Sourcepub fn quantize(&self, vector: &[f32]) -> Vec<u8> ⓘ
pub fn quantize(&self, vector: &[f32]) -> Vec<u8> ⓘ
Quantize a float32 vector to 4-bit (packed as u8 array)
Two 4-bit values are packed into each u8: high nibble (bits 4-7) and low nibble (bits 0-3).
Sourcepub fn dequantize(&self, quantized: &[u8]) -> Vec<f32>
pub fn dequantize(&self, quantized: &[u8]) -> Vec<f32>
Dequantize a 4-bit vector back to float32
Sourcepub fn dequantize_batch(&self, quantized: &[Vec<u8>]) -> Vec<Vec<f32>>
pub fn dequantize_batch(&self, quantized: &[Vec<u8>]) -> Vec<Vec<f32>>
Dequantize multiple vectors
Sourcepub fn quantized_distance(&self, a: &[u8], b: &[u8]) -> f32
pub fn quantized_distance(&self, a: &[u8], b: &[u8]) -> f32
Compute approximate distance between 4-bit quantized vectors
Uses Manhattan distance on nibble values for speed.
Sourcepub fn compression_ratio(&self) -> f32
pub fn compression_ratio(&self) -> f32
Get compression ratio
Sourcepub fn memory_savings(&self) -> f32
pub fn memory_savings(&self) -> f32
Get memory savings percentage
Sourcepub fn dimensions(&self) -> usize
pub fn dimensions(&self) -> usize
Get number of dimensions
Trait Implementations§
Source§impl Clone for FourBitQuantizer
impl Clone for FourBitQuantizer
Source§fn clone(&self) -> FourBitQuantizer
fn clone(&self) -> FourBitQuantizer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FourBitQuantizer
impl Debug for FourBitQuantizer
Source§impl Default for FourBitQuantizer
impl Default for FourBitQuantizer
Source§impl<'de> Deserialize<'de> for FourBitQuantizer
impl<'de> Deserialize<'de> for FourBitQuantizer
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for FourBitQuantizer
impl RefUnwindSafe for FourBitQuantizer
impl Send for FourBitQuantizer
impl Sync for FourBitQuantizer
impl Unpin for FourBitQuantizer
impl UnwindSafe for FourBitQuantizer
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 more