mnemo_core/embedding/
mod.rs1pub 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}