Skip to main content

encoderfile/common/
embedding.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use utoipa::ToSchema;
5
6#[derive(Debug, Serialize, Deserialize, ToSchema, JsonSchema)]
7pub struct EmbeddingRequest {
8    pub inputs: Vec<String>,
9    #[serde(default)]
10    pub metadata: Option<HashMap<String, String>>,
11}
12
13impl super::FromCliInput for EmbeddingRequest {
14    fn from_cli_input(inputs: Vec<String>) -> Self {
15        Self {
16            inputs,
17            metadata: Some(HashMap::default()),
18        }
19    }
20}
21
22#[derive(Debug, Serialize, Deserialize, ToSchema, JsonSchema, utoipa::ToResponse)]
23pub struct EmbeddingResponse {
24    pub results: Vec<TokenEmbeddingSequence>,
25    pub model_id: String,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub metadata: Option<HashMap<String, String>>,
28}
29
30#[derive(Debug, Serialize, Deserialize, ToSchema, JsonSchema)]
31pub struct TokenEmbeddingSequence {
32    pub embeddings: Vec<TokenEmbedding>,
33}
34
35#[derive(Debug, Serialize, Deserialize, ToSchema, JsonSchema)]
36pub struct TokenEmbedding {
37    pub embedding: Vec<f32>,
38    pub token_info: Option<super::token::TokenInfo>,
39}