mod provider;
mod voyage;
#[allow(unused_imports)]
pub use provider::RerankResult;
pub use provider::{DocumentToRerank, Reranker};
pub use voyage::VoyageReranker;
use crate::config::{RerankerConfig, RerankerProviderType};
use anyhow::Result;
use std::sync::Arc;
pub fn create_reranker(config: &RerankerConfig) -> Result<Option<Arc<dyn Reranker>>> {
if !config.is_active() {
return Ok(None);
}
match config.provider {
RerankerProviderType::Voyage => {
let api_key = config.get_voyage_api_key()?;
Ok(Some(Arc::new(VoyageReranker::new(
&api_key,
&config.voyage.model,
&config.voyage.base_url,
))))
}
RerankerProviderType::None => Ok(None),
}
}