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::{cosine_similarity, cosine_similarity_no_l2};
pub trait TextRerank {
    fn rerank(&mut self, query: &str, documents: &[String]) -> Result<Vec<f32>>;
}

pub enum RerankerSimilarity {
    Cosine,
}

impl RerankerSimilarity {
    pub fn similar(&self, query_vector: &Tensor, matrix: &Tensor, need_l2: bool) -> Result<Tensor> {
        match self {
            RerankerSimilarity::Cosine => {
                if need_l2 {
                    cosine_similarity(query_vector, matrix)
                } else {
                    cosine_similarity_no_l2(query_vector, matrix)
                }
            }
        }
    }
}