Skip to main content

Coded

Struct Coded 

Source
pub struct Coded {
    pub norm: f32,
    pub scale: f32,
    pub lo: f32,
    pub delta: f32,
}
Expand description

What a code needs alongside it to be measured against a query.

lo and delta are only worth storing for Bits::Four. At one bit they are the same two numbers for every vector in the collection, so a store that keeps them per vector is keeping the dimension eight bytes at a time.

Fields§

§norm: f32

The length of the vector minus its centroid.

§scale: f32

One over the cosine between the vector and what its code reconstructs to. That cosine is the estimator’s correction and the whole of RaBitQ over plain binary quantisation.

Stored the wrong way up on purpose, because the estimator divides by it exactly once per member and a float division was 44 percent of what a member cost: 3.56 nanoseconds became 1.98 at 128 dimensions when the division became a multiplication. Nothing else here reads it, so nothing else pays for the inversion.

§lo: f32

The value level zero reconstructs to, over the length of the reconstruction.

§delta: f32

What one level is worth, over the length of the reconstruction.

Trait Implementations§

Source§

impl Clone for Coded

Source§

fn clone(&self) -> Coded

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Coded

Source§

impl Debug for Coded

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Coded

Source§

fn eq(&self, other: &Coded) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Coded

Auto Trait Implementations§

§

impl Freeze for Coded

§

impl RefUnwindSafe for Coded

§

impl Send for Coded

§

impl Sync for Coded

§

impl Unpin for Coded

§

impl UnsafeUnpin for Coded

§

impl UnwindSafe for Coded

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.