use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct PartialQueryConfig {
pub max_titles: Option<usize>,
pub max_summaries: Option<usize>,
pub max_retrieval: Option<usize>,
pub enable_ii: Option<bool>,
pub enable_rag: Option<bool>,
pub super_rerank: Option<bool>,
}
impl PartialQueryConfig {
pub fn apply_to(&self, config: &mut QueryConfig) {
if let Some(max_titles) = self.max_titles {
config.max_titles = max_titles;
}
if let Some(max_summaries) = self.max_summaries {
config.max_summaries = max_summaries;
}
if let Some(max_retrieval) = self.max_retrieval {
config.max_retrieval = max_retrieval;
}
if let Some(enable_ii) = self.enable_ii {
config.enable_ii = enable_ii;
}
if let Some(super_rerank) = self.super_rerank {
config.super_rerank = super_rerank;
}
}
}
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct QueryConfig {
pub max_titles: usize,
pub max_summaries: usize,
pub max_retrieval: usize,
pub enable_ii: bool,
#[serde(default = "_true")]
pub enable_rag: bool,
#[serde(default = "_false")]
pub super_rerank: bool,
}
fn _false() -> bool {
false
}
fn _true() -> bool {
true
}
impl Default for QueryConfig {
fn default() -> Self {
QueryConfig {
max_titles: 32,
max_summaries: 10,
max_retrieval: 3,
enable_ii: true,
enable_rag: true,
super_rerank: false,
}
}
}