pub enum DistanceFunction {
L2,
Cosine,
NegativeDotProduct,
}Expand description
Distance function for vector similarity
Variants§
L2
L2 / Euclidean distance
Cosine
Cosine distance (1 - cosine similarity)
NegativeDotProduct
Negative inner product (for maximum inner product search)
Implementations§
Source§impl DistanceFunction
impl DistanceFunction
Sourcepub fn distance(&self, a: &[f32], b: &[f32]) -> f32
pub fn distance(&self, a: &[f32], b: &[f32]) -> f32
Compute distance between two vectors
Uses SIMD-accelerated implementations when simd feature is enabled.
Falls back to optimized scalar implementations otherwise.
Sourcepub fn distance_for_comparison(&self, a: &[f32], b: &[f32]) -> f32
pub fn distance_for_comparison(&self, a: &[f32], b: &[f32]) -> f32
Compute distance for internal comparisons (optimized, may not be actual distance)
For L2: returns squared distance (skips sqrt) since relative ordering is preserved
For Cosine/NegativeDotProduct: same as distance()
This is ~10-15% faster for L2 in HNSW search_layer.
Sourcepub fn comparison_to_actual(&self, d: f32) -> f32
pub fn comparison_to_actual(&self, d: f32) -> f32
Convert comparison distance back to actual distance
For L2: applies sqrt For others: identity
Trait Implementations§
Source§impl Clone for DistanceFunction
impl Clone for DistanceFunction
Source§fn clone(&self) -> DistanceFunction
fn clone(&self) -> DistanceFunction
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 Debug for DistanceFunction
impl Debug for DistanceFunction
Source§impl<'de> Deserialize<'de> for DistanceFunction
impl<'de> Deserialize<'de> for DistanceFunction
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
Source§impl From<DistanceFunction> for Metric
impl From<DistanceFunction> for Metric
Source§fn from(d: DistanceFunction) -> Self
fn from(d: DistanceFunction) -> Self
Converts to this type from the input type.
Source§impl From<Metric> for DistanceFunction
impl From<Metric> for DistanceFunction
Source§impl PartialEq for DistanceFunction
impl PartialEq for DistanceFunction
Source§impl Serialize for DistanceFunction
impl Serialize for DistanceFunction
impl Copy for DistanceFunction
impl Eq for DistanceFunction
impl StructuralPartialEq for DistanceFunction
Auto Trait Implementations§
impl Freeze for DistanceFunction
impl RefUnwindSafe for DistanceFunction
impl Send for DistanceFunction
impl Sync for DistanceFunction
impl Unpin for DistanceFunction
impl UnwindSafe for DistanceFunction
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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