pub trait Distance<T>{
// Required method
fn eval(&self, va: &[T], vb: &[T]) -> f32;
}
Expand description
This is the basic Trait describing a distance. The structure Hnsw can be instantiated by anything satisfying this Trait. The crate provides implmentations for L1, L2 , Cosine, Jaccard, Hamming. For other distances implement the trait possibly with the newtype pattern
Required Methods§
Implementors§
impl Distance<f32> for DistCosine
impl Distance<f32> for DistDot
impl Distance<f32> for DistHamming
This implementation is dedicated to SuperMinHash algorithm in crate probminhash.
Could be made generic with unstable source as there is implementation of PartialEq for f32
impl Distance<f32> for DistHellinger
impl Distance<f32> for DistJeffreys
impl Distance<f32> for DistJensenShannon
impl Distance<f32> for DistL1
impl Distance<f32> for DistL2
impl Distance<f64> for DistCosine
impl Distance<f64> for DistHamming
This implementation is dedicated to SuperMinHash algorithm in crate probminhash.
Could be made generic with unstable source as there is implementation of PartialEq for f64
impl Distance<f64> for DistHellinger
impl Distance<f64> for DistJeffreys
impl Distance<f64> for DistJensenShannon
impl Distance<f64> for DistL1
impl Distance<f64> for DistL2
impl Distance<i16> for DistHamming
impl Distance<i32> for DistCosine
impl Distance<i32> for DistHamming
impl Distance<i32> for DistL1
impl Distance<i32> for DistL2
impl Distance<i64> for DistCosine
impl Distance<i64> for DistL1
impl Distance<i64> for DistL2
impl Distance<u8> for DistHamming
impl Distance<u8> for DistJaccard
impl Distance<u8> for DistL1
impl Distance<u8> for DistL2
impl Distance<u16> for DistCosine
impl Distance<u16> for DistHamming
impl Distance<u16> for DistJaccard
impl Distance<u16> for DistL1
impl Distance<u16> for DistL2
impl Distance<u16> for DistLevenshtein
impl Distance<u32> for DistHamming
impl Distance<u32> for DistJaccard
impl Distance<u32> for DistL1
impl Distance<u32> for DistL2
impl Distance<u64> for DistHamming
impl<T> Distance<T> for DistCFFI<T>
impl<T> Distance<T> for DistFn<T>
impl<T> Distance<T> for NoDist
impl<T, F> Distance<T> for DistPtr<T, F>
beware that if F is f64, the distance converted to f32 can overflow!