एंबेड करना

Gemini API, एम्बेडिंग मॉडल उपलब्ध कराता है. इनका इस्तेमाल करके, टेक्स्ट, इमेज, वीडियो, और अन्य कॉन्टेंट के लिए एम्बेडिंग जनरेट की जा सकती हैं. इसके बाद, इन एम्बेडिंग का इस्तेमाल सिमैंटिक सर्च, क्लासिफ़िकेशन, और क्लस्टरिंग जैसे कामों के लिए किया जा सकता है. इससे कीवर्ड पर आधारित तरीकों की तुलना में, ज़्यादा सटीक और कॉन्टेक्स्ट के हिसाब से नतीजे मिलते हैं.

नया मॉडल, gemini-embedding-2-preview, Gemini API में पहला मल्टीमॉडल एम्बेडिंग मॉडल है. यह टेक्स्ट, इमेज, वीडियो, ऑडियो, और दस्तावेज़ों को एक ही एम्बेडिंग स्पेस में मैप करता है. इससे 100 से ज़्यादा भाषाओं में अलग-अलग मोड में खोज, क्लासिफ़िकेशन, और क्लस्टरिंग की जा सकती है. ज़्यादा जानने के लिए, मल्टीमॉडल एम्बेडिंग सेक्शन देखें. सिर्फ़ टेक्स्ट के लिए, gemini-embedding-001 उपलब्ध रहेगा.

रिट्रीवल ऑगमेंटेड जनरेशन (आरएजी) सिस्टम बनाना, एआई प्रॉडक्ट के इस्तेमाल का एक सामान्य उदाहरण है. मॉडल के आउटपुट को बेहतर बनाने में एम्बेडिंग की अहम भूमिका होती है. इससे तथ्यों के सही होने की संभावना बढ़ जाती है. साथ ही, जवाब ज़्यादा सटीक और कॉन्टेक्स्ट के हिसाब से ज़्यादा जानकारी वाले होते हैं. अगर आपको मैनेज किया गया RAG सलूशन इस्तेमाल करना है, तो हमने फ़ाइल खोज टूल बनाया है. इससे RAG को मैनेज करना आसान हो जाता है और यह ज़्यादा किफ़ायती भी होता है.

डेटा को एंबेड करना

टेक्स्ट एम्बेडिंग जनरेट करने के लिए, embedContent तरीके का इस्तेमाल करें:

Python

from google import genai

client = genai.Client()

result = client.models.embed_content(
        model="gemini-embedding-001",
        contents="What is the meaning of life?"
)

print(result.embeddings)

JavaScript

import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({});

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-001',
        contents: 'What is the meaning of life?',
    });

    console.log(response.embeddings);
}

main();

ऐप पर जाएं

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    contents := []*genai.Content{
        genai.NewContentFromText("What is the meaning of life?", genai.RoleUser),
    }
    result, err := client.Models.EmbedContent(ctx,
        "gemini-embedding-001",
        contents,
        nil,
    )
    if err != nil {
        log.Fatal(err)
    }

    embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(embeddings))
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "model": "models/gemini-embedding-001",
        "content": {
        "parts": [{
            "text": "What is the meaning of life?"
        }]
        }
    }'

एक साथ कई हिस्सों के लिए एम्बेडिंग जनरेट की जा सकती हैं. इसके लिए, उन्हें स्ट्रिंग की सूची के तौर पर पास करें.

Python

from google import genai

client = genai.Client()

result = client.models.embed_content(
        model="gemini-embedding-001",
        contents= [
            "What is the meaning of life?",
            "What is the purpose of existence?",
            "How do I bake a cake?"
        ]
)

for embedding in result.embeddings:
    print(embedding)

JavaScript

import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({});

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-001',
        contents: [
            'What is the meaning of life?',
            'What is the purpose of existence?',
            'How do I bake a cake?'
        ],
    });

    console.log(response.embeddings);
}

main();

ऐप पर जाएं

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    contents := []*genai.Content{
        genai.NewContentFromText("What is the meaning of life?"),
        genai.NewContentFromText("How does photosynthesis work?"),
        genai.NewContentFromText("Tell me about the history of the internet."),
    }
    result, err := client.Models.EmbedContent(ctx,
        "gemini-embedding-001",
        contents,
        nil,
    )
    if err != nil {
        log.Fatal(err)
    }

    embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(embeddings))
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -d '{
    "content": {
        "parts": [
        {
            "text": "What is the meaning of life?"
        },
        {
            "text": "How much wood would a woodchuck chuck?"
        },
        {
            "text": "How does the brain work?"
        }
        ]
    },
    "taskType": "SEMANTIC_SIMILARITY"
    }'

