mod candle;
use crate::error::MemoryError;
pub use self::candle::{CandleEmbeddingEngine, MODEL_ID};
#[async_trait::async_trait]
pub trait EmbeddingBackend: Send + Sync {
async fn embed(&self, texts: &[String]) -> Result<Vec<Vec<f32>>, MemoryError>;
async fn embed_one(&self, text: &str) -> Result<Vec<f32>, MemoryError> {
let mut results = self.embed(&[text.to_string()]).await?;
results
.pop()
.ok_or_else(|| MemoryError::Embedding("embedding returned no vectors".to_string()))
}
fn dimensions(&self) -> usize;
}