rustchain-community 1.0.0

Open-source AI agent framework with core functionality and plugin system
Documentation
use crate::core::error::RustChainError;

pub trait Embedder: Send + Sync {
    fn embed(&self, text: &str) -> Result<Vec<f32>, RustChainError>;
    fn name(&self) -> &'static str;
    fn dimensions(&self) -> usize;
}

pub enum EmbedderBackend {
    Static(Box<dyn Embedder>),
    Onnx(Box<dyn Embedder>),
    Remote(Box<dyn Embedder>),
}

impl EmbedderBackend {
    pub fn embed(&self, input: &str) -> Result<Vec<f32>, RustChainError> {
        match self {
            Self::Static(backend) => backend.embed(input),
            Self::Onnx(backend) => backend.embed(input),
            Self::Remote(backend) => backend.embed(input),
        }
    }

    pub fn name(&self) -> &'static str {
        match self {
            Self::Static(b) => b.name(),
            Self::Onnx(b) => b.name(),
            Self::Remote(b) => b.name(),
        }
    }

    pub fn dimensions(&self) -> usize {
        match self {
            Self::Static(b) => b.dimensions(),
            Self::Onnx(b) => b.dimensions(),
            Self::Remote(b) => b.dimensions(),
        }
    }
}