#[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 new(model: M) -> EmbeddingsBuilder<M, T>
pub fn new(model: M) -> EmbeddingsBuilder<M, T>
Create a new embedding builder with the given embedding model
Sourcepub fn document(
self,
document: T,
) -> Result<EmbeddingsBuilder<M, T>, EmbedError>
pub fn document( self, document: T, ) -> Result<EmbeddingsBuilder<M, T>, 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<EmbeddingsBuilder<M, T>, EmbedError>
pub fn documents( self, documents: impl IntoIterator<Item = T>, ) -> Result<EmbeddingsBuilder<M, T>, 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.
Sourcepub async fn build_with_usage(
self,
) -> Result<(Vec<(T, OneOrMany<Embedding>)>, Usage), EmbeddingError>
pub async fn build_with_usage( self, ) -> Result<(Vec<(T, OneOrMany<Embedding>)>, Usage), EmbeddingError>
Generate embeddings for all documents in the builder and return accumulated token usage.
Returns (document, embeddings) pairs and the total token usage across all
batches. A document may produce one or many embeddings depending on how its
Embed implementation uses TextEmbedder.