परफ़ॉर्मेंस को बेहतर बनाने के लिए टास्क का टाइप तय करना

क्लासिफ़िकेशन से लेकर दस्तावेज़ खोजने तक, कई तरह के टास्क के लिए एम्बेडिंग का इस्तेमाल किया जा सकता है. सही टास्क टाइप तय करने से, एम्बेडिंग को बेहतर तरीके से ऑप्टिमाइज़ करने में मदद मिलती है. इससे सटीक नतीजे मिलते हैं और काम भी बेहतर तरीके से होता है. साथ काम करने वाले टास्क टाइप की पूरी सूची देखने के लिए, साथ काम करने वाले टास्क टाइप टेबल देखें.

यहां दिए गए उदाहरण में बताया गया है कि SEMANTIC_SIMILARITY का इस्तेमाल करके, यह कैसे पता लगाया जा सकता है कि टेक्स्ट की स्ट्रिंग का मतलब कितना मिलता-जुलता है.

Python

from google import genai
from google.genai import types
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

client = genai.Client()

texts = [
    "What is the meaning of life?",
    "What is the purpose of existence?",
    "How do I bake a cake?",
]

result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=texts,
    config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)

# Create a 3x3 table to show the similarity matrix
df = pd.DataFrame(
    cosine_similarity([e.values for e in result.embeddings]),
    index=texts,
    columns=texts,
)

print(df)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as cosineSimilarity from "compute-cosine-similarity";

async function main() {
    const ai = new GoogleGenAI({});

    const texts = [
        "What is the meaning of life?",
        "What is the purpose of existence?",
        "How do I bake a cake?",
    ];

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-001',
        contents: texts,
        taskType: 'SEMANTIC_SIMILARITY'
    });

    const embeddings = response.embeddings.map(e => e.values);

    for (let i = 0; i < texts.length; i++) {
        for (let j = i + 1; j < texts.length; j++) {
            const text1 = texts[i];
            const text2 = texts[j];
            const similarity = cosineSimilarity(embeddings[i], embeddings[j]);
            console.log(`Similarity between '${text1}' and '${text2}': ${similarity.toFixed(4)}`);
        }
    }
}

main();

ऐप पर जाएं

package main

import (
    "context"
    "fmt"
    "log"
    "math"

    "google.golang.org/genai"
)

// cosineSimilarity calculates the similarity between two vectors.
func cosineSimilarity(a, b []float32) (float64, error) {
    if len(a) != len(b) {
        return 0, fmt.Errorf("vectors must have the same length")
    }

    var dotProduct, aMagnitude, bMagnitude float64
    for i := 0; i < len(a); i++ {
        dotProduct += float64(a[i] * b[i])
        aMagnitude += float64(a[i] * a[i])
        bMagnitude += float64(b[i] * b[i])
    }

    if aMagnitude == 0 || bMagnitude == 0 {
        return 0, nil
    }

    return dotProduct / (math.Sqrt(aMagnitude) * math.Sqrt(bMagnitude)), nil
}

func main() {
    ctx := context.Background()
    client, _ := genai.NewClient(ctx, nil)
    defer client.Close()

    texts := []string{
        "What is the meaning of life?",
        "What is the purpose of existence?",
        "How do I bake a cake?",
    }

    var contents []*genai.Content
    for _, text := range texts {
        contents = append(contents, genai.NewContentFromText(text, genai.RoleUser))
    }

    result, _ := client.Models.EmbedContent(ctx,
        "gemini-embedding-001",
        contents,
        &genai.EmbedContentRequest{TaskType: genai.TaskTypeSemanticSimilarity},
    )

    embeddings := result.Embeddings

    for i := 0; i < len(texts); i++ {
        for j := i + 1; j < len(texts); j++ {
            similarity, _ := cosineSimilarity(embeddings[i].Values, embeddings[j].Values)
            fmt.Printf("Similarity between '%s' and '%s': %.4f\n", texts[i], texts[j], similarity)
        }
    }
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -d '{
    "taskType": "SEMANTIC_SIMILARITY",
    "content": {
        "parts": [
        {
            "text": "What is the meaning of life?"
        },
        {
            "text": "How much wood would a woodchuck chuck?"
        },
        {
            "text": "How does the brain work?"
        }
        ]
    }
    }'

