Skip to main content

EmbeddingProvider

Trait EmbeddingProvider 

Source
pub trait EmbeddingProvider: WasmCompatSend + WasmCompatSync {
    // Required method
    fn embed(
        &self,
        request: EmbeddingRequest,
    ) -> impl Future<Output = Result<EmbeddingResponse, EmbeddingError>> + WasmCompatSend;
}
Expand description

Embedding provider trait. Implement this for providers that support text embeddings.

Kept separate from Provider because not all embedding models support chat completion and not all chat providers support embeddings. Implement both traits on a struct when a provider supports both capabilities.

Uses RPITIT (return position impl trait in trait) — Rust 2024 native async. Not object-safe by design; use generics <E: EmbeddingProvider> to compose.

§Example

use std::future::Future;
use neuron_types::*;

struct MyEmbeddingProvider;

impl EmbeddingProvider for MyEmbeddingProvider {
    fn embed(&self, request: EmbeddingRequest)
        -> impl Future<Output = Result<EmbeddingResponse, EmbeddingError>> + Send
    {
        async { todo!() }
    }
}

Required Methods§

Source

fn embed( &self, request: EmbeddingRequest, ) -> impl Future<Output = Result<EmbeddingResponse, EmbeddingError>> + WasmCompatSend

Send an embedding request and get vectors back.

Multiple input strings are batched into a single request. The returned embeddings vec is in the same order as request.input.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§