kalosm_language_model/embedding/
into_embedding.rsuse futures_util::Future;
use crate::{Embedder, EmbedderExt, Embedding};
pub trait IntoEmbedding {
fn into_embedding<E: Embedder>(
self,
embedder: &E,
) -> impl Future<Output = Result<Embedding, E::Error>> + Send;
fn into_query_embedding<E: Embedder>(
self,
embedder: &E,
) -> impl Future<Output = Result<Embedding, E::Error>> + Send;
}
impl<S: ToString + Send> IntoEmbedding for S {
async fn into_embedding<E: Embedder>(self, embedder: &E) -> Result<Embedding, E::Error> {
embedder.embed(self).await
}
async fn into_query_embedding<E: Embedder>(self, embedder: &E) -> Result<Embedding, E::Error> {
embedder.embed_query(self).await
}
}
impl IntoEmbedding for Embedding {
async fn into_embedding<E: Embedder>(self, _: &E) -> Result<Embedding, E::Error> {
Ok(self)
}
async fn into_query_embedding<E: Embedder>(self, _: &E) -> Result<Embedding, E::Error> {
Ok(self)
}
}