कोड स्निपेट से पता चलेगा कि टेक्स्ट के अलग-अलग हिस्सों में कितनी समानता है.

इस्तेमाल किए जा सकने वाले टास्क टाइप

टास्क किस तरह का है ब्यौरा उदाहरण
SEMANTIC_SIMILARITY टेक्स्ट की समानता का आकलन करने के लिए, ऑप्टिमाइज़ किए गए एम्बेडिंग. सुझाव देने वाले सिस्टम, डुप्लीकेट कॉन्टेंट का पता लगाना
CLASSIFICATION एम्बेडिंग को ऑप्टिमाइज़ किया गया है, ताकि पहले से तय किए गए लेबल के हिसाब से टेक्स्ट को कैटगरी में बांटा जा सके. भावनाओं का विश्लेषण, स्पैम का पता लगाना
क्लस्टरिंग ये एम्बेडिंग, टेक्स्ट को उनकी समानता के आधार पर क्लस्टर करने के लिए ऑप्टिमाइज़ की जाती हैं. दस्तावेज़ व्यवस्थित करना, मार्केट रिसर्च, गड़बड़ी की पहचान करना
RETRIEVAL_DOCUMENT दस्तावेज़ खोजने के लिए ऑप्टिमाइज़ किए गए एम्बेडिंग. खोज के लिए लेखों, किताबों या वेब पेजों को इंडेक्स करना.
RETRIEVAL_QUERY सामान्य खोज क्वेरी के लिए ऑप्टिमाइज़ की गई एम्बेडिंग. क्वेरी के लिए RETRIEVAL_QUERY और वापस लाए जाने वाले दस्तावेज़ों के लिए RETRIEVAL_DOCUMENT का इस्तेमाल करें. कस्टम सर्च
CODE_RETRIEVAL_QUERY नैचुरल लैंग्वेज क्वेरी के आधार पर कोड ब्लॉक को वापस पाने के लिए, ऑप्टिमाइज़ की गई एम्बेडिंग. क्वेरी के लिए CODE_RETRIEVAL_QUERY और कोड ब्लॉक को वापस पाने के लिए RETRIEVAL_DOCUMENT का इस्तेमाल करें. कोड से जुड़े सुझाव और खोज
QUESTION_ANSWERING सवाल-जवाब वाले सिस्टम में सवालों के लिए एम्बेडिंग. इन्हें ऐसे दस्तावेज़ ढूंढने के लिए ऑप्टिमाइज़ किया जाता है जिनमें सवाल का जवाब दिया गया हो. सवाल पूछने के लिए QUESTION_ANSWERING और दस्तावेज़ों को वापस पाने के लिए RETRIEVAL_DOCUMENT का इस्तेमाल करें. Chatbox
FACT_VERIFICATION ऐसे स्टेटमेंट के लिए एम्बेडिंग जिनकी पुष्टि करनी है. साथ ही, ऐसे दस्तावेज़ों को वापस पाने के लिए ऑप्टिमाइज़ किया गया है जिनमें स्टेटमेंट के पक्ष या विपक्ष में सबूत मौजूद हैं. टारगेट किए गए टेक्स्ट के लिए FACT_VERIFICATION का इस्तेमाल करें; जिन दस्तावेज़ों को वापस पाना है उनके लिए RETRIEVAL_DOCUMENT का इस्तेमाल करें तथ्यों की जांच करने वाले ऑटोमेटेड सिस्टम

एम्बेड किए गए कॉन्टेंट के साइज़ को कंट्रोल करना

gemini-embedding-001 और gemini-embedding-2-preview, दोनों को Matryoshka Representation Learning (MRL) तकनीक का इस्तेमाल करके ट्रेन किया जाता है. यह तकनीक, मॉडल को ज़्यादा डाइमेंशन वाले एम्बेडिंग सीखने के बारे में बताती है. इन एम्बेडिंग में शुरुआती सेगमेंट (या प्रीफ़िक्स) होते हैं, जो एक ही डेटा के ज़्यादा काम के और आसान वर्शन होते हैं.

