Skip to main content

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//! - **`OpenAI`**: text-embedding-ada-002 and text-embedding-3.x (cloud)
16//! - **Mistral**: mistral-embed and codestral-embed (cloud)
17//! - **Azure `OpenAI`**: Azure-hosted OpenAI embeddings
18//! - **Custom**: User-provided embedding functions
19//!
20//! ## Usage
21//!
22//! ```rust,no_run
23//! use do_memory_core::embeddings::{EmbeddingProvider, LocalEmbeddingProvider, ProviderConfig, LocalConfig};
24//!
25//! # async fn example() -> anyhow::Result<()> {
26//! // Local embedding provider (offline)
27//! let config = LocalConfig::default();
28//! let provider = LocalEmbeddingProvider::new(config).await?;
29//!
30//! // Generate embedding for text
31//! let embedding = provider.embed_text("implement REST API").await?;
32//!
33//! // Calculate similarity between two texts
34//! let similarity = provider.similarity("REST API", "web service API").await?;
35//! # Ok(())
36//! # }
37//! ```
38
39mod circuit_breaker;
40pub mod config;
41mod local;
42mod metrics;
43#[cfg(feature = "mistral")]
44mod mistral;
45mod mock_model;
46mod openai;
47mod provider;
48#[cfg(feature = "local-embeddings")]
49mod real_model;
50mod semantic_service;
51mod similarity;
52mod storage;
53mod utils;
54
55pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitBreakerState};
56// New configuration types
57pub use config::{
58    AzureOpenAIConfig, CustomConfig, EmbeddingConfig, LocalConfig, MistralConfig, OpenAIConfig,
59    OptimizationConfig, ProviderConfig,
60};
61pub use local::{
62    LocalEmbeddingProvider, LocalModelUseCase, get_recommended_model, list_available_models,
63};
64pub use metrics::{LatencyTimer, MetricsSnapshot, ProviderMetrics};
65#[cfg(feature = "mistral")]
66pub use mistral::MistralEmbeddingProvider;
67pub use mock_model::MockLocalModel;
68#[cfg(feature = "openai")]
69pub use openai::OpenAIEmbeddingProvider;
70pub use provider::utils::normalize_vector;
71pub use provider::{EmbeddingProvider, EmbeddingResult};
72pub use semantic_service::{DEFAULT_EMBEDDING_DIM, SemanticService};
73pub use similarity::{SimilarityMetadata, SimilaritySearchResult, cosine_similarity};
74pub use storage::{EmbeddingStorage, EmbeddingStorageBackend, InMemoryEmbeddingStorage};
75
76#[cfg(all(test, feature = "mistral"))]
77mod mistral_tests;
78#[cfg(test)]
79pub mod tests;