do_memory_core/embeddings/mod.rs
1//! # Semantic Embeddings
2//!
3//! Vector embeddings for semantic similarity search and enhanced context retrieval.
4//!
5//! This module provides:
6//! - Text embedding generation (local and remote)
7//! - Vector similarity calculations
8//! - Semantic-enhanced episode and pattern retrieval
9//! - Configurable embedding providers
10//!
11//! ## Architecture
12//!
13//! The embedding system supports multiple providers:
14//! - **Local**: sentence-transformers via candle-transformers (offline)
15//! - **CSM HDC**: Hyperdimensional computing for CPU-only lexical matching (optional)
16//! - **`OpenAI`**: text-embedding-ada-002 and text-embedding-3.x (cloud)
17//! - **Mistral**: mistral-embed and codestral-embed (cloud)
18//! - **Azure `OpenAI`**: Azure-hosted OpenAI embeddings
19//! - **Custom**: User-provided embedding functions
20//!
21//! ## Usage
22//!
23//! ```rust,no_run
24//! use do_memory_core::embeddings::{EmbeddingProvider, LocalEmbeddingProvider, ProviderConfig, LocalConfig};
25//!
26//! # async fn example() -> anyhow::Result<()> {
27//! // Local embedding provider (offline)
28//! let config = LocalConfig::default();
29//! let provider = LocalEmbeddingProvider::new(config).await?;
30//!
31//! // Generate embedding for text
32//! let embedding = provider.embed_text("implement REST API").await?;
33//!
34//! // Calculate similarity between two texts
35//! let similarity = provider.similarity("REST API", "web service API").await?;
36//! # Ok(())
37//! # }
38//! ```
39
40mod circuit_breaker;
41pub mod config;
42mod local;
43mod metrics;
44#[cfg(feature = "mistral")]
45mod mistral;
46mod mock_model;
47mod openai;
48mod provider;
49#[cfg(feature = "local-embeddings")]
50mod real_model;
51mod semantic_service;
52mod similarity;
53mod storage;
54mod utils;
55
56pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitBreakerState};
57// New configuration types
58pub use config::{
59 AzureOpenAIConfig, CustomConfig, EmbeddingConfig, LocalConfig, MistralConfig, OpenAIConfig,
60 OptimizationConfig, ProviderConfig,
61};
62pub use local::{
63 LocalEmbeddingProvider, LocalModelUseCase, get_recommended_model, list_available_models,
64};
65pub use metrics::{LatencyTimer, MetricsSnapshot, ProviderMetrics};
66#[cfg(feature = "mistral")]
67pub use mistral::MistralEmbeddingProvider;
68pub use mock_model::MockLocalModel;
69#[cfg(feature = "openai")]
70pub use openai::OpenAIEmbeddingProvider;
71pub use provider::utils::normalize_vector;
72pub use provider::{EmbeddingProvider, EmbeddingResult};
73pub use semantic_service::{DEFAULT_EMBEDDING_DIM, SemanticService};
74pub use similarity::{SimilarityMetadata, SimilaritySearchResult, cosine_similarity};
75pub use storage::{EmbeddingStorage, EmbeddingStorageBackend, InMemoryEmbeddingStorage};
76
77#[cfg(all(test, feature = "mistral"))]
78mod mistral_tests;
79#[cfg(test)]
80pub mod tests;