आउटपुट एम्बेडिंग वेक्टर के साइज़ को कंट्रोल करने के लिए, output_dimensionality पैरामीटर का इस्तेमाल करें. आउटपुट डाइमेंशनैलिटी को कम करने से, स्टोरेज स्पेस बचाया जा सकता है. साथ ही, डाउनस्ट्रीम ऐप्लिकेशन के लिए कंप्यूटेशनल क्षमता को बढ़ाया जा सकता है. हालांकि, इससे क्वालिटी में थोड़ा अंतर आ सकता है. डिफ़ॉल्ट रूप से, दोनों मॉडल 3072 डाइमेंशन वाली एम्बेडिंग आउटपुट करते हैं. हालांकि, स्टोरेज की जगह बचाने के लिए, इसकी क्वालिटी को कम किए बिना इसे छोटे साइज़ में काटा जा सकता है. हमारा सुझाव है कि आउटपुट डाइमेंशन के लिए 768, 1536 या 3072 का इस्तेमाल करें.

Python

from google import genai
from google.genai import types

client = genai.Client()

result = client.models.embed_content(
    model="gemini-embedding-001",
    contents="What is the meaning of life?",
    config=types.EmbedContentConfig(output_dimensionality=768)
)

[embedding_obj] = result.embeddings
embedding_length = len(embedding_obj.values)

print(f"Length of embedding: {embedding_length}")

JavaScript

import { GoogleGenAI } from "@google/genai";

async function main() {
    const ai = new GoogleGenAI({});

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-001',
        content: 'What is the meaning of life?',
        outputDimensionality: 768,
    });

    const embeddingLength = response.embedding.values.length;
    console.log(`Length of embedding: ${embeddingLength}`);
}

main();

ऐप पर जाएं

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    // The client uses Application Default Credentials.
    // Authenticate with 'gcloud auth application-default login'.
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    contents := []*genai.Content{
        genai.NewContentFromText("What is the meaning of life?", genai.RoleUser),
    }

    result, err := client.Models.EmbedContent(ctx,
        "gemini-embedding-001",
        contents,
        &genai.EmbedContentRequest{OutputDimensionality: 768},
    )
    if err != nil {
        log.Fatal(err)
    }

    embedding := result.Embeddings[0]
    embeddingLength := len(embedding.Values)
    fmt.Printf("Length of embedding: %d\n", embeddingLength)
}

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
    -H 'Content-Type: application/json' \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -d '{
        "content": {"parts":[{ "text": "What is the meaning of life?"}]},
        "output_dimensionality": 768
    }'

कोड स्निपेट से मिले आउटपुट का उदाहरण:

Length of embedding: 768

छोटे डाइमेंशन के लिए क्वालिटी बनाए रखना

3,072 डाइमेंशन वाली एम्बेडिंग को नॉर्मलाइज़ किया जाता है. नॉर्मलाइज़ की गई एम्बेडिंग, वेक्टर की दिशा की तुलना करके सिमैंटिक समानता का ज़्यादा सटीक पता लगाती हैं. इसके लिए, वेक्टर के मेग्नीट्यूड की तुलना नहीं की जाती. 768 और 1536 डाइमेंशन के साथ-साथ अन्य डाइमेंशन के लिए, आपको एम्बेडिंग को इस तरह से सामान्य करना होगा:

Python

import numpy as np
from numpy.linalg import norm

embedding_values_np = np.array(embedding_obj.values)
normed_embedding = embedding_values_np / np.linalg.norm(embedding_values_np)

print(f"Normed embedding length: {len(normed_embedding)}")
print(f"Norm of normed embedding: {np.linalg.norm(normed_embedding):.6f}") # Should be very close to 1

इस कोड स्निपेट का उदाहरण आउटपुट:

Normed embedding length: 768
Norm of normed embedding: 1.000000

यहां दी गई टेबल में, अलग-अलग डाइमेंशन के लिए MTEB स्कोर दिए गए हैं. MTEB स्कोर, एम्बेडिंग के लिए आम तौर पर इस्तेमाल किया जाने वाला बेंचमार्क है. खास तौर पर, नतीजे से पता चलता है कि परफ़ॉर्मेंस, एम्बेडिंग डाइमेंशन के साइज़ से जुड़ी नहीं होती. कम डाइमेंशन वाले मॉडल, ज़्यादा डाइमेंशन वाले मॉडल के मुकाबले बेहतर स्कोर हासिल करते हैं.

