use crate::filter::Filter;
use crate::storage::wal::SyncMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum StorageMode {
#[default]
Mmap,
Rom,
}
#[derive(Debug, Clone, Copy)]
pub struct Config {
pub dim: usize,
pub sync_mode: SyncMode,
pub storage_mode: StorageMode,
}
impl Default for Config {
fn default() -> Self {
Self {
dim: 1536,
sync_mode: SyncMode::default(),
storage_mode: StorageMode::default(),
}
}
}
#[derive(Debug, Clone)]
pub struct SearchConfig {
pub top_k: usize,
pub expand_depth: usize,
pub min_score: f32,
pub teleport_alpha: f32,
pub enable_advanced_pipeline: bool,
pub enable_sparse_residual: bool,
pub fista_lambda: f32,
pub fista_threshold: f32,
pub enable_dpp: bool,
pub dpp_quality_weight: f32,
pub enable_refractory_fatigue: bool,
pub enable_inverse_inhibition: bool,
pub lateral_inhibition_threshold: usize,
pub enable_bq_coarse_search: bool,
pub bq_candidate_ratio: f32,
pub text_boost: f32,
pub enable_text_hybrid_search: bool,
pub bm25_k1: f32,
pub bm25_b: f32,
pub payload_filter: Option<Filter>,
}
impl Default for SearchConfig {
fn default() -> Self {
Self {
top_k: 5,
expand_depth: 2,
min_score: 0.1,
teleport_alpha: 0.0,
enable_advanced_pipeline: false,
enable_sparse_residual: false,
fista_lambda: 0.1,
fista_threshold: 0.30,
enable_dpp: false,
dpp_quality_weight: 1.0,
enable_refractory_fatigue: false,
enable_inverse_inhibition: false,
lateral_inhibition_threshold: 0,
enable_bq_coarse_search: false,
bq_candidate_ratio: 0.05,
text_boost: 1.5,
enable_text_hybrid_search: false,
bm25_k1: 1.2,
bm25_b: 0.75,
payload_filter: None,
}
}
}