1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! Embedding API — generate vector representations of text.
//!
//! # Three-layer structure
//!
//! ```text
//! 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
//!
//! ```rust,ignore
//! 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.
//! ```
pub use EmbeddingsBuilder;
pub use ;
pub use ;
pub use ;