Expand description
Embedding API — generate vector representations of text.
§Three-layer structure
Embed trait ← your domain types declare what text to embed
↓
EmbeddingsBuilder ← batches texts, calls the model, reassembles results
↓
EmbeddingModel trait ← providers implement this (OpenAI, Gemini, …)§Quick start
ⓘ
use irig::embeddings::{Embed, EmbeddingsBuilder, TextEmbedder, EmbedError};
use irig::providers::openai;
struct Article { title: String, body: String }
impl Embed for Article {
fn embed(&self, e: &mut TextEmbedder) -> Result<(), EmbedError> {
e.embed(self.title.clone());
e.embed(self.body.clone());
Ok(())
}
}
let model = openai::Client::new(http, api_key).embedding_model(openai::TEXT_EMBEDDING_3_SMALL);
let results = EmbeddingsBuilder::new(model)
.documents(articles)?
.build()
.await?;
// results: Vec<(Article, Vec<Embedding>)>
// Each Article gets two Embeddings: one for title, one for body.Re-exports§
pub use builder::EmbeddingsBuilder;pub use distance::DistanceMetric;pub use distance::VectorDistance;pub use embed::Embed;pub use embed::EmbedError;pub use embed::TextEmbedder;pub use embed::to_texts;pub use embedding::Embedding;pub use embedding::EmbeddingError;pub use embedding::EmbeddingModel;
Modules§
- builder
EmbeddingsBuilder— batch embedding with automatic chunking.- distance
- Vector similarity and distance metrics.
- embed
Embedtrait andTextEmbedderaccumulator.- embedding
EmbeddingModeltrait,Embeddingstruct, andEmbeddingError.