ai_sdk_provider/embedding_model/
embed_response.rs

1use crate::SharedHeaders;
2use crate::SharedProviderMetadata;
3use serde::{Deserialize, Serialize};
4
5/// An embedding is a vector, i.e. an array of numbers.
6/// It is e.g. used to represent a text as a vector of word embeddings.
7pub type Embedding = Vec<f32>;
8
9/// Response from the embedding model
10#[derive(Debug, Clone, PartialEq)]
11pub struct EmbedResponse {
12    /// Generated embeddings. They are in the same order as the input values.
13    pub embeddings: Vec<Embedding>,
14
15    /// Token usage. We only have input tokens for embeddings.
16    pub usage: Option<EmbeddingUsage>,
17
18    /// Additional provider-specific metadata. They are passed through
19    /// from the provider to the AI SDK and enable provider-specific
20    /// results that can be fully encapsulated in the provider.
21    pub provider_metadata: Option<SharedProviderMetadata>,
22
23    /// Optional response information for debugging purposes.
24    pub response: Option<ResponseInfo>,
25}
26
27/// Token usage information for embeddings
28#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
29pub struct EmbeddingUsage {
30    /// Number of tokens used
31    pub tokens: u32,
32}
33
34/// Response metadata for debugging
35#[derive(Debug, Clone, PartialEq)]
36pub struct ResponseInfo {
37    /// Response headers
38    pub headers: Option<SharedHeaders>,
39
40    /// The response body (for debugging)
41    pub body: Option<serde_json::Value>,
42}