एमआरएल डाइमेंशन MTEB स्कोर
2048 68.16
1536 68.17
768 67.99
512 67.55
256 66.19
128 63.31

मल्टीमॉडल एंबेडिंग

gemini-embedding-2-preview मॉडल में टेक्स्ट, इमेज, वीडियो, ऑडियो, और दस्तावेज़ों के कॉन्टेंट को एक साथ इस्तेमाल किया जा सकता है. सभी मोडेलिटी को एक ही एम्बेडिंग स्पेस में मैप किया जाता है. इससे अलग-अलग मोडेलिटी में खोज करने और उनकी तुलना करने की सुविधा मिलती है.

इस्तेमाल की जा सकने वाली सुविधाएं और सीमाएं

इनपुट के लिए, कुल मिलाकर ज़्यादा से ज़्यादा 8,192 टोकन इस्तेमाल किए जा सकते हैं.

मोडेलिटी खासियतें और सीमाएं
टेक्स्ट इसमें ज़्यादा से ज़्यादा 8,192 टोकन इस्तेमाल किए जा सकते हैं.
इमेज हर अनुरोध में ज़्यादा से ज़्यादा छह इमेज शामिल की जा सकती हैं. इस्तेमाल किए जा सकने वाले फ़ॉर्मैट: PNG, JPEG.
ऑडियो ज़्यादा से ज़्यादा 80 सेकंड का हो. इस्तेमाल किए जा सकने वाले फ़ॉर्मैट: MP3, WAV.
वीडियो ज़्यादा से ज़्यादा 128 सेकंड का हो सकता है. इस्तेमाल किए जा सकने वाले फ़ॉर्मैट: MP4, MOV, इस्तेमाल किए जा सकने वाले कोडेक: H264, H265, AV1, VP9
दस्तावेज़ (PDF) ज़्यादा से ज़्यादा छह पेज.

इमेज एम्बेड करना

यहां दिए गए उदाहरण में, gemini-embedding-2-preview का इस्तेमाल करके इमेज एम्बेड करने का तरीका बताया गया है.

इमेज को इनलाइन डेटा के तौर पर या Files API के ज़रिए अपलोड की गई फ़ाइलों के तौर पर उपलब्ध कराया जा सकता है.

Python

from google import genai
from google.genai import types

with open('example.png', 'rb') as f:
    image_bytes = f.read()

client = genai.Client()

result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/png',
        ),
    ]
)

