Gemini API টেক্সট, ছবি, ভিডিও ও অন্যান্য কন্টেন্টের জন্য এম্বেডিং জেনারেট করতে এম্বেডিং মডেল অফার করে। এই এম্বেডিংগুলি তারপর সেম্যান্টিক সার্চ, ক্লাসিফিকেশন এবং ক্লাস্টারিংয়ের মতো কাজের জন্য ব্যবহার করা যেতে পারে, যা কীওয়ার্ড-ভিত্তিক পদ্ধতির চেয়ে আরও সঠিক, প্রসঙ্গ-সচেতন ফলাফল প্রদান করে।
লেটেস্ট মডেল, gemini-embedding-2, হল Gemini API-তে প্রথম মাল্টিমোডাল
এম্বেডিং মডেল। এটি টেক্সট, ছবি,
ভিডিও, অডিও এবং ডকুমেন্টকে একটি ইউনিফায়েড এম্বেডিং স্পেসে ম্যাপ করে, যার ফলে ১০০টিরও বেশি ভাষায় ক্রস-মোডাল
সার্চ, ক্লাসিফিকেশন এবং ক্লাস্টারিং করা সম্ভব হয়। আরও জানতে
মাল্টিমোডাল এম্বেডিং বিভাগ দেখুন। শুধুমাত্র টেক্সট-ভিত্তিক
ব্যবহারের ক্ষেত্রে, gemini-embedding-001 উপলভ্য থাকে।
AI প্রোডাক্টের ক্ষেত্রে রিট্রিভাল অগমেন্টেড জেনারেশন (RAG) সিস্টেম তৈরি করা একটি সাধারণ ব্যবহারিক প্রয়োগ। উন্নত ফ্যাকচুয়াল নির্ভুলতা, সামঞ্জস্য ও প্রাসঙ্গিকতার সমৃদ্ধির সাথে মডেল আউটপুট উল্লেখযোগ্যভাবে উন্নত করার ক্ষেত্রে এম্বেডিং গুরুত্বপূর্ণ ভূমিকা পালন করে। আপনি যদি ম্যানেজ করা 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)
জাভাস্ক্রিপ্ট
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}'-এর সাথে এম্বেড করা থাকে, তাহলে কোয়েরিও
এই টাস্ক ফর্ম্যাট অনুসরণ করে এম্বেড করতে হবে।
এম্বেডিং ১ সহ টাস্কের ধরন
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)
জাভাস্ক্রিপ্ট
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 | টেক্সটের মিল মূল্যায়ন করার জন্য এম্বেডিং অপ্টিমাইজ করা হয়েছে। | সাজেশন সিস্টেম, ডুপ্লিকেট শনাক্তকরণ |
| শ্রেণীবিভাগ | প্রিসেট লেবেল অনুযায়ী টেক্সট ক্লাসিফাই করার জন্য এম্বেডিং অপ্টিমাইজ করা হয়েছে। | সেন্টিমেন্ট বিশ্লেষণ, স্প্যাম শনাক্তকরণ |
| ক্লাস্টারিং | টেক্সটের মিলের ভিত্তিতে সেগুলিকে ক্লাস্টার করার জন্য এম্বেডিং অপ্টিমাইজ করা হয়েছে। | ডকুমেন্ট সাজানো, মার্কেট রিসার্চ, অসঙ্গতি শনাক্তকরণ |
| 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 (MRL) টেকনিক ব্যবহার করে ট্রেনিং দেওয়া হয়েছে, যা কোনও মডেলকে
হাই-ডাইমেনশনাল এম্বেডিং শিখতে সাহায্য করে। এই এম্বেডিংয়ের প্রাথমিক সেগমেন্ট (বা প্রিফিক্স) থাকে, যা
একই ডেটার উপযোগী ও সহজ ভার্সন।
আউটপুট এম্বেডিং ভেক্টরের সাইজ কন্ট্রোল করতে output_dimensionality প্যারামিটার
ব্যবহার করুন। ছোট আউটপুট ডাইমেনশনালিটি বেছে নিলে স্টোরেজ স্পেস বাঁচানো যায় এবং
ডাউনস্ট্রিম অ্যাপ্লিকেশনের জন্য কম্পিউটেশনাল দক্ষতা বৃদ্ধি করা যায়,
যদিও কোয়ালিটির ক্ষেত্রে সামান্য আপোষ করতে হয়। ডিফল্ট হিসেবে, দুটি মডেলই ৩০৭২-ডাইমেনশনাল এম্বেডিং আউটপুট করে, তবে স্টোরেজ স্পেস বাঁচাতে কোয়ালিটি না কমিয়েই আপনি এটিকে ছোট সাইজে ট্রাঙ্কেট করতে পারেন। আমরা ৭৬৮, ১৫৩৬ বা ৩০৭২
আউটপুট ডাইমেনশন ব্যবহার করার সাজেশন দিই।
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}")
জাভাস্ক্রিপ্ট
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
ছোট আকারের জন্য কোয়ালিটি নিশ্চিত করা
ডিফল্ট ৩০৭২-ডাইমেনশন এম্বেডিং সবসময় নরমালাইজ করা হলেও, Gemini Embedding 2 ট্রাঙ্কেট করা ডাইমেনশনও (যেমন, ৭৬৮, ১৫৩৬) অটো-নরমালাইজ করে। এটি নিশ্চিত করে যে সিম্যান্টিক সাদৃশ্য ভেক্টরের দিকনির্দেশের মাধ্যমে গণনা করা হয়, ম্যাগনিটিউডের মাধ্যমে নয়, যা আরও সঠিক ফলাফল প্রদান করে।
পুরনো মডেল: আপনি gemini-embedding-001 ব্যবহার করলে, আপনাকে ম্যানুয়ালি
নিম্নলিখিত উপায়ে ৩০৭২ নয় এমন ডাইমেনশন নরমালাইজ করতে হবে:
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 স্কোর দেখানো হয়েছে, যা এম্বেডিংয়ের জন্য সাধারণত ব্যবহৃত একটি বেঞ্চমার্ক। উল্লেখযোগ্যভাবে, ফলাফল দেখায় যে পারফর্ম্যান্স এম্বেডিং ডাইমেনশনের সাইজের সাথে কঠোরভাবে আবদ্ধ নয়, কম ডাইমেনশন তাদের উচ্চ ডাইমেনশন সমকক্ষের সাথে তুলনীয় স্কোর অর্জন করে।
| MRL ডাইমেনশন | MTEB স্কোর (Gemini Embedding 001) |
|---|---|
| 2048 | 68.16 |
| 1536 | 68.17 |
| 768 | ৬৭.৯৯ |
| 512 | 67.55 |
| 256 | 66.19 |
| 128 | 63.31 |
মাল্টিমোডাল এম্বেডিং
gemini-embedding-2 মডেল মাল্টিমোডাল ইনপুট সাপোর্ট করে, যার ফলে আপনি
টেক্সটের পাশাপাশি ছবি, ভিডিও, অডিও ও ডকুমেন্ট কন্টেন্ট এম্বেড করতে পারবেন। সব মোডালিটি
একই এম্বেডিং স্পেসে ম্যাপ করা হয়, যা ক্রস-মোডাল সার্চ ও
তুলনা করার সুবিধা দেয়।
কাজ করে এমন মোডালিটি ও সীমা
ইনপুট টোকেনের সামগ্রিক সর্বোচ্চ সীমা হল ৮১৯২টি টোকেন।
| মোডালিটি | স্পেসিফিকেশন ও সীমা |
|---|---|
| Text | ৮,১৯২টি টোকেন পর্যন্ত কাজ করে। |
| ছবি | প্রতিটি অনুরোধে সর্বাধিক ৬টি ছবি। যেসব ফর্ম্যাট কাজ করে: PNG, JPEG. |
| অডিও | সর্বাধিক ১৮০ সেকেন্ড দৈর্ঘ্যের হতে হবে। এইসব ফর্ম্যাট কাজ করে: MP3, WAV. |
| ভিডিও | সর্বাধিক সময়সীমা ১২০ সেকেন্ড। কাজ করবে এমন ফর্ম্যাট: MP4, MOV. কাজ করে এমন কোডেক: H264, H265, AV1, VP9. সিস্টেম প্রতিটি ভিডিওতে সর্বাধিক ৩২টি ফ্রেম প্রসেস করে: ছোট ভিডিও (≤৩২ সেকেন্ড) ১ fps-এ স্যাম্পেল করা হয়, যখন দীর্ঘ ভিডিওগুলি ৩২টি ফ্রেমে সমানভাবে স্যাম্পেল করা হয়। ভিডিও ফাইলে অডিও ট্র্যাক প্রসেস করা হয় না। |
| ডকুমেন্ট (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)
জাভাস্ক্রিপ্ট
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)
জাভাস্ক্রিপ্ট
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)
জাভাস্ক্রিপ্ট
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)
জাভাস্ক্রিপ্ট
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)
জাভাস্ক্রিপ্ট
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}"'"
}
}]
}
}'
আপনাকে >১২০ সেকেন্ডের ভিডিও এম্বেড করতে হলে, ভিডিওটি ওভারল্যাপ করা সেগমেন্টে ভাগ করে নিতে পারেন এবং সেই ভাগগুলি আলাদাভাবে এম্বেড করতে পারেন।
ডকুমেন্ট এম্বেড করা
পিডিএফ ফর্ম্যাটে থাকা ডকুমেন্ট সরাসরি এম্বেড করা যাবে। মডেলটি প্রতিটি পৃষ্ঠার ভিজ্যুয়াল এবং টেক্সট কন্টেন্ট প্রসেস করে।
Files API-এর মাধ্যমে ইনলাইন ডেটা বা আপলোড করা ফাইল হিসেবে PDF প্রদান করা যেতে পারে।
মডেল কীভাবে পিডিএফ প্রসেস করে
আপনি কোনও PDF এম্বেড করলে, মডেলটি ভিজ্যুয়াল ও টেক্সট ফিচার ব্যবহার করে ডকুমেন্ট প্রসেস করে:
- ভিজ্যুয়াল রিপ্রেজেন্টেশন: মডেলটি প্রতিটি পৃষ্ঠাকে একটি ছবি হিসেবে রেন্ডার করে, যা পৃষ্ঠা প্রতি ২৫৮টি টোকেন ব্যবহার করে।
- টেক্সট এক্সট্র্যাক্ট করা: মডেলটি ডকুমেন্ট থেকে টেক্সট এক্সট্র্যাক্ট করে। নেটিভ পিডিএফ (যেগুলিতে ডিজিটাল টেক্সট থাকে) থেকে মডেল সরাসরি টেক্সট এক্সট্র্যাক্ট করে। স্ক্যান করা পিডিএফের (যেখানে টেক্সটের ছবি থাকে) ক্ষেত্রে, মডেলটি টেক্সট এক্সট্র্যাক্ট করার জন্য অটোমেটিক অপটিক্যাল ক্যারেক্টার রেকগনিশন (OCR) রান করে।
কোনও PDF-এর জন্য মোট টোকেন কাউন্ট হিসেব করতে, টেক্সট টোকেনের সাথে ভিজ্যুয়াল টোকেন (পৃষ্ঠা প্রতি ২৫৮) যোগ করুন। আপনার ইনপুট অবশ্যই মডেলের ৮,১৯২ টোকেন সীমার (সব মোডালিটি জুড়ে শেয়ার করা) মধ্যে হতে হবে। এই সীমা অতিক্রম করে এমন ইনপুট সিস্টেমটি নিঃশব্দে ট্রাঙ্কেট করে।
পিডিএফের সীমা
- প্রতিটি অনুরোধে ফাইলের সংখ্যা: আপনি সর্বাধিক ১টি পিডিএফ ফাইল জমা দিতে পারবেন।
- পৃষ্ঠার সীমা: আপনি প্রতিটি ফাইলে সর্বাধিক ৬টি পৃষ্ঠা জমা দিতে পারবেন। সেরা কোয়ালিটির জন্য, আমরা প্রতিটি PDF-এ ১টি পৃষ্ঠা ব্যবহার করার জন্য বিশেষভাবে সাজেস্ট করি।
gemini-embedding-2 ব্যবহার করে কীভাবে পিডিএফ এম্বেড করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
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)
জাভাস্ক্রিপ্ট
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}"'"
}
}]
}
}'
যেসব ক্ষেত্রে ব্যবহার করা যাবে
AI-এর বিভিন্ন সাধারণ ব্যবহারিক প্রয়োগের ক্ষেত্রে টেক্সট এম্বেডিং অত্যন্ত গুরুত্বপূর্ণ, যেমন:
- রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG): এম্বেডিং, মডেলের কনটেক্সটে প্রাসঙ্গিক তথ্য রিট্রিভ ও অন্তর্ভুক্ত করার মাধ্যমে জেনারেট করা টেক্সটের কোয়ালিটি উন্নত করে।
তথ্য সংগ্রহ করা: ইনপুট টেক্সটের ভিত্তিতে সবচেয়ে বেশি শব্দার্থগতভাবে একই ধরনের টেক্সট বা ডকুমেন্ট সার্চ করা।
সার্চ রি-র্যাংকিং: কোয়েরির সাথে প্রাথমিক ফলাফলের শব্দার্থগত স্কোরিংয়ের মাধ্যমে সবচেয়ে প্রাসঙ্গিক আইটেমকে অগ্রাধিকার দিন।
অসঙ্গতি শনাক্তকরণ: এম্বেডিংয়ের গ্রুপ তুলনা করলে তা লুকানো ট্রেন্ড বা আউটলায়ার শনাক্ত করতে সাহায্য করতে পারে।
শ্রেণীবিভাগ: কন্টেন্টের উপর ভিত্তি করে অটোমেটিক টেক্সট শ্রেণীবিভাগ করা, যেমন সেন্টিমেন্ট বিশ্লেষণ বা স্প্যাম শনাক্তকরণ
ক্লাস্টারিং: আপনার এম্বেডিংয়ের ক্লাস্টার ও ভিজ্যুয়ালাইজেশন তৈরি করে জটিল সম্পর্কগুলি কার্যকরভাবে বুঝুন।
এম্বেডিং স্টোর করা
এম্বেডিং প্রোডাকশনে নিয়ে যাওয়ার সময়, হাই-ডাইমেনশনাল এম্বেডিং দক্ষতার সাথে স্টোর, ইন্ডেক্স ও ফিরিয়ে আনার জন্য ভেক্টর ডেটাবেস ব্যবহার করা সাধারণ ব্যাপার। Google Cloud ম্যানেজ করা ডেটা পরিষেবা অফার করে যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে, যার মধ্যে রয়েছে Gemini Enterprise Agent Platform Vector Search 2.0, BigQuery, AlloyDB এবং Cloud SQL।
Gemini Embedding-এর সাথে অন্যান্য থার্ড-পার্টি ভেক্টর ডেটাবেস কীভাবে ব্যবহার করতে হয় তা নিম্নলিখিত টিউটোরিয়ালে দেখানো হয়েছে।
মডেল ভার্সন
Gemini Embedding 2
| প্রপার্টি | বিবরণ |
|---|---|
| মডেল কোড |
Gemini API
|
| কাজ করে এমন ডেটার ধরন |
ইনপুট টেক্সট, ছবি, ভিডিও, অডিও, PDF আউটপুট টেক্সট এম্বেডিং |
| টোকেনের সীমা[*] |
ইনপুট টোকেনের সীমা ৮,১৯২ আউটপুট ডাইমেনশনের সাইজ ফ্লেক্সিবল, কাজ করে: ১২৮ - ৩০৭২, সাজেস্ট করা হয়েছে: ৭৬৮, ১৫৩৬, ৩০৭২ |
| ভার্সন |
|
| লেটেস্ট আপডেট | এপ্রিল ২০২৬ |
Gemini Embedding
| প্রপার্টি | বিবরণ |
|---|---|
| মডেল কোড |
Gemini API
|
| কাজ করে এমন ডেটার ধরন |
ইনপুট টেক্সট আউটপুট টেক্সট এম্বেডিং |
| টোকেনের সীমা[*] |
ইনপুট টোকেনের সীমা ২,০৪৮ আউটপুট ডাইমেনশনের সাইজ ফ্লেক্সিবল, কাজ করে: ১২৮ - ৩০৭২, সাজেস্ট করা হয়েছে: ৭৬৮, ১৫৩৬, ৩০৭২ |
| ভার্সন |
|
| লেটেস্ট আপডেট | জুন ২০২৫ |
বন্ধ হয়ে যাওয়া এম্বেডিং মডেলের জন্য, বন্ধ হয়ে যাওয়া পৃষ্ঠা দেখুন
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ব্যবহার করেন, তাহলেgemini-embedding-2অটোমেটিক এইসব ট্রাঙ্কেট করা এম্বেডিং নরমালাইজ করে।gemini-embedding-001-এর সাথে, আপনাকে ৩০৭২ ছাড়া অন্যান্য ডাইমেনশনের জন্য ম্যানুয়াল নরমালাইজেশন করতে হবে। আরও জানতে ছোট ডাইমেনশনের জন্য কোয়ালিটি নিশ্চিত করা দেখুন।
ব্যাচ এম্বেডিং
লেটেন্সি নিয়ে কোনও সমস্যা না থাকলে, Batch API-এর সাথে Gemini Embeddings মডেল ব্যবহার করে দেখুন। এর ফলে, ডিফল্ট এম্বেডিং মূল্যের ৫০% মূল্যে অনেক বেশি থ্রুপুট পাওয়া যায়। কীভাবে শুরু করবেন তার উদাহরণ ব্যাচ API কুকবুক থেকে দেখুন।
দায়িত্বপূর্ণ ব্যবহার সংক্রান্ত বিজ্ঞপ্তি
জেনারেটিভ AI মডেলের মতো নতুন কন্টেন্ট তৈরি করার পরিবর্তে, Gemini Embedding মডেল শুধুমাত্র আপনার ইনপুট ডেটার ফর্ম্যাটকে সংখ্যাগত উপস্থাপনায় পরিবর্তন করে। Google একটি এম্বেডিং মডেল প্রদান করার জন্য দায়ী যা আপনার ইনপুট ডেটার ফর্ম্যাটকে অনুরোধ করা সংখ্যাসূচক-ফর্ম্যাটে রূপান্তরিত করে, ব্যবহারকারীরা তাদের ইনপুট করা ডেটা এবং ফলস্বরূপ এম্বেডিংয়ের জন্য সম্পূর্ণ দায়িত্ব বজায় রাখে। Gemini Embedding মডেল ব্যবহার করার মাধ্যমে আপনি কনফার্ম করছেন যে আপনার আপলোড করা যেকোনও কন্টেন্টে প্রয়োজনীয় অধিকার আছে। অন্যান্য ব্যক্তির মেধা সম্পত্তি বা গোপনীয়তা অধিকার লঙ্ঘন করে এমন কন্টেন্ট জেনারেট করবেন না। এই পরিষেবা ব্যবহারের ক্ষেত্রে আমাদের নিষিদ্ধ ব্যবহার সংক্রান্ত নীতি এবং Google-এর পরিষেবার শর্তাবলী প্রযোজ্য।
এম্বেডিং ব্যবহার করে তৈরি করা শুরু করুন
মডেলের ক্ষমতা এক্সপ্লোর করতে এবং আপনার এম্বেডিং কীভাবে কাস্টমাইজ ও ভিজ্যুয়ালাইজ করবেন তা জানতে এম্বেডিং কুইকস্টার্ট নোটবুক দেখুন।