pub struct TurboQuantProd { /* private fields */ }Expand description
Unbiased inner-product TurboQuant quantizer.
Implementations§
Source§impl TurboQuantProd
impl TurboQuantProd
Sourcepub fn new(
dimension: usize,
bits: u8,
mse_seed: u64,
qjl_seed: u64,
) -> Result<Self, QuantError>
pub fn new( dimension: usize, bits: u8, mse_seed: u64, qjl_seed: u64, ) -> Result<Self, QuantError>
Create a new inner-product quantizer.
dimension: vector dimensionalitybits: total bit-width per coordinate (must be ≥ 2)mse_seed: seed for the MSE rotation matrixqjl_seed: seed for the QJL projection (must differ from mse_seed)
Sourcepub fn quantize(&self, x: &[f32]) -> Result<QuantizedProdVector, QuantError>
pub fn quantize(&self, x: &[f32]) -> Result<QuantizedProdVector, QuantError>
Quantize a vector.
Sourcepub fn dequantize(
&self,
q: &QuantizedProdVector,
) -> Result<Vec<f32>, QuantError>
pub fn dequantize( &self, q: &QuantizedProdVector, ) -> Result<Vec<f32>, QuantError>
Dequantize a vector.
Returns x̃ = x̃_mse + x̃_qjl where x̃_qjl = (√(π/2)/d) · γ · S^T · qjl
Sourcepub fn inner_product_estimate(
&self,
query: &[f32],
q: &QuantizedProdVector,
) -> Result<f32, QuantError>
pub fn inner_product_estimate( &self, query: &[f32], q: &QuantizedProdVector, ) -> Result<f32, QuantError>
Estimate ⟨query, quantized_x⟩ without full dequantization.
Computes: ⟨query, x̃_mse⟩ + QJL_estimate(query, qjl_bits, γ)
Auto Trait Implementations§
impl Freeze for TurboQuantProd
impl RefUnwindSafe for TurboQuantProd
impl Send for TurboQuantProd
impl Sync for TurboQuantProd
impl Unpin for TurboQuantProd
impl UnsafeUnpin for TurboQuantProd
impl UnwindSafe for TurboQuantProd
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