Gemini API শব্দ, বাক্যাংশ, বাক্য এবং কোডের জন্য এমবেডিং তৈরি করতে পাঠ্য এমবেডিং মডেল অফার করে। এই ফাউন্ডেশনাল এম্বেডিংগুলি এনএলপি কাজগুলিকে শক্তি দেয় যেমন শব্দার্থিক অনুসন্ধান, শ্রেণীবিভাগ এবং ক্লাস্টারিং, কীওয়ার্ড-ভিত্তিক পদ্ধতির চেয়ে আরও সঠিক, প্রসঙ্গ-সচেতন ফলাফল প্রদান করে।
বিল্ডিং রিট্রিভাল অগমেন্টেড জেনারেশন (RAG) সিস্টেমগুলি এম্বেডিংয়ের জন্য একটি সাধারণ ব্যবহারের ক্ষেত্রে। উন্নত বাস্তবিক নির্ভুলতা, সুসংগততা এবং প্রাসঙ্গিক সমৃদ্ধি সহ মডেল আউটপুটগুলিকে উল্লেখযোগ্যভাবে বৃদ্ধিতে এমবেডিংগুলি একটি মূল ভূমিকা পালন করে। তারা দক্ষতার সাথে জ্ঞানের ভিত্তিগুলি থেকে প্রাসঙ্গিক তথ্য পুনরুদ্ধার করে, যা এমবেডিং দ্বারা প্রতিনিধিত্ব করে, যা পরবর্তীকালে ভাষা মডেলগুলিতে ইনপুট প্রম্পটে অতিরিক্ত প্রসঙ্গ হিসাবে পাস করা হয়, এটি আরও তথ্যপূর্ণ এবং সঠিক প্রতিক্রিয়া তৈরি করতে নির্দেশিত হয়।
এন্টারপ্রাইজ-গ্রেড অ্যাপ্লিকেশন এবং উচ্চ-ভলিউম ওয়ার্কলোডের জন্য, আমরা Vertex AI- তে এমবেডিং মডেল ব্যবহার করার পরামর্শ দিই।
এম্বেডিং তৈরি করা হচ্ছে
টেক্সট এম্বেডিং তৈরি করতে embedContent
পদ্ধতি ব্যবহার করুন:
পাইথন
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)
জাভাস্ক্রিপ্ট
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))
}
বিশ্রাম
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-001",
"content": {"parts":[{"text": "What is the meaning of life?"}]}
}'
আপনি একাধিক খণ্ডের জন্য এম্বেডিংগুলিকে স্ট্রিংগুলির একটি তালিকা হিসাবে পাস করে তৈরি করতে পারেন।
পাইথন
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)
জাভাস্ক্রিপ্ট
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))
}
বিশ্রাম
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-001",
"content": [
{"parts": [{"text": "What is the meaning of life?"}]},
{"parts": [{"text": "What is the purpose of existence?"}]},
{"parts": [{"text": "How do I bake a cake?"}]}
]
}'
কর্মক্ষমতা উন্নত করতে টাস্ক টাইপ নির্দিষ্ট করুন
আপনি শ্রেণীবিভাগ থেকে নথি অনুসন্ধান পর্যন্ত বিস্তৃত কাজের জন্য এম্বেডিং ব্যবহার করতে পারেন। সঠিক টাস্ক টাইপ নির্দিষ্ট করা উদ্দিষ্ট সম্পর্কের জন্য এমবেডিংগুলিকে অপ্টিমাইজ করতে সাহায্য করে, সর্বোচ্চ নির্ভুলতা এবং দক্ষতা বাড়ায়। সমর্থিত টাস্ক প্রকারের একটি সম্পূর্ণ তালিকার জন্য, সমর্থিত টাস্কের প্রকারের টেবিলটি দেখুন।
নিচের উদাহরণটি দেখায় যে আপনি কিভাবে SEMANTIC_SIMILARITY
ব্যবহার করতে পারেন তা পরীক্ষা করার জন্য টেক্সটের অর্থের স্ট্রিংগুলির মধ্যে কতটা মিল রয়েছে৷
পাইথন
from google import genai
from google.genai import types
import numpy as np
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 = [
np.array(e.values) for e in client.models.embed_content(
model="gemini-embedding-001",
contents=texts,
config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")).embeddings
]
# Calculate cosine similarity. Higher scores = greater semantic similarity.
embeddings_matrix = np.array(result)
similarity_matrix = cosine_similarity(embeddings_matrix)
for i, text1 in enumerate(texts):
for j in range(i + 1, len(texts)):
text2 = texts[j]
similarity = similarity_matrix[i, j]
print(f"Similarity between '{text1}' and '{text2}': {similarity:.4f}")
জাভাস্ক্রিপ্ট
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)
}
}
}
বিশ্রাম
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"contents": [
{"parts": [{"text": "What is the meaning of life?"}]},
{"parts": [{"text": "What is the purpose of existence?"}]},
{"parts": [{"text": "How do I bake a cake?"}]}
],
"embedding_config": {
"task_type": "SEMANTIC_SIMILARITY"
}
}'
নিম্নলিখিত এই কোড স্নিপেট থেকে একটি উদাহরণ আউটপুট দেখায়:
Similarity between 'What is the meaning of life?' and 'What is the purpose of existence?': 0.9481
Similarity between 'What is the meaning of life?' and 'How do I bake a cake?': 0.7471
Similarity between 'What is the purpose of existence?' and 'How do I bake a cake?': 0.7371
সমর্থিত টাস্ক প্রকার
টাস্ক টাইপ | বর্ণনা | উদাহরণ |
---|---|---|
SEMANTIC_SIMILARITY | টেক্সট সাদৃশ্য মূল্যায়ন করার জন্য অপ্টিমাইজ করা এমবেডিং। | সুপারিশ সিস্টেম, ডুপ্লিকেট সনাক্তকরণ |
শ্রেণীবিভাগ | প্রিসেট লেবেল অনুযায়ী পাঠ্য শ্রেণীবদ্ধ করার জন্য এমবেডিং অপ্টিমাইজ করা হয়েছে। | সেন্টিমেন্ট বিশ্লেষণ, স্প্যাম সনাক্তকরণ |
ক্লাস্টারিং | তাদের মিলের উপর ভিত্তি করে ক্লাস্টার টেক্সটগুলিতে এমবেডিংগুলি অপ্টিমাইজ করা হয়েছে৷ | নথি সংগঠন, বাজার গবেষণা, অসঙ্গতি সনাক্তকরণ |
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
, ম্যাট্রিওশকা রিপ্রেজেন্টেশন লার্নিং (MRL) কৌশল ব্যবহার করে প্রশিক্ষিত হয় যা একটি মডেলকে উচ্চ-মাত্রিক এমবেডিং শিখতে শেখায় যার প্রাথমিক সেগমেন্ট (বা উপসর্গ) রয়েছে যা একই ডেটার উপযোগী, সহজ সংস্করণও। আপনি সম্পূর্ণ 3072-ডাইমেনশনাল এম্বেডিং ব্যবহার করতে বেছে নিতে পারেন, অথবা স্টোরেজ স্পেস বাঁচাতে গুণমান না হারিয়ে আপনি এটিকে ছোট আকারে ছোট করতে পারেন। সেরা মানের জন্য, আমরা প্রথম 768 এবং 1536 ব্যবহার করার পরামর্শ দিই।
output_dimensionality
প্যারামিটার ব্যবহার করে, ব্যবহারকারীরা আউটপুট এমবেডিং ভেক্টরের আকার নিয়ন্ত্রণ করতে পারে। একটি ছোট আউটপুট মাত্রিকতা নির্বাচন করা স্টোরেজ স্পেস বাঁচাতে পারে এবং ডাউনস্ট্রিম অ্যাপ্লিকেশনগুলির জন্য কম্পিউটেশনাল দক্ষতা বাড়াতে পারে, যখন মানের দিক থেকে সামান্য বলিদান করে।
পাইথন
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}")
জাভাস্ক্রিপ্ট
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)
}
বিশ্রাম
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: YOUR_GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"contents": [
{"parts": [{"text": "What is the meaning of life?"}]}
],
"embedding_config": {
"output_dimensionality": 768
}
}'
উদাহরণ আউটপুট:
Length of embedding: 768
3072 মাত্রা এম্বেডিং স্বাভাবিক করা হয়েছে। সাধারণীকৃত এম্বেডিং ভেক্টর দিক তুলনা করে আরো সঠিক শব্দার্থিক সাদৃশ্য তৈরি করে, মাত্রা নয়। 768 এবং 1536 সহ অন্যান্য মাত্রাগুলির জন্য, আপনাকে নিম্নরূপ এম্বেডিংগুলিকে স্বাভাবিক করতে হবে:
পাইথন
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
কেস ব্যবহার করুন
টেক্সট এম্বেডিংগুলি বিভিন্ন সাধারণ AI ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ, যেমন:
- পুনরুদ্ধার-অগমেন্টেড জেনারেশন (RAG): এম্বেডিংগুলি একটি মডেলের প্রসঙ্গে প্রাসঙ্গিক তথ্য পুনরুদ্ধার এবং অন্তর্ভুক্ত করে জেনারেট করা পাঠ্যের গুণমানকে উন্নত করে।
তথ্য পুনরুদ্ধার: শব্দার্থগতভাবে অনুরূপ পাঠ্য বা ইনপুট পাঠ্যের একটি অংশ দেওয়া নথি অনুসন্ধান করতে এমবেডিং ব্যবহার করুন।
অসঙ্গতি সনাক্তকরণ: এম্বেডিংয়ের গ্রুপগুলির তুলনা করা লুকানো প্রবণতা বা বহিরাগতদের সনাক্ত করতে সাহায্য করতে পারে।
শ্রেণীবিভাগ: পাঠ্যের বিষয়বস্তুর উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে শ্রেণীবদ্ধ করুন, যেমন অনুভূতি বিশ্লেষণ বা স্প্যাম সনাক্তকরণ
ক্লাস্টারিং: সম্পর্কগুলি উপলব্ধি করার একটি কার্যকর উপায় হল আপনার এম্বেডিংয়ের ক্লাস্টার এবং ভিজ্যুয়ালাইজেশন তৈরি করা।
এম্বেডিং সংরক্ষণ করা হচ্ছে
আপনি যখন উৎপাদনে এম্বেডিংগুলি নিয়ে যান, তখন দক্ষতার সাথে সঞ্চয়, সূচক এবং উচ্চ-মাত্রিক এম্বেডিং পুনরুদ্ধার করতে ভেক্টর ডেটাবেস ব্যবহার করা সাধারণ। Google ক্লাউড পরিচালিত ডেটা পরিষেবাগুলি অফার করে যা BigQuery , AlloyDB , এবং Cloud SQL সহ এই উদ্দেশ্যে ব্যবহার করা যেতে পারে৷
নীচের টিউটোরিয়ালগুলি দেখায় যে কীভাবে জেমিনি এম্বেডিংয়ের সাথে অন্যান্য তৃতীয় পক্ষের ভেক্টর ডেটাবেসগুলি ব্যবহার করতে হয়।
এম্বেডিং মডেল
সাধারণত উপলব্ধ মডেল
উত্তরাধিকার মডেল
-
embedding-001
(14 আগস্ট, 2025-এ অবমুক্ত করা হচ্ছে) -
text-embedding-004
(14 জানুয়ারী, 2026-এ অবমুক্ত করা হচ্ছে)
এমবেডিং ব্যবহার করে
নতুন বিষয়বস্তু তৈরি করে এমন জেনারেটিভ এআই মডেলের বিপরীতে, জেমিনি এম্বেডিং মডেলটি শুধুমাত্র আপনার ইনপুট ডেটার বিন্যাসকে একটি সংখ্যাসূচক উপস্থাপনায় রূপান্তরিত করার উদ্দেশ্যে তৈরি করা হয়েছে। যদিও Google একটি এমবেডিং মডেল প্রদানের জন্য দায়ী যা আপনার ইনপুট ডেটার বিন্যাসকে অনুরোধ করা সংখ্যাসূচক-ফরম্যাটে রূপান্তর করে, ব্যবহারকারীরা তাদের ইনপুট করা ডেটা এবং ফলস্বরূপ এমবেডিংয়ের সম্পূর্ণ দায়বদ্ধতা বজায় রাখে। জেমিনি এম্বেডিং মডেল ব্যবহার করে আপনি নিশ্চিত করেন যে আপনার আপলোড করা যেকোনো বিষয়বস্তুর প্রয়োজনীয় অধিকার রয়েছে। অন্যের মেধা সম্পত্তি বা গোপনীয়তার অধিকার লঙ্ঘন করে এমন সামগ্রী তৈরি করবেন না। আপনার এই পরিষেবার ব্যবহার আমাদের নিষিদ্ধ ব্যবহারের নীতি এবং Google-এর পরিষেবার শর্তাবলীর সাপেক্ষে৷
এমবেডিং দিয়ে বিল্ডিং শুরু করুন
মডেলের ক্ষমতাগুলি অন্বেষণ করতে এম্বেডিং কুইকস্টার্ট নোটবুকটি দেখুন এবং কীভাবে আপনার এম্বেডিংগুলি কাস্টমাইজ এবং কল্পনা করতে হয় তা শিখুন৷