pub struct SimilarityAlgorithms;Expand description
相似度算法工具集
提供多种向量相似度/距离的纯 Rust 计算,不依赖 pgvector。
Implementations§
Source§impl SimilarityAlgorithms
impl SimilarityAlgorithms
Sourcepub fn l2_distance(a: &[f32], b: &[f32]) -> f32
pub fn l2_distance(a: &[f32], b: &[f32]) -> f32
L2 距离(欧氏距离)
d = sqrt(sum((a_i - b_i)^2))
Sourcepub fn inner_product(a: &[f32], b: &[f32]) -> f32
pub fn inner_product(a: &[f32], b: &[f32]) -> f32
内积(点积)
d = sum(a_i * b_i)
Sourcepub fn cosine_similarity(a: &[f32], b: &[f32]) -> f32
pub fn cosine_similarity(a: &[f32], b: &[f32]) -> f32
余弦相似度
d = (a·b) / (|a| * |b|)
Sourcepub fn manhattan_distance(a: &[f32], b: &[f32]) -> f32
pub fn manhattan_distance(a: &[f32], b: &[f32]) -> f32
曼哈顿距离(L1 距离)
d = sum(|a_i - b_i|)
Sourcepub fn distance_to_similarity(metric: VectorMetric, distance: f32) -> f32
pub fn distance_to_similarity(metric: VectorMetric, distance: f32) -> f32
将距离值转换为相似度分数(值越大越相似)
- Cosine:相似度 = 1 - 距离(距离 0 → 相似度 1)
- Euclidean:相似度 = 1 / (1 + 距离)(距离 0 → 相似度 1)
- DotProduct:相似度 = 点积本身(无转换)
Sourcepub fn similarity(metric: VectorMetric, a: &[f32], b: &[f32]) -> f32
pub fn similarity(metric: VectorMetric, a: &[f32], b: &[f32]) -> f32
按指定度量计算相似度
Sourcepub fn batch_similarity(
metric: VectorMetric,
query: &[f32],
candidates: &[Vec<f32>],
) -> Vec<(usize, f32)>
pub fn batch_similarity( metric: VectorMetric, query: &[f32], candidates: &[Vec<f32>], ) -> Vec<(usize, f32)>
批量计算查询向量与多个候选向量的相似度
返回 (索引, 相似度) 对的列表(未排序)
Sourcepub fn batch_top_k(
metric: VectorMetric,
query: &[f32],
candidates: &[Vec<f32>],
top_k: usize,
) -> Vec<(usize, f32)>
pub fn batch_top_k( metric: VectorMetric, query: &[f32], candidates: &[Vec<f32>], top_k: usize, ) -> Vec<(usize, f32)>
批量计算并返回 top_k 结果(降序排列)
Auto Trait Implementations§
impl Freeze for SimilarityAlgorithms
impl RefUnwindSafe for SimilarityAlgorithms
impl Send for SimilarityAlgorithms
impl Sync for SimilarityAlgorithms
impl Unpin for SimilarityAlgorithms
impl UnsafeUnpin for SimilarityAlgorithms
impl UnwindSafe for SimilarityAlgorithms
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