mod circuit_breaker;
pub mod config;
mod local;
mod metrics;
#[cfg(feature = "mistral")]
mod mistral;
mod mock_model;
mod openai;
mod provider;
#[cfg(feature = "local-embeddings")]
mod real_model;
mod semantic_service;
mod similarity;
mod storage;
mod utils;
pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitBreakerState};
pub use config::{
AzureOpenAIConfig, CustomConfig, EmbeddingConfig, LocalConfig, MistralConfig, OpenAIConfig,
OptimizationConfig, ProviderConfig,
};
pub use local::{
LocalEmbeddingProvider, LocalModelUseCase, get_recommended_model, list_available_models,
};
pub use metrics::{LatencyTimer, MetricsSnapshot, ProviderMetrics};
#[cfg(feature = "mistral")]
pub use mistral::MistralEmbeddingProvider;
pub use mock_model::MockLocalModel;
#[cfg(feature = "openai")]
pub use openai::OpenAIEmbeddingProvider;
pub use provider::utils::normalize_vector;
pub use provider::{EmbeddingProvider, EmbeddingResult};
pub use semantic_service::{DEFAULT_EMBEDDING_DIM, SemanticService};
pub use similarity::{SimilarityMetadata, SimilaritySearchResult, cosine_similarity};
pub use storage::{EmbeddingStorage, EmbeddingStorageBackend, InMemoryEmbeddingStorage};
#[cfg(all(test, feature = "mistral"))]
mod mistral_tests;
#[cfg(test)]
pub mod tests;