Skip to main content

gproxy_protocol/gemini/embeddings/
types.rs

1use serde::{Deserialize, Serialize};
2
3pub use crate::gemini::count_tokens::types::{GeminiContent, HttpMethod};
4pub use crate::gemini::types::{GeminiApiError, GeminiApiErrorResponse, GeminiResponseHeaders};
5
6/// A list of floats representing one embedding vector.
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8pub struct GeminiContentEmbedding {
9    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10    pub values: Vec<f64>,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub shape: Option<Vec<i32>>,
13}
14
15/// Type of task for which embeddings will be used.
16#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
17pub enum GeminiTaskType {
18    #[serde(rename = "TASK_TYPE_UNSPECIFIED")]
19    TaskTypeUnspecified,
20    #[serde(rename = "RETRIEVAL_QUERY")]
21    RetrievalQuery,
22    #[serde(rename = "RETRIEVAL_DOCUMENT")]
23    RetrievalDocument,
24    #[serde(rename = "SEMANTIC_SIMILARITY")]
25    SemanticSimilarity,
26    #[serde(rename = "CLASSIFICATION")]
27    Classification,
28    #[serde(rename = "CLUSTERING")]
29    Clustering,
30    #[serde(rename = "QUESTION_ANSWERING")]
31    QuestionAnswering,
32    #[serde(rename = "FACT_VERIFICATION")]
33    FactVerification,
34    #[serde(rename = "CODE_RETRIEVAL_QUERY")]
35    CodeRetrievalQuery,
36}