aha 0.2.5

aha model inference library, now supports Qwen(2.5VL/3/3VL/3.5/ASR/3Embedding/3Reranker), MiniCPM4, VoxCPM/1.5, DeepSeek-OCR/2, Hunyuan-OCR, PaddleOCR-VL/1.5, RMBG2.0, GLM(ASR-Nano-2512/OCR), Fun-ASR-Nano-2512, LFM(2/2.5/2VL/2.5VL)
Documentation
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<Vec<Vec<f32>>>;
}

pub enum NormalizeType {
    L1,
    L2,
    ZScore,
    MinMax,
    MaxAbs,
}

impl NormalizeType {
    pub fn normalize(&self, t: &Tensor, dim: usize) -> Result<Tensor> {
        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),
        }
    }
}