neomemx 0.1.2

A high-performance memory library for AI agents with semantic search
Documentation
//! Base trait for embedding implementations

use async_trait::async_trait;

use crate::error::Result;

/// Base trait for text embedding providers
#[async_trait]
pub trait EmbeddingBase: Send + Sync {
    /// Generate an embedding vector for the given text
    /// Returns: `Vec<f32>` - A vector of floats representing the embedding
    async fn embed(&self, text: &str) -> Result<Vec<f32>>;

    /// Generate embeddings for multiple texts in a single batch API call
    /// Returns: `Vec<Vec<f32>>` - A vector of vectors of floats representing the embeddings
    async fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>> {
        let mut results = Vec::with_capacity(texts.len());
        for text in texts {
            results.push(self.embed(text).await?);
        }
        Ok(results)
    }
    /// Returns the dimensionality of the embedding vectors
    fn embedding_dims(&self) -> usize;
}