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
|
| इस्तेमाल किए जा सकने वाले डेटा टाइप |
इनपुट टेक्स्ट, इमेज, वीडियो, ऑडियो, PDF आउटपुट टेक्स्ट एंबेडिंग |
| टोकन की सीमाएं[*] |
इनपुट टोकन की सीमा 8,192 आउटपुट डाइमेंशन का साइज़ फ़्लेक्सिबल, इस्तेमाल किए जा सकने वाले डाइमेंशन: 128 - 3072, सुझाए गए डाइमेंशन: 768, 1536, 3072 |
| वर्शन |
|
| नया अपडेट | अप्रैल 2026 |
Gemini एंबेडिंग
| प्रॉपर्टी | ब्यौरा |
|---|---|
| मॉडल कोड |
Gemini API
|
| इस्तेमाल किए जा सकने वाले डेटा टाइप |
इनपुट टेक्स्ट आउटपुट टेक्स्ट एंबेडिंग |
| टोकन की सीमाएं[*] |
इनपुट टोकन की सीमा 2,048 आउटपुट डाइमेंशन का साइज़ फ़्लेक्सिबल, इस्तेमाल किए जा सकने वाले डाइमेंशन: 128 - 3072, सुझाए गए डाइमेंशन: 768, 1536, 3072 |
| वर्शन |
|
| नया अपडेट | जून 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 की सेवा की शर्तें लागू होती हैं.
एंबेडिंग का इस्तेमाल शुरू करना
मॉडल की क्षमताओं के बारे में जानने के लिए, एम्बेड करने की सुविधा के बारे में बताने वाली क्विकस्टार्ट नोटबुक देखें. साथ ही, एम्बेड करने की सुविधा को पसंद के मुताबिक बनाने और उसे विज़ुअलाइज़ करने का तरीका जानें.