pub struct PQCodebook {
pub config: PQConfig,
pub rotation_matrix: Option<Vec<f32>>,
pub centroids: Vec<f32>,
pub version: u64,
}Expand description
Learned codebook for Product Quantization with OPQ rotation
Trained once, shared across all segments (like CoarseCentroids).
Fields§
§config: PQConfigConfiguration
rotation_matrix: Option<Vec<f32>>OPQ rotation matrix (dim × dim), stored row-major
centroids: Vec<f32>Centroids: M subspaces × K centroids × subspace_dim
version: u64Version for merge compatibility checking
Implementations§
Source§impl PQCodebook
impl PQCodebook
Sourcepub fn train(config: PQConfig, vectors: &[Vec<f32>], max_iters: usize) -> Self
pub fn train(config: PQConfig, vectors: &[Vec<f32>], max_iters: usize) -> Self
Train the global residual codebook and OPQ rotation.
Sourcepub fn encode(&self, vector: &[f32], centroid: Option<&[f32]>) -> Vec<u8> ⓘ
pub fn encode(&self, vector: &[f32], centroid: Option<&[f32]>) -> Vec<u8> ⓘ
Encode one vector into an owned code for diagnostics and external use.
Segment payload construction uses Self::encode_into to avoid one
allocation per indexed vector.
Sourcepub fn get_centroid(&self, subspace_idx: usize, code: u8) -> &[f32]
pub fn get_centroid(&self, subspace_idx: usize, code: u8) -> &[f32]
Get centroid for a specific subspace and code
Sourcepub fn rotate_query(&self, query: &[f32]) -> Vec<f32>
pub fn rotate_query(&self, query: &[f32]) -> Vec<f32>
Rotate a query vector
Sourcepub fn size_bytes(&self) -> usize
pub fn size_bytes(&self) -> usize
Memory usage in bytes
Trait Implementations§
Source§impl Clone for PQCodebook
impl Clone for PQCodebook
Source§fn clone(&self) -> PQCodebook
fn clone(&self) -> PQCodebook
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 PQCodebook
impl Debug for PQCodebook
Source§impl<'de> Deserialize<'de> for PQCodebook
impl<'de> Deserialize<'de> for PQCodebook
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 PQCodebook
impl RefUnwindSafe for PQCodebook
impl Send for PQCodebook
impl Sync for PQCodebook
impl Unpin for PQCodebook
impl UnsafeUnpin for PQCodebook
impl UnwindSafe for PQCodebook
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DropFlavorWrapper<T> for T
impl<T> DropFlavorWrapper<T> for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<E> ResultError for E
impl<T> ResultType 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.