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//! - **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 hnsw;
43mod index;
44mod local;
45mod metrics;
46#[cfg(feature = "mistral")]
47mod mistral;
48mod mock_model;
49mod openai;
50mod provider;
51#[cfg(feature = "local-embeddings")]
52mod real_model;
53mod semantic_service;
54mod similarity;
55pub mod simple;
56mod storage;
57mod utils;
58
59pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitBreakerState};
60#[cfg(feature = "hnsw")]
61pub use hnsw::HnswVectorIndex;
62pub use index::{SimpleVectorIndex, VectorHit, VectorIndex};
63// New configuration types
64pub use config::{
65    AzureOpenAIConfig, CustomConfig, EmbeddingConfig, LocalConfig, MistralConfig, OpenAIConfig,
66    OptimizationConfig, ProviderConfig,
67};
68pub use local::{
69    LocalEmbeddingProvider, LocalModelUseCase, get_recommended_model, list_available_models,
70};
71pub use metrics::{LatencyTimer, MetricsSnapshot, ProviderMetrics};
72#[cfg(feature = "mistral")]
73pub use mistral::MistralEmbeddingProvider;
74pub use mock_model::MockLocalModel;
75#[cfg(feature = "openai")]
76pub use openai::OpenAIEmbeddingProvider;
77pub use provider::utils::normalize_vector;
78pub use provider::{EmbeddingProvider, EmbeddingResult};
79pub use semantic_service::{DEFAULT_EMBEDDING_DIM, SemanticService};
80pub use similarity::{SimilarityMetadata, SimilaritySearchResult, cosine_similarity};
81pub use storage::{EmbeddingStorage, EmbeddingStorageBackend, InMemoryEmbeddingStorage};
82
83#[cfg(all(test, feature = "mistral"))]
84mod mistral_tests;
85#[cfg(test)]
86pub mod tests;