rskit_embedding/provider.rs
1//! Embedding provider trait definition.
2
3use async_trait::async_trait;
4use rskit_errors::AppResult;
5
6use crate::{EmbedRequest, EmbedResponse};
7
8/// Trait for canonical multimodal embedding providers.
9///
10/// Extends [`rskit_provider::RequestResponse<EmbedRequest, EmbedResponse>`]
11/// so any embedding provider can be plugged directly into pipeline / dag / worker flows.
12#[async_trait]
13pub trait Provider: rskit_provider::RequestResponse<EmbedRequest, EmbedResponse> {
14 /// Generate embeddings for one request.
15 async fn embed(&self, req: EmbedRequest) -> AppResult<EmbedResponse>;
16
17 /// Generate embeddings for a caller-controlled batch of requests.
18 async fn embed_batch(&self, reqs: Vec<EmbedRequest>) -> AppResult<Vec<EmbedResponse>>;
19}