Skip to main content

Embed

Trait Embed 

Source
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§

Source

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

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for String

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for Value

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for bool

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for char

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for f32

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for f64

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for i8

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for i16

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for i32

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for i64

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl Embed for i128

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl<T: Embed> Embed for &T

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Source§

impl<T: Embed> Embed for Vec<T>

Source§

fn embed(&self, embedder: &mut TextEmbedder) -> Result<(), EmbedError>

Implementors§

Source§

impl Embed for MockMultiTextDocument

Available on crate feature test-utils only.
Source§

impl Embed for MockTextDocument

Available on crate feature test-utils only.
Source§

impl Embed for ToolSchema