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§
Sourcefn embed(
&self,
request: EmbeddingRequest,
) -> impl Future<Output = Result<EmbeddingResponse, EmbeddingError>> + WasmCompatSend
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.