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.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
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 String
impl Embed for String
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<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.