zerch-core 0.1.0

Distance metrics for vector similarity search (cosine, euclidean)
Documentation
pub struct EuclideanDistance {
    pub distance: f32,
}

pub fn euclidean_distance(a: &[f32], b: &[f32]) -> EuclideanDistance {
    if a.len() != b.len() {
        return EuclideanDistance {
            distance: f32::INFINITY,
        };
    }

    #[rustfmt::skip]
    let dist = a
        .iter()
        .zip(b)
        .map(|(x, y)| (x - y).powi(2))
        .sum::<f32>()
        .sqrt();

    EuclideanDistance { distance: dist }
}