#[cfg(feature = "semantic")]
pub use frankensearch::FastEmbedReranker;
#[cfg(not(feature = "semantic"))]
pub use stub::FastEmbedReranker;
#[cfg(not(feature = "semantic"))]
mod stub {
use std::path::{Path, PathBuf};
use crate::search::reranker::{Reranker, RerankerError, RerankerResult};
use frankensearch::{RerankDocument, RerankScore};
const MS_MARCO_RERANKER_ID: &str = "ms-marco-minilm-l6-v2";
const MS_MARCO_DIR_NAME: &str = "ms-marco-MiniLM-L-6-v2";
pub struct FastEmbedReranker {
_private: (),
}
impl FastEmbedReranker {
pub fn reranker_id_static() -> &'static str {
MS_MARCO_RERANKER_ID
}
pub fn default_model_dir(data_dir: &Path) -> PathBuf {
data_dir.join("models").join(MS_MARCO_DIR_NAME)
}
pub fn load_from_dir(_model_dir: &Path) -> RerankerResult<Self> {
Err(RerankerError::RerankerUnavailable {
model: MS_MARCO_RERANKER_ID.to_string(),
})
}
}
impl Reranker for FastEmbedReranker {
fn rerank_sync(
&self,
_query: &str,
_documents: &[RerankDocument],
) -> RerankerResult<Vec<RerankScore>> {
Err(RerankerError::RerankerUnavailable {
model: MS_MARCO_RERANKER_ID.to_string(),
})
}
fn id(&self) -> &str {
MS_MARCO_RERANKER_ID
}
fn model_name(&self) -> &str {
MS_MARCO_DIR_NAME
}
fn is_available(&self) -> bool {
false
}
}
}