Skip to main content

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}