a3s_code_core/embedding/provider.rs
1use super::{EmbeddingBatchRequest, EmbeddingBatchResponse, EmbeddingProviderDescriptor};
2use async_trait::async_trait;
3use tokio_util::sync::CancellationToken;
4
5/// Host-owned source of embedding vectors.
6///
7/// Implementations receive only inputs already admitted by the caller. They
8/// must honor cancellation and return one vector for each input identifier.
9#[async_trait]
10pub trait EmbeddingProvider: Send + Sync {
11 /// Descriptor captured when a Code embedding generation is constructed.
12 fn descriptor(&self) -> EmbeddingProviderDescriptor;
13
14 /// Embed one executor-bounded batch.
15 async fn embed(
16 &self,
17 request: EmbeddingBatchRequest,
18 cancellation: CancellationToken,
19 ) -> Result<EmbeddingBatchResponse, super::EmbeddingProviderError>;
20}