use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg(feature = "reranker")]
pub struct HuggingFaceRerankerConfig {
#[serde(default = "default_model")]
pub model: String,
#[serde(default = "default_device")]
pub device: Option<String>,
#[serde(default = "default_max_length")]
pub max_length: usize,
#[serde(default = "default_normalize")]
pub normalize: bool,
#[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,
}
}
}