neomemx 0.1.2

A high-performance memory library for AI agents with semantic search
Documentation
//! Engine configuration types

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;

/// Configuration for fact extraction
#[derive(Debug, Clone)]
pub struct ExtractionConfig {
    /// Whether extraction is enabled
    pub enabled: bool,
    /// Custom prompt for fact extraction
    pub extraction_prompt: Option<String>,
    /// Custom prompt for fact consolidation
    pub consolidation_prompt: Option<String>,
    /// LLM temperature for extraction
    pub temperature: f32,
}

impl Default for ExtractionConfig {
    fn default() -> Self {
        Self {
            enabled: true,
            extraction_prompt: None,
            consolidation_prompt: None,
            temperature: 0.0,
        }
    }
}

/// Configuration for graph features
#[derive(Debug, Clone)]
pub struct GraphConfig {
    /// Whether graph features are enabled
    pub enabled: bool,
    /// Maximum depth for relationship traversal
    pub max_relationship_depth: usize,
    /// Whether entity extraction is enabled
    pub entity_extraction_enabled: bool,
}

impl Default for GraphConfig {
    fn default() -> Self {
        Self {
            enabled: false,
            max_relationship_depth: 2,
            entity_extraction_enabled: true,
        }
    }
}

/// Main engine configuration
#[derive(Clone)]
pub struct EngineConfig {
    /// LLM provider for fact extraction and consolidation
    pub llm_provider: Arc<dyn LlmBase>,
    /// Embedding provider for vector generation
    pub embedding_provider: Arc<dyn EmbeddingBase>,
    /// Vector store backend for fact storage
    pub vector_backend: Arc<dyn VectorStoreBase>,
    /// Optional graph backend for entity relationships
    pub graph_backend: Option<Arc<dyn GraphBackend>>,
    /// History store for change tracking
    pub history_store: Arc<dyn HistoryStore>,
    /// Fact extractor implementation
    pub fact_extractor: Arc<dyn FactExtractor>,
    /// Fact consolidator implementation
    pub fact_consolidator: Arc<dyn FactConsolidator>,
    /// Optional reranker for search results
    pub reranker: Option<Arc<dyn ResultReranker>>,
    /// Extraction configuration
    pub extraction_config: ExtractionConfig,
    /// Graph configuration
    pub graph_config: GraphConfig,
}