pub struct OPQIndex {
pub config: OPQConfig,
pub rotation: RotationMatrix,
pub codebooks: Vec<Vec<Vec<f32>>>,
pub dimensions: usize,
}Expand description
OPQ index: learns rotation R + PQ codebooks, supports ADC search.
Fields§
§config: OPQConfig§rotation: RotationMatrix§codebooks: Vec<Vec<Vec<f32>>>Codebooks: [subspace][centroid][subspace_dim].
dimensions: usizeImplementations§
Source§impl OPQIndex
impl OPQIndex
Sourcepub fn train(vectors: &[Vec<f32>], config: OPQConfig) -> Result<Self>
pub fn train(vectors: &[Vec<f32>], config: OPQConfig) -> Result<Self>
Train OPQ via alternating rotation update and PQ codebook learning.
Sourcepub fn encode(&self, vector: &[f32]) -> Result<Vec<u8>>
pub fn encode(&self, vector: &[f32]) -> Result<Vec<u8>>
Encode a vector: rotate then PQ-quantize.
Sourcepub fn decode(&self, codes: &[u8]) -> Result<Vec<f32>>
pub fn decode(&self, codes: &[u8]) -> Result<Vec<f32>>
Decode PQ codes back to approximate vector (with inverse rotation).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for OPQIndex
impl<'de> Deserialize<'de> for OPQIndex
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 OPQIndex
impl RefUnwindSafe for OPQIndex
impl Send for OPQIndex
impl Sync for OPQIndex
impl Unpin for OPQIndex
impl UnsafeUnpin for OPQIndex
impl UnwindSafe for OPQIndex
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