use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::core::exceptions::OperonError;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RerankResult {
pub index: usize,
pub score: f32,
pub document: Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RerankOpts {
#[serde(default)]
pub threshold: f32,
#[serde(default)]
pub extras: std::collections::HashMap<String, Value>,
}
#[async_trait]
pub trait BaseReranker: Send + Sync {
async fn run(
&self,
query: String,
texts: Vec<Value>,
top_k: usize,
opts: &RerankOpts,
) -> Result<Vec<RerankResult>, OperonError>;
}