pub trait Embed {
// Required method
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>;
}Expand description
Derive this trait for objects that need to be converted to vector embeddings. The Embed::embed method accumulates string values that need to be embedded by adding them to the TextEmbedder. If an error occurs, the method should return EmbedError.
§Example
use std::env;
use rig_core::{
Embed,
embeddings::{self, EmbedError, TextEmbedder},
};
struct WordDefinition {
id: String,
word: String,
definitions: String,
}
impl Embed for WordDefinition {
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError> {
// Embeddings only need to be generated for `definition` field.
// Split the definitions by comma and collect them into a vector of strings.
// That way, different embeddings can be generated for each definition in the `definitions` string.
self.definitions
.split(",")
.for_each(|s| {
embedder.embed(s.to_string());
});
Ok(())
}
}
let fake_definition = WordDefinition {
id: "1".to_string(),
word: "apple".to_string(),
definitions: "a fruit, a tech company".to_string(),
};
assert_eq!(embeddings::to_texts(fake_definition).unwrap(), vec!["a fruit", " a tech company"]);Required Methods§
Sourcefn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Append all text fragments that should be embedded for this value.
Implementations on Foreign Types§
Source§impl Embed for &str
impl Embed for &str
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for Value
impl Embed for Value
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for bool
impl Embed for bool
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for char
impl Embed for char
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for f32
impl Embed for f32
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for f64
impl Embed for f64
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for i8
impl Embed for i8
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for i16
impl Embed for i16
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for i32
impl Embed for i32
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for i64
impl Embed for i64
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for i128
impl Embed for i128
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl Embed for String
impl Embed for String
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl<T: Embed> Embed for &T
impl<T: Embed> Embed for &T
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Source§impl<T: Embed> Embed for Vec<T>
impl<T: Embed> Embed for Vec<T>
fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>
Implementors§
impl Embed for MockMultiTextDocument
Available on crate feature
test-utils only.impl Embed for MockTextDocument
Available on crate feature
test-utils only.