use super::api::ApiEmbedding;
use crate::error::Result;
#[derive(Debug)]
pub(crate) enum Embedder {
Api(ApiEmbedding),
#[cfg(feature = "onnx")]
Onnx(super::onnx::OnnxEmbedding),
}
impl Embedder {
#[must_use]
pub(crate) const fn dimension(&self) -> usize {
match self {
Self::Api(e) => e.dimension(),
#[cfg(feature = "onnx")]
Self::Onnx(e) => e.dimension(),
}
}
pub(crate) async fn encode_documents(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>> {
match self {
Self::Api(e) => e.encode_documents(texts).await,
#[cfg(feature = "onnx")]
Self::Onnx(e) => e.encode_documents(texts).await,
}
}
pub(crate) async fn encode_query(&self, text: &str) -> Result<Vec<f32>> {
match self {
Self::Api(e) => e.encode_query(text).await,
#[cfg(feature = "onnx")]
Self::Onnx(e) => e.encode_query(text).await,
}
}
}