print(result.embeddings)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {
    const ai = new GoogleGenAI({});

    const imgBase64 = fs.readFileSync("example.png", { encoding: "base64" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-2-preview',
        contents: [{
            inlineData: {
                mimeType: 'image/png',
                data: imgBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

REST

IMG_PATH="/path/to/your/image.png"
IMG_BASE64=$(base64 -w0 "${IMG_PATH}")

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "content": {
            "parts": [{
                "inline_data": {
                    "mime_type": "image/png",
                    "data": "'"${IMG_BASE64}"'"
                }
            }]
        }
    }'

एग्रीगेशन को एम्बेड करना

मल्टीमॉडल कॉन्टेंट के साथ काम करते समय, इनपुट को स्ट्रक्चर करने का तरीका, एम्बेडिंग आउटपुट पर असर डालता है:

  • कॉन्टेंट की एक एंट्री: कॉन्टेंट की एक एंट्री में कई हिस्से (उदाहरण के लिए, टेक्स्ट और इमेज) सबमिट करने पर, उस एंट्री में मौजूद सभी मोड के लिए एक एग्रीगेटेड एम्बेडिंग जनरेट होती है.
  • एक से ज़्यादा एंट्री: contents ऐरे में एक से ज़्यादा एंट्री भेजने पर, हर एंट्री के लिए अलग-अलग एम्बेडिंग मिलती हैं.
  • पोस्ट-लेवल पर जानकारी देना: सोशल मीडिया पोस्ट जैसे जटिल ऑब्जेक्ट के लिए, जिनमें कई मीडिया आइटम शामिल होते हैं, हमारा सुझाव है कि आप अलग-अलग एम्बेडिंग को एग्रीगेट करें. उदाहरण के लिए, औसत निकालकर पोस्ट-लेवल पर जानकारी दें.

यहां दिए गए उदाहरण में, टेक्स्ट और इमेज के इनपुट के लिए एक एग्रीगेटेड एम्बेडिंग बनाने का तरीका बताया गया है. एक से ज़्यादा इनपुट को एक साथ इस्तेमाल करने के लिए, parts फ़ील्ड का इस्तेमाल करें:

Python

from google import genai
from google.genai import types

with open('dog.png', 'rb') as f:
    image_bytes = f.read()

result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        types.Content(
            parts=[
                types.Part(text="An image of a dog"),
                types.Part.from_bytes(
                    data=image_bytes,
                    mime_type='image/png',
                )
            ]
        )
    ]
)

# This produces one embedding
for embedding in result.embeddings:
    print(embedding.values)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {
    const ai = new GoogleGenAI({});

    const imgBase64 = fs.readFileSync("dog.png", { encoding: "base64" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-2-preview',
        contents: {
            parts: [
                { text: 'An image of a dog' },
                { inlineData: { mimeType: 'image/png', data: imgBase64 } },
            ],
        },
    });

    console.log(response.embeddings);
}

main();

REST

IMG_PATH="/path/to/your/dog.png"
IMG_BASE64=$(base64 -w0 "${IMG_PATH}")

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "content": {
            "parts": [
                {"text": "An image of a dog"},
                {
                    "inline_data": {
                        "mime_type": "image/png",
                        "data": "'"${IMG_BASE64}"'"
                    }
                }
            ]
        }
    }'

दूसरी ओर, इस उदाहरण में एंबेड करने के एक ही कॉल में कई एंबेडिंग बनाई गई हैं:

Python

from google import genai
from google.genai import types

with open('dog.png', 'rb') as f:
    image_bytes = f.read()

result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        "The dog is cute",
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/png',
        ),
    ]
)

# This produces two embeddings
for embedding in result.embeddings:
    print(embedding.values)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {
    const ai = new GoogleGenAI({});

    const imgBase64 = fs.readFileSync("dog.png", { encoding: "base64" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-2-preview',
        contents: [
            'The dog is cute',
            {
                inlineData: {
                    mimeType: 'image/png',
                    data: imgBase64,
                },
            },
        ],
    });

    console.log(response.embeddings);
}

main();

REST

IMG_PATH="/path/to/your/dog.png"
IMG_BASE64=$(base64 -w0 "${IMG_PATH}")

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:batchEmbedContents" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "requests": [
            {
                "model": "models/gemini-embedding-2-preview",
                "content": {"parts": [{"text": "The dog is cute"}]}
            },
            {
                "model": "models/gemini-embedding-2-preview",
                "content": {"parts": [{"inline_data": {"mime_type": "image/png", "data": "'"${IMG_BASE64}"'"}}]}
            }
        ]
    }'

ऑडियो एम्बेड करना

यहां दिए गए उदाहरण में, gemini-embedding-2-preview का इस्तेमाल करके ऑडियो फ़ाइल को एम्बेड करने का तरीका बताया गया है.

ऑडियो फ़ाइलों को इनलाइन डेटा के तौर पर या Files API के ज़रिए अपलोड की गई फ़ाइलों के तौर पर उपलब्ध कराया जा सकता है.

Python

from google import genai
from google.genai import types

with open('example.mp3', 'rb') as f:
    audio_bytes = f.read()

client = genai.Client()

result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        types.Part.from_bytes(
            data=audio_bytes,
            mime_type='audio/mpeg',
        ),
    ]
)

