Gemini API, टेक्स्ट एम्बेडिंग मॉडल उपलब्ध कराता है. इनकी मदद से, शब्दों, वाक्यांशों, वाक्यों, और कोड के लिए एम्बेडिंग जनरेट की जा सकती हैं. सिमैंटिक सर्च, क्लासिफ़िकेशन, और क्लस्टरिंग जैसे एम्बेडिंग टास्क. इससे कीवर्ड पर आधारित तरीकों की तुलना में, ज़्यादा सटीक और कॉन्टेक्स्ट के हिसाब से नतीजे मिलते हैं.
एआई प्रॉडक्ट के लिए, जानकारी खोजने और जनरेट करने वाले (आरएजी) सिस्टम बनाना एक सामान्य इस्तेमाल का उदाहरण है. मॉडल के आउटपुट को बेहतर बनाने में एम्बेडिंग की अहम भूमिका होती है. इससे, तथ्यों के सटीक होने की संभावना बढ़ जाती है. साथ ही, जवाब ज़्यादा सटीक और कॉन्टेक्स्ट के हिसाब से ज़्यादा जानकारी वाले होते हैं. अगर आपको मैनेज किया गया 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 का इस्तेमाल करें.
|
चैटबॉक्स |
| FACT_VERIFICATION |
ऐसे स्टेटमेंट के लिए एम्बेडिंग जिनकी पुष्टि करनी है. साथ ही, ऐसे दस्तावेज़ों को वापस पाने के लिए ऑप्टिमाइज़ किया गया है जिनमें स्टेटमेंट के पक्ष या विपक्ष में सबूत मौजूद हैं.
टारगेट टेक्स्ट के लिए FACT_VERIFICATION का इस्तेमाल करें; जिन दस्तावेज़ों को वापस पाना है उनके लिए RETRIEVAL_DOCUMENT का इस्तेमाल करें
|
तथ्यों की जांच करने वाले ऑटोमेटेड सिस्टम |
एम्बेड किए गए कॉन्टेंट के साइज़ को कंट्रोल करना
Gemini के एम्बेडिंग मॉडल, gemini-embedding-001 को 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 |
उपयोग के उदाहरण
टेक्स्ट एम्बेडिंग, एआई के कई सामान्य इस्तेमाल के उदाहरणों के लिए ज़रूरी होती हैं. जैसे:
- रीट्रिवल-ऑगमेंटेड जनरेशन (आरएजी): एम्बेडिंग, जनरेट किए गए टेक्स्ट की क्वालिटी को बेहतर बनाती हैं. इसके लिए, वे मॉडल के कॉन्टेक्स्ट में काम की जानकारी को वापस लाती हैं और उसे शामिल करती हैं.
जानकारी पाना: दिए गए इनपुट टेक्स्ट के आधार पर, मतलब के हिसाब से सबसे मिलते-जुलते टेक्स्ट या दस्तावेज़ों को खोजना.
खोज के नतीजों को फिर से रैंक करना: क्वेरी के हिसाब से, शुरुआती नतीजों को सिमैंटिक तौर पर स्कोर करके, सबसे काम के आइटम को प्राथमिकता दें.
गड़बड़ी का पता लगाना: एम्बेडिंग के ग्रुप की तुलना करने से, छिपे हुए ट्रेंड या आउटलायर का पता लगाने में मदद मिल सकती है.
वर्गीकरण: कॉन्टेंट के आधार पर टेक्स्ट को अपने-आप कैटगरी में बांटना. जैसे, भावनाओं का विश्लेषण करना या स्पैम का पता लगाना
क्लस्टरिंग: क्लस्टर बनाकर और एम्बेडिंग के विज़ुअलाइज़ेशन करके, जटिल संबंधों को आसानी से समझें.
एंबेड किए गए डेटा को सेव करना
एम्बेडिंग को प्रोडक्शन में ले जाते समय, वेक्टर डेटाबेस का इस्तेमाल करना आम बात है. इससे ज़्यादा डाइमेंशन वाली एम्बेडिंग को आसानी से सेव, इंडेक्स, और वापस पाया जा सकता है. Google Cloud, मैनेज की गई डेटा सेवाएं उपलब्ध कराता है. इनका इस्तेमाल इस काम के लिए किया जा सकता है. इनमें BigQuery, AlloyDB, और Cloud SQL शामिल हैं.
यहाँ दिए गए ट्यूटोरियल में, Gemini Embedding के साथ तीसरे पक्ष के अन्य वेक्टर डेटाबेस इस्तेमाल करने का तरीका बताया गया है.
मॉडल के वर्शन
| प्रॉपर्टी | ब्यौरा |
|---|---|
| मॉडल कोड |
Gemini API
|
| इस्तेमाल किए जा सकने वाले डेटा टाइप |
इनपुट टेक्स्ट आउटपुट टेक्स्ट एम्बेडिंग |
| टोकन की सीमाएं[*] |
इनपुट टोकन की सीमा 2,048 आउटपुट डाइमेंशन का साइज़ लचीला, इन डाइमेंशन के साथ काम करता है: 128 - 3072, सुझाया गया डाइमेंशन: 768, 1536, 3072 |
| वर्शन |
|
| नया अपडेट | जून 2025 |
काम न करने वाले Embeddings मॉडल के बारे में जानने के लिए, Deprecations पेज पर जाएं
बैच एम्बेड करना
अगर आपको जवाब मिलने में लगने वाले समय से कोई समस्या नहीं है, तो Gemini Embeddings मॉडल का इस्तेमाल Batch API के साथ करें. इससे, डिफ़ॉल्ट एम्बेडिंग की कीमत के 50% पर ज़्यादा थ्रूपुट मिलता है. Batch API की कुकबुक में, इसका इस्तेमाल शुरू करने के उदाहरण देखें.
ज़िम्मेदारी के साथ इस्तेमाल करने के बारे में सूचना
जनरेटिव एआई मॉडल नया कॉन्टेंट बनाते हैं. हालांकि, Gemini Embedding मॉडल का मकसद सिर्फ़ आपके इनपुट डेटा के फ़ॉर्मैट को संख्यात्मक रूप में बदलना है. Google, एम्बेडिंग मॉडल उपलब्ध कराने के लिए ज़िम्मेदार है. यह मॉडल, आपके इनपुट डेटा के फ़ॉर्मैट को अनुरोध किए गए संख्यात्मक फ़ॉर्मैट में बदलता है. हालांकि, उपयोगकर्ता अपने इनपुट किए गए डेटा और उससे जनरेट हुई एम्बेडिंग के लिए पूरी तरह से ज़िम्मेदार होते हैं. Gemini Embedding मॉडल का इस्तेमाल करने पर, यह पुष्टि हो जाती है कि अपलोड किए जाने वाले कॉन्टेंट को इस्तेमाल करने से जुड़े ज़रूरी अधिकार आपके पास हैं. ऐसा कोई कॉन्टेंट जनरेट न करें जिससे किसी की बौद्धिक संपत्ति या निजता के अधिकारों का उल्लंघन होता हो. इस सेवा के इस्तेमाल पर, हमारी इस्तेमाल पर पाबंदी से जुड़ी नीति और Google की सेवा की शर्तें लागू होती हैं.
एम्बेडिंग का इस्तेमाल करके ऐप्लिकेशन बनाना शुरू करना
मॉडल की क्षमताओं के बारे में जानने के लिए, एम्बेडिंग की क्विकस्टार्ट नोटबुक देखें. साथ ही, यह भी जानें कि एम्बेडिंग को अपनी पसंद के मुताबिक कैसे बनाया जाए और उन्हें विज़ुअलाइज़ कैसे किया जाए.