एंबेड करना

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

नया मॉडल, gemini-embedding-2, 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-2",
        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-2',
        contents: 'What is the meaning of life?',
    });

    console.log(response.embeddings);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.types.EmbedContentResponse;

Client client = new Client();

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", "What is the meaning of life?", null);

System.out.println(response.embeddings().orElse(null));

ऐप पर जाएं

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-2",
        contents,
        nil,
    )
    if err != nil {
        log.Fatal(err)
    }

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

आराम का समय

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

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

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

Embeddings 2 की मदद से किए जा सकने वाले टास्क के टाइप

gemini-embedding-2 के साथ सिर्फ़ टेक्स्ट वाले टास्क के लिए, हमारा सुझाव है कि आप अपने प्रॉम्प्ट में टास्क से जुड़े निर्देश जोड़ें. इसके लिए, क्वेरी और दस्तावेज़ को सही टास्क प्रीफ़िक्स के साथ फ़ॉर्मैट करना होगा.

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

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

जानकारी वापस पाने के इस्तेमाल के उदाहरण (असिमेट्रिक फ़ॉर्मैट)

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

इस्तेमाल का उदाहरण क्वेरी का स्ट्रक्चर दस्तावेज़ का स्ट्रक्चर
सर्च क्वेरी task: search result | query: {content} title: {title} | text: {content}
अगर कोई टाइटल नहीं है, तो title: none का इस्तेमाल करें.
सवाल-जवाब की सुविधा task: question answering | query: {content} title: {title} | text: {content}
तथ्यों की जांच करना task: fact checking | query: {content} title: {title} | text: {content}
कोड की पहचान करना task: code retrieval | query: {content} title: {title} | text: {content}

इस्तेमाल के उदाहरण

Python

# Generate embedding for a task's query. Use your correct task here:
def prepare_query(query):
    # return f"task: question answering | query: {query}"
    # return f"task: fact checking | query: {query}"
    # return f"task: code retrieval | query: {query}"
    return f"task: search result | query: {query}"

# Generate embedding for document of an asymmetric retrieval task:
def prepare_document(content, title=None):
    if title is None:
        title = "none"
    return f"title: {title} | text: {content}"

सिंगल-इनपुट के इस्तेमाल के उदाहरण (सिमेट्रिक फ़ॉर्मैट)

सिमेट्रिक इस्तेमाल के उदाहरणों में, एक ही टास्क के लिए, क्वेरी और दस्तावेज़ के लिए एक ही फ़ॉर्मैट का इस्तेमाल करें.

इस्तेमाल का उदाहरण इनपुट स्ट्रक्चर
कैटगरी task: classification | query: {content}
गुच्छ task: clustering | query: {content}
मिलते-जुलते मतलब वाले वाक्यांशों की तुलना करना task: sentence similarity | query: {content}
इसका इस्तेमाल, खोजने या वापस पाने के लिए न करें. इसका मकसद, टेक्स्ट के बीच सिमैंटिक समानता का पता लगाना है.

इस्तेमाल के उदाहरण

Python

# Generate embedding for query & document of your task.
def prepare_query_and_document(content):
    # return f'task: clustering | query: {content}'
    # return f'task: sentence similarity | query: {content}'
    return f'task: classification | query: {content}'

यह ज़रूरी है कि टास्क का इस्तेमाल लगातार किया जाए. उदाहरण के लिए, अगर दस्तावेज़ों को f'task: classification | query: {content}' के साथ एम्बेड किया गया है, तो क्वेरी को भी इस टास्क फ़ॉर्मैट के मुताबिक एम्बेड किया जाना चाहिए.

Embeddings 1 के साथ टास्क के टाइप

gemini-embedding-001 के लिए, embedContent तरीके में task_type को तय किया जा सकता है. इस्तेमाल किए जा सकने वाले टास्क टाइप की पूरी सूची देखने के लिए, इस्तेमाल किए जा सकने वाले टास्क टाइप टेबल देखें.

