triviumdb 0.5.2

A high-performance memory-mmap hybrid search engine built for AI, combining dense vector, sparse text, graph relations, and JSON metadata.
Documentation
//! 数据库配置与查询参数矩阵
//!
//! 从 database.rs 中独立拆分,包含:
//! - `StorageMode`: 存储引擎选择(Mmap / Rom)
//! - `Config`: 数据库打开时的配置
//! - `SearchConfig`: 混合检索管线的参数矩阵

use crate::filter::Filter;
use crate::storage::wal::SyncMode;

#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum StorageMode {
    /// Mmap 分离模式(默认):高性能、海量数据,产生 `.tdb` 和 `.vec` 两个文件
    #[default]
    Mmap,
    /// Rom 单文件模式:高便携性,所有数据保存在一个 `.tdb` 文件中(纯内存加载以获得极高并发)
    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, // L6 PPR 阻尼因子/回家概率

    // 认知层统开开关 (当为 false 时,管线完全退化为最极简的传统检索引擎)
    pub enable_advanced_pipeline: bool,

    // L4 / L5: 残差与二次搜索
    pub enable_sparse_residual: bool,
    pub fista_lambda: f32,
    pub fista_threshold: f32,

    // L9: DPP
    pub enable_dpp: bool,
    pub dpp_quality_weight: f32,

    // --- 高级认知选项 (完全 Opt-in) ---
    /// 启用物理神经不应期(Fatigue),强制避免对高频节点的死循环访问,提供极强的长期多样性
    pub enable_refractory_fatigue: bool,
    /// 启用时,将使用 `1.0 / (1.0 + log10(in_degree))` 对泛化扩散节点施加反向惩罚
    pub enable_inverse_inhibition: bool,
    /// 当 > 0 时,作为侧向抑制起保护作用,自动截断扩散网络 (如传入 5000)
    pub lateral_inhibition_threshold: usize,
    /// 是否启用 L1 Binary Quantization 两段式初筛管线 (极速混沌轨道)
    pub enable_bq_coarse_search: bool,
    /// BQ 粗筛候选集占总数据量的比例
    pub bq_candidate_ratio: f32,

    // --- 混合倒排与文本检索 (Hybrid Search) ---
    /// 启用文本混合查询时,决定文本匹配的分数提权倍率 (Boost)
    pub text_boost: f32,
    /// 开启基于 AC 自动机的强制文本召回锚点机制 (等价于 PEDSA第一阶段)
    pub enable_text_hybrid_search: bool,
    pub bm25_k1: f32,
    pub bm25_b: f32,

    // --- Payload 预过滤 (向量召回阶段生效) ---
    /// 可选的 Payload 过滤条件,在向量搜索阶段即可跳过不符合条件的节点。
    /// 典型用途:多 Agent 隔离(按 agent_id 过滤)。
    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,
        }
    }
}