Skip to main content

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}