use crate::embeddings::EmbeddingBase;
use crate::extraction::{FactConsolidator, FactExtractor};
use crate::llm::LlmBase;
use crate::search::ResultReranker;
use crate::storage::{GraphBackend, HistoryStore};
use crate::vector_store::VectorStoreBase;
use std::sync::Arc;
#[derive(Debug, Clone)]
pub struct ExtractionConfig {
pub enabled: bool,
pub extraction_prompt: Option<String>,
pub consolidation_prompt: Option<String>,
pub temperature: f32,
}
impl Default for ExtractionConfig {
fn default() -> Self {
Self {
enabled: true,
extraction_prompt: None,
consolidation_prompt: None,
temperature: 0.0,
}
}
}
#[derive(Debug, Clone)]
pub struct GraphConfig {
pub enabled: bool,
pub max_relationship_depth: usize,
pub entity_extraction_enabled: bool,
}
impl Default for GraphConfig {
fn default() -> Self {
Self {
enabled: false,
max_relationship_depth: 2,
entity_extraction_enabled: true,
}
}
}
#[derive(Clone)]
pub struct EngineConfig {
pub llm_provider: Arc<dyn LlmBase>,
pub embedding_provider: Arc<dyn EmbeddingBase>,
pub vector_backend: Arc<dyn VectorStoreBase>,
pub graph_backend: Option<Arc<dyn GraphBackend>>,
pub history_store: Arc<dyn HistoryStore>,
pub fact_extractor: Arc<dyn FactExtractor>,
pub fact_consolidator: Arc<dyn FactConsolidator>,
pub reranker: Option<Arc<dyn ResultReranker>>,
pub extraction_config: ExtractionConfig,
pub graph_config: GraphConfig,
}