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>`] so
11/// any embedding provider can be plugged directly into pipeline / dag / worker
12/// flows.
13#[async_trait]
14pub trait Provider: rskit_provider::RequestResponse<EmbedRequest, EmbedResponse> {
15    /// Generate embeddings for one request.
16    async fn embed(&self, req: EmbedRequest) -> AppResult<EmbedResponse>;
17
18    /// Generate embeddings for a caller-controlled batch of requests.
19    async fn embed_batch(&self, reqs: Vec<EmbedRequest>) -> AppResult<Vec<EmbedResponse>>;
20}