use anyhow::Result; use candle_core::Tensor; use crate::models::common::modules::{ l1_normalize, l2_normalize, max_abs_normalize, min_max_normalize, z_score_normalize, }; pub trait TextEmbedding { fn embed_texts(&mut self, input: &[String]) -> Result>>; } pub enum NormalizeType { L1, L2, ZScore, MinMax, MaxAbs, } impl NormalizeType { pub fn normalize(&self, t: &Tensor, dim: usize) -> Result { match self { NormalizeType::L1 => l1_normalize(t, dim), NormalizeType::L2 => l2_normalize(t, dim), NormalizeType::ZScore => z_score_normalize(t, dim), NormalizeType::MinMax => min_max_normalize(t, dim), NormalizeType::MaxAbs => max_abs_normalize(t, dim), } } }