#[cfg(feature = "embedding-model-request")]
pub mod request;
use crate::error::Result;
use async_trait::async_trait;
use derive_builder::Builder;
#[cfg(feature = "embedding-model-request")]
pub use request::EmbeddingModelRequest;
#[derive(Debug, Clone, Builder)]
pub struct EmbeddingModelOptions {
pub input: Vec<String>,
pub dimensions: Option<usize>,
}
impl EmbeddingModelOptions {
pub fn builder() -> EmbeddingModelOptionsBuilder {
EmbeddingModelOptionsBuilder::default()
}
}
#[async_trait]
pub trait EmbeddingModel: Clone + Send + Sync + std::fmt::Debug + 'static {
async fn embed(&self, input: EmbeddingModelOptions) -> Result<EmbeddingModelResponse>;
}
pub type EmbeddingModelResponse = Vec<Vec<f32>>;