यहां दिए गए उदाहरण में, 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";
// npm i compute-cosine-similarity
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,
        config: { 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();

Java

import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.types.ContentEmbedding;
import com.google.genai.types.EmbedContentConfig;
import com.google.genai.types.EmbedContentResponse;
import java.util.List;

Client client = new Client();

List<String> texts =
    Arrays.asList(
        "What is the meaning of life?",
        "What is the purpose of existence?",
        "How do I bake a cake?");

EmbedContentConfig config =
    EmbedContentConfig.builder().taskType("SEMANTIC_SIMILARITY").build();

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-001", texts, config);

List<ContentEmbedding> embeddings = response.embeddings().get();

for (int i = 0; i < texts.size(); i++) {
  for (int j = i + 1; j < texts.size(); j++) {
    List<Float> v1 = embeddings.get(i).values().get();
    List<Float> v2 = embeddings.get(j).values().get();
    double dotProduct = 0.0;
    double normA = 0.0;
    double normB = 0.0;
    for (int k = 0; k < v1.size(); k++) {
      dotProduct += v1.get(k) * v2.get(k);
      normA += v1.get(k) * v1.get(k);
      normB += v2.get(k) * v2.get(k);
    }
    double similarity = dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
    System.out.printf(
        "Similarity between '%s' and '%s': %.4f%n", texts.get(i), texts.get(j), similarity);
  }
}

ऐप पर जाएं

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)
        }
    }
}

आराम का समय

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?"
        }
        ]
    }
    }'

कोड स्निपेट से पता चलेगा कि टेक्स्ट के अलग-अलग हिस्से, एक-दूसरे से कितने मिलते-जुलते हैं.

टास्क के टाइप

gemini-embedding-001 के लिए, इस तरह के टास्क इस्तेमाल किए जा सकते हैं:

टास्क किस तरह का है ब्यौरा उदाहरण
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 का इस्तेमाल करें. चैटबॉक्स
FACT_VERIFICATION जिन स्टेटमेंट की पुष्टि करनी है उनके लिए एंबेडिंग. इन्हें ऐसे दस्तावेज़ों को वापस पाने के लिए ऑप्टिमाइज़ किया गया है जिनमें स्टेटमेंट के पक्ष या विपक्ष में सबूत मौजूद हों. टारगेट टेक्स्ट के लिए FACT_VERIFICATION का इस्तेमाल करें; दस्तावेज़ों को वापस पाने के लिए RETRIEVAL_DOCUMENT का इस्तेमाल करें तथ्यों की जांच करने वाले ऑटोमेटेड सिस्टम

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

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

आउटपुट एंबेडिंग वेक्टर के साइज़ को कंट्रोल करने के लिए, 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-2",
    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-2',
        contents: 'What is the meaning of life?',
        config: { outputDimensionality: 768 },
    });

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

main();

Java

import com.google.genai.Client;
import com.google.genai.types.ContentEmbedding;
import com.google.genai.types.EmbedContentConfig;
import com.google.genai.types.EmbedContentResponse;

Client client = new Client();

EmbedContentConfig config =
    EmbedContentConfig.builder().outputDimensionality(768).build();

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", "What is the meaning of life?", config);

ContentEmbedding embeddingObj = response.embeddings().get().get(0);
int embeddingLength = embeddingObj.values().get().size();

System.out.println("Length of embedding: " + embeddingLength);

ऐप पर जाएं

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-2",
        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)
}

आराम का समय

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2: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

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

डिफ़ॉल्ट 3072-डाइमेंशन एंबेडिंग हमेशा नॉर्मलाइज़ होती हैं. हालांकि, Gemini Embedding 2, ट्रंकेट किए गए डाइमेंशन (जैसे, 768, 1536) को भी अपने-आप नॉर्मलाइज़ करता है. इससे यह पक्का होता है कि सिमैंटिक समानता का हिसाब, मैग्नीट्यूड के बजाय वेक्टर डायरेक्शन के ज़रिए लगाया जाए. इससे ज़्यादा सटीक नतीजे मिलते हैं.

