Skip to main content

mnemo_core/embedding/
mod.rs

1pub mod onnx;
2pub mod openai;
3
4use crate::error::Result;
5
6#[async_trait::async_trait]
7pub trait EmbeddingProvider: Send + Sync {
8    async fn embed(&self, text: &str) -> Result<Vec<f32>>;
9    async fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>>;
10    fn dimensions(&self) -> usize;
11}
12
13pub struct NoopEmbedding {
14    dimensions: usize,
15}
16
17impl NoopEmbedding {
18    pub fn new(dimensions: usize) -> Self {
19        Self { dimensions }
20    }
21}
22
23#[async_trait::async_trait]
24impl EmbeddingProvider for NoopEmbedding {
25    async fn embed(&self, _text: &str) -> Result<Vec<f32>> {
26        Ok(vec![0.0; self.dimensions])
27    }
28
29    async fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>> {
30        Ok(texts.iter().map(|_| vec![0.0; self.dimensions]).collect())
31    }
32
33    fn dimensions(&self) -> usize {
34        self.dimensions
35    }
36}