print(result.embeddings)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {
    const ai = new GoogleGenAI({});

    const audioBase64 = fs.readFileSync("example.mp3", { encoding: "base64" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-2-preview',
        contents: [{
            inlineData: {
                mimeType: 'audio/mpeg',
                data: audioBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

REST

AUDIO_PATH="/path/to/your/example.mp3"
AUDIO_BASE64=$(base64 -w0 "${AUDIO_PATH}")

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "content": {
            "parts": [{
                "inline_data": {
                    "mime_type": "audio/mpeg",
                    "data": "'"${AUDIO_BASE64}"'"
                }
            }]
        }
    }'

वीडियो एम्बेड करना

यहां दिए गए उदाहरण में, gemini-embedding-2-preview का इस्तेमाल करके वीडियो एम्बेड करने का तरीका बताया गया है.

वीडियो, इनलाइन डेटा के तौर पर या Files API के ज़रिए अपलोड की गई फ़ाइलों के तौर पर दिए जा सकते हैं.

Python

from google import genai
from google.genai import types

client = genai.Client()

with open('example.mp4', 'rb') as f:
    video_bytes = f.read()

result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        types.Part.from_bytes(
            data=video_bytes,
            mime_type='video/mp4',
        ),
    ]
)

print(result.embeddings[0].values)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {
    const ai = new GoogleGenAI({});

    const videoBase64 = fs.readFileSync("example.mp4", { encoding: "base64" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-2-preview',
        contents: [{
            inlineData: {
                mimeType: 'video/mp4',
                data: videoBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

REST

VIDEO_PATH="/path/to/your/video.mp4"
VIDEO_BASE64=$(base64 -w0 "${VIDEO_PATH}")

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "content": {
            "parts": [{
                "inline_data": {
                    "mime_type": "video/mp4",
                    "data": "'"${VIDEO_BASE64}"'"
                }
            }]
        }
    }'

अगर आपको 128 सेकंड से ज़्यादा अवधि के वीडियो एम्बेड करने हैं, तो वीडियो को ओवरलैप होने वाले सेगमेंट में बांटें. इसके बाद, उन सेगमेंट को अलग-अलग एम्बेड करें.

दस्तावेज़ एम्बेड करना

PDF फ़ॉर्मैट में मौजूद दस्तावेज़ों को सीधे तौर पर एम्बेड किया जा सकता है. यह मॉडल, हर पेज के विज़ुअल और टेक्स्ट कॉन्टेंट को प्रोसेस करता है.

पीडीएफ़ को इनलाइन डेटा के तौर पर या Files API के ज़रिए अपलोड की गई फ़ाइलों के तौर पर उपलब्ध कराया जा सकता है.

Python

from google import genai
from google.genai import types

with open('example.pdf', 'rb') as f:
    pdf_bytes = f.read()

client = genai.Client()

result = client.models.embed_content(
    model='gemini-embedding-2-preview',
    contents=[
        types.Part.from_bytes(
            data=pdf_bytes,
            mime_type='application/pdf',
        ),
    ]
)

print(result.embeddings)

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {
    const ai = new GoogleGenAI({});

    const pdfBase64 = fs.readFileSync("example.pdf", { encoding: "base64" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-2-preview',
        contents: [{
            inlineData: {
                mimeType: 'application/pdf',
                data: pdfBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

REST

PDF_PATH="/path/to/your/example.pdf"
PDF_BASE64=$(base64 -w0 "${PDF_PATH}")

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:embedContent" \
    -H "Content-Type: application/json" \
    -H "x-goog-api-key: ${GEMINI_API_KEY}" \
    -d '{
        "content": {
            "parts": [{
                "inline_data": {
                    "mime_type": "application/pdf",
                    "data": "'"${PDF_BASE64}"'"
                }
            }]
        }
    }'

उपयोग के उदाहरण

टेक्स्ट एम्बेडिंग, एआई के इस्तेमाल के कई सामान्य उदाहरणों के लिए ज़रूरी होती हैं. जैसे:

एम्बेड किए गए डेटा को सेव करना

एम्बेडिंग को प्रोडक्शन में ले जाते समय, वेक्टर डेटाबेस का इस्तेमाल करना आम बात है. इससे ज़्यादा डाइमेंशन वाली एम्बेडिंग को आसानी से सेव, इंडेक्स, और वापस पाया जा सकता है. Google Cloud, मैनेज की गई डेटा सेवाएं उपलब्ध कराता है. इनका इस्तेमाल इस काम के लिए किया जा सकता है. इनमें BigQuery, AlloyDB, और Cloud SQL शामिल हैं.

यहाँ दिए गए ट्यूटोरियल में, Gemini Embedding के साथ तीसरे पक्ष के अन्य वेक्टर डेटाबेस इस्तेमाल करने का तरीका बताया गया है.

मॉडल के वर्शन

Gemini Embedding 2 की झलक

प्रॉपर्टी ब्यौरा
मॉडल कोड

Gemini API

gemini-embedding-2-preview

इस्तेमाल किए जा सकने वाले डेटा टाइप

इनपुट

टेक्स्ट, इमेज, वीडियो, ऑडियो, PDF

आउटपुट

टेक्स्ट एम्बेडिंग

टोकन की सीमाएं[*]

इनपुट टोकन की सीमा

8,192

आउटपुट डाइमेंशन का साइज़

लचीला, इन साइज़ के साथ काम करता है: 128 - 3072, सुझाया गया साइज़: 768, 1536, 3072

वर्शन
ज़्यादा जानकारी के लिए, मॉडल वर्शन के पैटर्न पढ़ें.
  • झलक देखें: gemini-embedding-2-preview
नया अपडेट नवंबर 2025

Gemini Embedding

प्रॉपर्टी ब्यौरा
मॉडल कोड

Gemini API

gemini-embedding-001

इस्तेमाल किए जा सकने वाले डेटा टाइप

इनपुट

टेक्स्ट

आउटपुट

टेक्स्ट एम्बेडिंग

टोकन की सीमाएं[*]

इनपुट टोकन की सीमा

2,048

आउटपुट डाइमेंशन का साइज़

लचीला, इन साइज़ के साथ काम करता है: 128 - 3072, सुझाया गया साइज़: 768, 1536, 3072

वर्शन
ज़्यादा जानकारी के लिए, मॉडल वर्शन के पैटर्न पढ़ें.
  • स्थिर: gemini-embedding-001
नया अपडेट जून 2025

काम न करने वाले Embeddings मॉडल के बारे में जानने के लिए, Deprecations पेज पर जाएं

gemini-embedding-001 से माइग्रेट करना

gemini-embedding-001 और gemini-embedding-2-preview के बीच एम्बेडिंग स्पेस काम नहीं करते. इसका मतलब है कि एक मॉडल से जनरेट किए गए एम्बेडिंग की तुलना, दूसरे मॉडल से जनरेट किए गए एम्बेडिंग से सीधे तौर पर नहीं की जा सकती. gemini-embedding-2-preview पर अपग्रेड करने पर, आपको अपना मौजूदा डेटा फिर से एम्बेड करना होगा.

बैच एम्बेड करना

अगर आपको जवाब मिलने में देरी से कोई समस्या नहीं है, तो Gemini Embeddings मॉडल के साथ Batch API का इस्तेमाल करें. इससे, डिफ़ॉल्ट एम्बेडिंग की कीमत के 50% पर ज़्यादा थ्रूपुट मिलता है. Batch API की कुकबुक में, इसका इस्तेमाल शुरू करने के उदाहरण देखें.

ज़िम्मेदारी के साथ इस्तेमाल करने के बारे में सूचना

जनरेटिव एआई मॉडल नया कॉन्टेंट बनाते हैं. हालांकि, Gemini Embedding मॉडल का मकसद सिर्फ़ आपके इनपुट डेटा के फ़ॉर्मैट को संख्यात्मक रूप में बदलना है. Google, एम्बेडिंग मॉडल उपलब्ध कराने के लिए ज़िम्मेदार है. यह मॉडल, आपके इनपुट डेटा के फ़ॉर्मैट को अनुरोध किए गए संख्यात्मक फ़ॉर्मैट में बदलता है. हालांकि, उपयोगकर्ता अपने इनपुट किए गए डेटा और उससे मिलने वाली एम्बेडिंग के लिए पूरी तरह से ज़िम्मेदार होते हैं. Gemini Embedding मॉडल का इस्तेमाल करने का मतलब है कि आपने पुष्टि की है कि आपके पास अपलोड किए गए कॉन्टेंट को इस्तेमाल करने के लिए ज़रूरी अधिकार हैं. ऐसा कोई कॉन्टेंट जनरेट न करें जिससे किसी की बौद्धिक संपत्ति या निजता के अधिकारों का उल्लंघन होता हो. इस सेवा के इस्तेमाल पर, हमारी इस्तेमाल पर पाबंदी से जुड़ी नीति और Google की सेवा की शर्तें लागू होती हैं.

एम्बेडिंग का इस्तेमाल करके ऐप्लिकेशन बनाना शुरू करना

मॉडल की क्षमताओं के बारे में जानने के लिए, एम्बेडिंग की क्विकस्टार्ट नोटबुक देखें. साथ ही, यह भी जानें कि एम्बेडिंग को अपनी पसंद के मुताबिक कैसे बनाया और विज़ुअलाइज़ किया जा सकता है.