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}