पुराने मॉडल: अगर gemini-embedding-001 का इस्तेमाल किया जा रहा है, तो आपको 3072 के अलावा अन्य डाइमेंशन को मैन्युअल तरीके से नॉर्मलाइज़ करना होगा. इसके लिए, यह तरीका अपनाएं:

Python

import numpy as np
from numpy.linalg import norm

# Only for embeddings from `gemini-embedding-001`
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 स्कोर (Gemini Embedding 001)
2048 68.16
1536 68.17
768 67.99
512 67.55
256 66.19
128 63.31

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

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

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

इनपुट टोकन की कुल सीमा 8,192 टोकन है.

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

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

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

इमेज को इनलाइन डेटा के तौर पर या 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',
    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',
        contents: [{
            inlineData: {
                mimeType: 'image/png',
                data: imgBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.EmbedContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;

Client client = new Client();

byte[] imageBytes = Files.readAllBytes(Paths.get("example.png"));

Content content = Content.fromParts(Part.fromBytes(imageBytes, "image/png"));

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", content, null);

System.out.println(response.embeddings().orElse(null));

आराम का समय

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2: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 पैरामीटर में सीधे तौर पर एक से ज़्यादा इनपुट जोड़ने पर, सभी इनपुट के लिए एक एग्रीगेट की गई एंबेडिंग जनरेट होती है.
  • एक से ज़्यादा Content ऑब्जेक्ट (अलग-अलग): हर इनपुट को Content ऑब्जेक्ट में रैप करने और उन्हें contents पैरामीटर में पास करने पर, हर एंट्री के लिए अलग-अलग एंबेडिंग मिलती हैं.
  • पोस्ट-लेवल रिप्रज़ेंटेशन: सोशल मीडिया पोस्ट जैसे जटिल ऑब्जेक्ट के लिए, जिनमें कई मीडिया आइटम शामिल होते हैं, हमारा सुझाव है कि आप अलग-अलग एंबेडिंग को एग्रीगेट करें (उदाहरण के लिए, औसत निकालकर), ताकि एक जैसा पोस्ट-लेवल रिप्रज़ेंटेशन बनाया जा सके.

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

Python

from google import genai
from google.genai import types

client = genai.Client()

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

result = client.models.embed_content(
    model='gemini-embedding-2',
    contents=[
        "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',
        contents: [
            'An image of a dog',
            {
                inlineData: {
                    mimeType: 'image/png',
                    data: imgBase64,
                },
            },
        ],
    });

    // This produces one embedding
    for (const embedding of response.embeddings) {
        console.log(embedding.values);
    }
}

main();

Java

import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.ContentEmbedding;
import com.google.genai.types.EmbedContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collections;

Client client = new Client();

byte[] imageBytes = Files.readAllBytes(Paths.get("dog.png"));

Content content =
    Content.fromParts(
        Part.fromText("An image of a dog"),
        Part.fromBytes(imageBytes, "image/png"));

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", content, null);

// This produces one embedding
for (ContentEmbedding embedding : response.embeddings().orElse(Collections.emptyList())) {
  System.out.println(embedding.values().orElse(Collections.emptyList()));
}

आराम का समय

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2: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}"'"
                    }
                }
            ]
        }
    }'

वहीं, अगर contents पैरामीटर में Content ऑब्जेक्ट का इस्तेमाल किया जाता है, तो यह अलग-अलग एंबेडिंग दिखाता है. इस उदाहरण में, एक ही एंबेडिंग कॉल में कई एंबेडिंग बनाई गई हैं:

Python

from google import genai
from google.genai import types

client = genai.Client()

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

