neomemx 0.1.2

A high-performance memory library for AI agents with semantic search
Documentation
//! Reranker configuration

use serde::{Deserialize, Serialize};

/// Configuration for HuggingFace reranker
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg(feature = "reranker")]
pub struct HuggingFaceRerankerConfig {
    /// Model to use for reranking
    #[serde(default = "default_model")]
    pub model: String,

    /// Device to run on ("cpu", "cuda", "gpu")
    #[serde(default = "default_device")]
    pub device: Option<String>,

    /// Maximum sequence length
    #[serde(default = "default_max_length")]
    pub max_length: usize,

    /// Normalize scores to [0, 1] range
    #[serde(default = "default_normalize")]
    pub normalize: bool,

    /// Default top_k for reranking
    #[serde(default)]
    pub top_k: Option<usize>,
}

#[cfg(feature = "reranker")]
fn default_model() -> String {
    "BAAI/bge-reranker-base".to_string()
}

#[cfg(feature = "reranker")]
fn default_device() -> Option<String> {
    Some("cpu".to_string())
}

#[cfg(feature = "reranker")]
fn default_max_length() -> usize {
    512
}

#[cfg(feature = "reranker")]
fn default_normalize() -> bool {
    true
}

#[cfg(feature = "reranker")]
impl Default for HuggingFaceRerankerConfig {
    fn default() -> Self {
        Self {
            model: default_model(),
            device: default_device(),
            max_length: default_max_length(),
            normalize: default_normalize(),
            top_k: None,
        }
    }
}