pub struct Recompressor;Expand description
Recompression utilities for MinMax quantized vectors.
This struct provides functionality to further compress MinMax quantized
vectors from a source bitrate N to a target bitrate M for N > M.
§Notes
- Currently this API only supports the following conversions: 8 -> 4, 8 -> 2, 4 -> 2
§Example
use std::num::NonZeroUsize;
use diskann_quantization::algorithms::{Transform, transforms::NullTransform};
use diskann_quantization::minmax::{Data, MinMaxQuantizer, Recompressor};
use diskann_quantization::num::Positive;
use diskann_quantization::CompressInto;
use diskann_utils::{Reborrow, ReborrowMut};
// Create a quantizer and compress an f32 vector to 8-bit
let vector = vec![0.1, -0.5, 0.8, -0.2];
let quantizer = MinMaxQuantizer::new(
Transform::Null(NullTransform::new(NonZeroUsize::new(4).unwrap())),
Positive::new(1.0).unwrap(),
);
let mut encoded_8 = Data::<8>::new_boxed(4);
quantizer.compress_into(vector.as_slice(), encoded_8.reborrow_mut()).unwrap();
// Recompress from 8-bit to 4-bit
let mut encoded_4 = Data::<4>::new_boxed(4);
Recompressor.compress_into(encoded_8.reborrow(), encoded_4.reborrow_mut()).unwrap();Trait Implementations§
Source§impl Clone for Recompressor
impl Clone for Recompressor
Source§fn clone(&self) -> Recompressor
fn clone(&self) -> Recompressor
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<'a, 'b> CompressInto<VectorBase<4, Unsigned, SlicePtr<'a, u8>, Ref<'a, MinMaxCompensation>>, VectorBase<2, Unsigned, MutSlicePtr<'b, u8>, Mut<'b, MinMaxCompensation>>> for Recompressor
impl<'a, 'b> CompressInto<VectorBase<4, Unsigned, SlicePtr<'a, u8>, Ref<'a, MinMaxCompensation>>, VectorBase<2, Unsigned, MutSlicePtr<'b, u8>, Mut<'b, MinMaxCompensation>>> for Recompressor
Source§impl<'a, 'b> CompressInto<VectorBase<8, Unsigned, SlicePtr<'a, u8>, Ref<'a, MinMaxCompensation>>, VectorBase<2, Unsigned, MutSlicePtr<'b, u8>, Mut<'b, MinMaxCompensation>>> for Recompressor
impl<'a, 'b> CompressInto<VectorBase<8, Unsigned, SlicePtr<'a, u8>, Ref<'a, MinMaxCompensation>>, VectorBase<2, Unsigned, MutSlicePtr<'b, u8>, Mut<'b, MinMaxCompensation>>> for Recompressor
Source§impl<'a, 'b> CompressInto<VectorBase<8, Unsigned, SlicePtr<'a, u8>, Ref<'a, MinMaxCompensation>>, VectorBase<4, Unsigned, MutSlicePtr<'b, u8>, Mut<'b, MinMaxCompensation>>> for Recompressor
impl<'a, 'b> CompressInto<VectorBase<8, Unsigned, SlicePtr<'a, u8>, Ref<'a, MinMaxCompensation>>, VectorBase<4, Unsigned, MutSlicePtr<'b, u8>, Mut<'b, MinMaxCompensation>>> for Recompressor
Source§impl Debug for Recompressor
impl Debug for Recompressor
impl Copy for Recompressor
Auto Trait Implementations§
impl Freeze for Recompressor
impl RefUnwindSafe for Recompressor
impl Send for Recompressor
impl Sync for Recompressor
impl Unpin for Recompressor
impl UnsafeUnpin for Recompressor
impl UnwindSafe for Recompressor
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 more