#[non_exhaustive]pub struct EmbeddingsBuilder<M, T>where
M: EmbeddingModel,
T: Embed,{ /* private fields */ }Expand description
Builder for creating embeddings from one or more documents of type T.
Note: T can be any type that implements the Embed trait.
Using the builder is preferred over using EmbeddingModel::embed_text directly as it will batch the documents in a single request to the model provider.
§Example
use rig_core::{
client::{EmbeddingsClient, ProviderClient},
embeddings::EmbeddingsBuilder,
providers::openai,
};
// Create OpenAI client
let openai_client = openai::Client::from_env()?;
let model = openai_client.embedding_model(openai::TEXT_EMBEDDING_3_SMALL);
let embeddings = EmbeddingsBuilder::new(model.clone())
.documents(vec![
"1. *flurbo* (noun): A green alien that lives on cold planets.".to_string(),
"2. *flurbo* (noun): A fictional digital currency.".to_string(),
"1. *glarb-glarb* (noun): An ancient tool used by the ancestors of the inhabitants of planet Jiro to farm the land.".to_string(),
"2. *glarb-glarb* (noun): A fictional creature from marshlands.".to_string(),
"1. *linlingdong* (noun): A term used by inhabitants of the sombrero galaxy to describe humans.".to_string(),
"2. *linlingdong* (noun): A rare instrument.".to_string(),
])?
.build()
.await?;Implementations§
Source§impl<M, T> EmbeddingsBuilder<M, T>where
M: EmbeddingModel,
T: Embed,
impl<M, T> EmbeddingsBuilder<M, T>where
M: EmbeddingModel,
T: Embed,
Sourcepub fn document(self, document: T) -> Result<Self, EmbedError>
pub fn document(self, document: T) -> Result<Self, EmbedError>
Add a document to be embedded to the builder. document must implement the Embed trait.
Sourcepub fn documents(
self,
documents: impl IntoIterator<Item = T>,
) -> Result<Self, EmbedError>
pub fn documents( self, documents: impl IntoIterator<Item = T>, ) -> Result<Self, EmbedError>
Add multiple documents to be embedded to the builder. documents must be iterable
with items that implement the Embed trait.
Source§impl<M, T> EmbeddingsBuilder<M, T>
impl<M, T> EmbeddingsBuilder<M, T>
Sourcepub async fn build(
self,
) -> Result<Vec<(T, OneOrMany<Embedding>)>, EmbeddingError>
pub async fn build( self, ) -> Result<Vec<(T, OneOrMany<Embedding>)>, EmbeddingError>
Generate embeddings for all documents in the builder.
Returns (document, embeddings) pairs. A document may produce one or many
embeddings depending on how its Embed implementation uses TextEmbedder.
Auto Trait Implementations§
impl<M, T> Freeze for EmbeddingsBuilder<M, T>where
M: Freeze,
impl<M, T> RefUnwindSafe for EmbeddingsBuilder<M, T>where
M: RefUnwindSafe,
T: RefUnwindSafe,
impl<M, T> Send for EmbeddingsBuilder<M, T>where
T: Send,
impl<M, T> Sync for EmbeddingsBuilder<M, T>where
T: Sync,
impl<M, T> Unpin for EmbeddingsBuilder<M, T>
impl<M, T> UnsafeUnpin for EmbeddingsBuilder<M, T>where
M: UnsafeUnpin,
impl<M, T> UnwindSafe for EmbeddingsBuilder<M, T>where
M: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more