Skip to main content

embedding/
embedding.rs

1use gemini_client_api::gemini::embed::GeminiEmbedding;
2use gemini_client_api::gemini::types::embedding::TaskType;
3use std::env;
4
5#[tokio::main]
6async fn main() {
7    // 1. Create the Gemini Embedding client
8    // Get your API key from https://aistudio.google.com/app/apikey
9    let api_key = env::var("GEMINI_API_KEY").expect("GEMINI_API_KEY must be set");
10    let embedder = GeminiEmbedding::new(api_key, "gemini-embedding-001")
11        .set_task_type(TaskType::RetrievalDocument)
12        // Optional: reduce dimension for Matryoshka Representation Learning
13        .set_output_dimensionality(256);
14
15    // 2. Generate embedding for a single text
16    let prompt = "Rust is a blazing fast and memory-efficient systems programming language.";
17    let response = embedder.embed_text(prompt).await.unwrap();
18
19    // 3. Print the embedding information
20    let embedding = response.embedding();
21    println!("Embedding generated for: {:?}", prompt);
22    println!("Total Dimensions: {}", embedding.dimension());
23    println!(
24        "First 5 values: {:?}",
25        &embedding.values()[..usize::min(embedding.dimension(), 5)]
26    );
27}