Skip to main content

do_memory_core/embeddings/
utils.rs

1//! Utility functions and types for local embedding models
2//!
3//! This module provides helper functions and configuration types
4//! for managing local embedding models.
5
6use super::config::LocalConfig;
7
8/// List available local models
9#[must_use]
10pub fn list_available_models() -> Vec<LocalConfig> {
11    vec![
12        LocalConfig::new("sentence-transformers/all-MiniLM-L6-v2", 384),
13        LocalConfig::new("sentence-transformers/all-mpnet-base-v2", 768),
14        LocalConfig::new(
15            "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
16            384,
17        ),
18    ]
19}
20
21/// Get recommended model configuration for different use cases
22#[must_use]
23pub fn get_recommended_model(use_case: LocalModelUseCase) -> LocalConfig {
24    match use_case {
25        LocalModelUseCase::Fast => LocalConfig::new("sentence-transformers/all-MiniLM-L6-v2", 384),
26        LocalModelUseCase::Quality => {
27            LocalConfig::new("sentence-transformers/all-mpnet-base-v2", 768)
28        }
29        LocalModelUseCase::Multilingual => LocalConfig::new(
30            "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
31            384,
32        ),
33    }
34}
35
36/// Use cases for local model selection
37pub enum LocalModelUseCase {
38    /// Fast inference with good quality (384 dimensions)
39    Fast,
40    /// Best quality (768 dimensions, slower)
41    Quality,
42    /// Multilingual support (384 dimensions)
43    Multilingual,
44}