asimov/models/capabilities/embed.rs
1use crate::{error::Result, tokenizers::Tokenizer, Input};
2use async_trait::async_trait;
3
4/// Trait that defines the behavior of embedding models.
5#[async_trait]
6pub trait Embed: Send + Sync {
7 type Tokenizer: Tokenizer;
8 const DIM: u32;
9
10 /// Embed an object that implements the [`Embeddable`] trait.
11 async fn embed<I: Input + ?Sized>(&self, input: &I) -> Result<Vec<f32>>;
12}