result = client.models.embed_content(
    model="gemini-embedding-2",
    contents=[
        types.Content(parts=[types.Part.from_text(text="task: classification | query: An image of a dog")]),
        types.Content(
            parts=[
                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',
        contents: [
            { parts: [{ text: 'task: classification | query: An image of a dog' }] },
            {
                parts: [{
                    inlineData: {
                        mimeType: 'image/png',
                        data: imgBase64,
                    },
                }],
            },
        ],
    });

    // This produces two embeddings
    for (const embedding of response.embeddings) {
        console.log(embedding.values);
    }
}

main();

Java

import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.ContentEmbedding;
import com.google.genai.types.EmbedContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;

Client client = new Client();

byte[] imageBytes = Files.readAllBytes(Paths.get("dog.png"));

List<Content> contents =
    Arrays.asList(
        Content.fromParts(Part.fromText("task: classification | query: An image of a dog")),
        Content.fromParts(Part.fromBytes(imageBytes, "image/png")));

// Embed each Content object separately to produce separate embeddings
for (Content content : contents) {
  EmbedContentResponse response =
      client.models.embedContent("gemini-embedding-2", content, null);
  for (ContentEmbedding embedding : response.embeddings().orElse(Collections.emptyList())) {
    System.out.println(embedding.values().orElse(Collections.emptyList()));
  }
}

आराम का समय

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

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

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

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

ऑडियो फ़ाइलों को इनलाइन डेटा के तौर पर या 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',
    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',
        contents: [{
            inlineData: {
                mimeType: 'audio/mpeg',
                data: audioBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.EmbedContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;

Client client = new Client();

byte[] audioBytes = Files.readAllBytes(Paths.get("example.mp3"));

Content content = Content.fromParts(Part.fromBytes(audioBytes, "audio/mpeg"));

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", content, null);

System.out.println(response.embeddings().orElse(null));

आराम का समय

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2: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 का इस्तेमाल करके वीडियो को एम्बेड करने का तरीका बताया गया है.

वीडियो को इनलाइन डेटा के तौर पर या 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',
    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',
        contents: [{
            inlineData: {
                mimeType: 'video/mp4',
                data: videoBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.EmbedContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collections;

Client client = new Client();

byte[] videoBytes = Files.readAllBytes(Paths.get("example.mp4"));

Content content = Content.fromParts(Part.fromBytes(videoBytes, "video/mp4"));

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", content, null);

System.out.println(
    response.embeddings().get().get(0).values().orElse(Collections.emptyList()));

आराम का समय

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2: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}"'"
                }
            }]
        }
    }'

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

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

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

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

मॉडल, PDF को कैसे प्रोसेस करता है

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

  • विज़ुअल प्रज़ेंटेशन: मॉडल हर पेज को एक इमेज के तौर पर रेंडर करता है. इसमें हर पेज के लिए 258 टोकन इस्तेमाल होते हैं.
  • टेक्स्ट निकालना: मॉडल, दस्तावेज़ से टेक्स्ट निकालता है. नेटिव PDF (जिनमें डिजिटल टेक्स्ट होता है) के लिए, मॉडल सीधे टेक्स्ट को निकालता है. स्कैन की गई PDF फ़ाइलों (जिनमें टेक्स्ट की इमेज होती हैं) के लिए, मॉडल अपने-आप ऑप्टिकल कैरेक्टर रिकग्निशन (ओसीआर) चलाता है, ताकि टेक्स्ट को निकाला जा सके.

किसी PDF के लिए कुल टोकन की संख्या का हिसाब लगाने के लिए, टेक्स्ट टोकन में विज़ुअल टोकन (हर पेज के लिए 258) जोड़ें. आपके इनपुट, मॉडल की 8,192 टोकन की सीमा के अंदर होने चाहिए. यह सीमा सभी मोडैलिटी के लिए शेयर की जाती है. सिस्टम, इस सीमा से ज़्यादा के इनपुट को अपने-आप छोटा कर देता है.

PDF फ़ाइल से जुड़ी सीमाएं

  • हर अनुरोध के लिए फ़ाइलें: ज़्यादा से ज़्यादा एक PDF फ़ाइल सबमिट की जा सकती है.
  • पेज की सीमा: हर फ़ाइल में ज़्यादा से ज़्यादा छह पेज सबमिट किए जा सकते हैं. बेहतर क्वालिटी के लिए, हमारा सुझाव है कि हर PDF में एक पेज का इस्तेमाल करें.

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

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',
    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',
        contents: [{
            inlineData: {
                mimeType: 'application/pdf',
                data: pdfBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

Java

import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.EmbedContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;

Client client = new Client();

byte[] pdfBytes = Files.readAllBytes(Paths.get("example.pdf"));

Content content = Content.fromParts(Part.fromBytes(pdfBytes, "application/pdf"));

EmbedContentResponse response =
    client.models.embedContent("gemini-embedding-2", content, null);

System.out.println(response.embeddings().orElse(null));

आराम का समय

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2: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, मैनेज की जाने वाली डेटा सेवाएं उपलब्ध कराता है. इनका इस्तेमाल इस काम के लिए किया जा सकता है. इनमें Gemini Enterprise Agent Platform Vector Search 2.0, BigQuery, AlloyDB, और Cloud SQL शामिल हैं.

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

मॉडल के वर्शन

Gemini Embedding 2

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

Gemini API

gemini-embedding-2

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

इनपुट

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

आउटपुट

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

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

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

8,192

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

फ़्लेक्सिबल, इस्तेमाल किए जा सकने वाले डाइमेंशन: 128 - 3072, सुझाए गए डाइमेंशन: 768, 1536, 3072

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

Gemini एंबेडिंग

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

Gemini API

gemini-embedding-001

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

इनपुट

टेक्स्ट

आउटपुट

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

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

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

2,048

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

फ़्लेक्सिबल, इस्तेमाल किए जा सकने वाले डाइमेंशन: 128 - 3072, सुझाए गए डाइमेंशन: 768, 1536, 3072

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

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

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

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

इन दोनों मॉडल के बीच, काम न करने के अलावा कई अन्य अंतर भी हैं:

  • टास्क के टाइप की जानकारी: gemini-embedding-001 में, टास्क के टाइप की जानकारी देने के लिए task_type पैरामीटर का इस्तेमाल किया जाता है. उदाहरण के लिए, SEMANTIC_SIMILARITY, RETRIEVAL_DOCUMENT. gemini-embedding-2 में, task_type पैरामीटर का इस्तेमाल नहीं किया जा सकता. इसके बजाय, सिर्फ़ टेक्स्ट वाले टास्क के लिए, प्रॉम्प्ट में ही टास्क के निर्देश शामिल करें. अलग-अलग कामों के लिए प्रॉम्प्ट को फ़ॉर्मैट करने के तरीके के बारे में जानने के लिए, Embeddings 2 के साथ टास्क के टाइप देखें.

  • एंबेडिंग एग्रीगेशन: gemini-embedding-001, इनपुट की सूची में मौजूद हर स्ट्रिंग के लिए अलग-अलग एंबेडिंग जनरेट करता है. इसके उलट, gemini-embedding-2 एक ही अनुरोध में कई इनपुट (जैसे, टेक्स्ट और इमेज) सीधे तौर पर दिए जाने पर, एक एग्रीगेट की गई एंबेडिंग जनरेट करता है. अलग-अलग इनपुट के लिए अलग-अलग एंबेडिंग जनरेट करने के लिए, हर इनपुट को Content ऑब्जेक्ट में रैप करें या Batch API का इस्तेमाल करें. ज़्यादा जानकारी के लिए, एम्बेडिंग एग्रीगेशन देखें.

  • नॉर्मलाइज़ेशन: अगर output_dimensionality का इस्तेमाल करके, 3,072 से कम डाइमेंशन वाले एंबेडिंग का अनुरोध किया जाता है, तो gemini-embedding-2 इन छोटे एंबेडिंग को अपने-आप नॉर्मलाइज़ कर देता है. gemini-embedding-001 के लिए, आपको 3072 के अलावा अन्य डाइमेंशन के लिए मैन्युअल तरीके से नॉर्मलाइज़ेशन करना होगा. ज़्यादा जानकारी के लिए, छोटे डाइमेंशन के लिए क्वालिटी पक्का करना लेख पढ़ें.

बैच एंबेडिंग

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

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

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

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

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