এম্বেডিং

জেমিনি এপিআই টেক্সট, ছবি, ভিডিও এবং অন্যান্য কন্টেন্টের জন্য এম্বেডিং তৈরি করার জন্য এম্বেডিং মডেল অফার করে। এই ফলস্বরূপ এম্বেডিংগুলি শব্দার্থিক অনুসন্ধান, শ্রেণিবিন্যাস এবং ক্লাস্টারিংয়ের মতো কাজের জন্য ব্যবহার করা যেতে পারে, যা কীওয়ার্ড-ভিত্তিক পদ্ধতির তুলনায় আরও সঠিক, প্রসঙ্গ-সচেতন ফলাফল প্রদান করে।

সর্বশেষ মডেল, gemini-embedding-2-preview , হল Gemini API-এর প্রথম মাল্টিমোডাল এম্বেডিং মডেল। এটি টেক্সট, ছবি, ভিডিও, অডিও এবং ডকুমেন্টগুলিকে একটি ইউনিফাইড এম্বেডিং স্পেসে ম্যাপ করে, যা ১০০ টিরও বেশি ভাষায় ক্রস-মোডাল অনুসন্ধান, শ্রেণীবিভাগ এবং ক্লাস্টারিং সক্ষম করে। আরও জানতে মাল্টিমোডাল এম্বেডিং বিভাগটি দেখুন। শুধুমাত্র টেক্সট ব্যবহারের ক্ষেত্রে, gemini-embedding-001 এখনও উপলব্ধ।

AI পণ্যগুলির জন্য বিল্ডিং রিট্রিভাল অগমেন্টেড জেনারেশন (RAG) সিস্টেম একটি সাধারণ ব্যবহারের ক্ষেত্রে। উন্নত তথ্যগত নির্ভুলতা, সুসংগততা এবং প্রাসঙ্গিক সমৃদ্ধির সাথে মডেল আউটপুটগুলিকে উল্লেখযোগ্যভাবে বৃদ্ধি করতে এম্বেডিংগুলি গুরুত্বপূর্ণ ভূমিকা পালন করে। আপনি যদি একটি পরিচালিত RAG সমাধান ব্যবহার করতে পছন্দ করেন, তাহলে আমরা ফাইল অনুসন্ধান সরঞ্জাম তৈরি করেছি যা RAG পরিচালনা করা সহজ এবং আরও সাশ্রয়ী করে তোলে।

এম্বেডিং তৈরি করা হচ্ছে

টেক্সট এম্বেডিং তৈরি করতে 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 "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?"
        }]
        }
    }'

আপনি স্ট্রিংগুলির তালিকা হিসাবে পাস করে একসাথে একাধিক অংশের জন্য এম্বেডিং তৈরি করতে পারেন।

পাইথন

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 "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 ব্যবহার করে টেক্সটের স্ট্রিংগুলির অর্থ কতটা মিল তা পরীক্ষা করতে পারেন।

পাইথন

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

কোড স্নিপেটগুলি দেখাবে যে চালানোর সময় টেক্সটের বিভিন্ন অংশগুলি একে অপরের সাথে কতটা মিল।

সমর্থিত কাজের ধরণ

কাজের ধরণ বিবরণ উদাহরণ
অর্থগত_সাদৃশ্য টেক্সট সাদৃশ্য মূল্যায়নের জন্য এম্বেডিংগুলি অপ্টিমাইজ করা হয়েছে। সুপারিশ ব্যবস্থা, সদৃশ সনাক্তকরণ
শ্রেণীবিভাগ প্রিসেট লেবেল অনুসারে পাঠ্য শ্রেণীবদ্ধ করার জন্য এম্বেডিংগুলি অপ্টিমাইজ করা হয়েছে। অনুভূতি বিশ্লেষণ, স্প্যাম সনাক্তকরণ
ক্লাস্টারিং এম্বেডিংগুলিকে তাদের মিলের উপর ভিত্তি করে ক্লাস্টার টেক্সটের জন্য অপ্টিমাইজ করা হয়েছে। নথি সংগঠন, বাজার গবেষণা, অসঙ্গতি সনাক্তকরণ
পুনরুদ্ধার_ডকুমেন্ট ডকুমেন্ট অনুসন্ধানের জন্য অপ্টিমাইজ করা এম্বেডিং। অনুসন্ধানের জন্য নিবন্ধ, বই, অথবা ওয়েব পৃষ্ঠাগুলির সূচী তৈরি করা।
পুনরুদ্ধার_কোয়েরি সাধারণ অনুসন্ধান প্রশ্নের জন্য অপ্টিমাইজ করা এম্বেডিং। প্রশ্নের জন্য RETRIEVAL_QUERY ব্যবহার করুন; নথি পুনরুদ্ধারের জন্য RETRIEVAL_DOCUMENT ব্যবহার করুন। কাস্টম অনুসন্ধান
কোড_রিট্রিভাল_কোয়েরি প্রাকৃতিক ভাষা প্রশ্নের উপর ভিত্তি করে কোড ব্লক পুনরুদ্ধারের জন্য অপ্টিমাইজ করা এম্বেডিং। প্রশ্নের জন্য CODE_RETRIEVAL_QUERY ব্যবহার করুন; কোড ব্লক পুনরুদ্ধারের জন্য RETRIEVAL_DOCUMENT ব্যবহার করুন। কোড পরামর্শ এবং অনুসন্ধান
প্রশ্ন_উত্তর প্রশ্নোত্তর সিস্টেমে প্রশ্নের জন্য এম্বেডিং, প্রশ্নের উত্তর দেয় এমন নথি খুঁজে বের করার জন্য অপ্টিমাইজ করা হয়েছে। প্রশ্নের জন্য QUESTION_ANSWERING ; নথি পুনরুদ্ধারের জন্য RETRIEVAL_DOCUMENT ব্যবহার করুন। চ্যাটবক্স
FACT_VERIFICATION সম্পর্কে যেসব বিবৃতি যাচাই করা প্রয়োজন, সেইসব নথি উদ্ধারের জন্য অপ্টিমাইজ করা যা বিবৃতির সমর্থনে বা খণ্ডন করার প্রমাণ ধারণ করে। লক্ষ্য পাঠ্যের জন্য FACT_VERIFICATION ব্যবহার করুন; নথি উদ্ধারের জন্য RETRIEVAL_DOCUMENT ব্যবহার করুন। স্বয়ংক্রিয় তথ্য-পরীক্ষা ব্যবস্থা

এম্বেডিং আকার নিয়ন্ত্রণ করা

gemini-embedding-001 এবং gemini-embedding-2-preview উভয়কেই Matryoshka Representation Learning (MRL) কৌশল ব্যবহার করে প্রশিক্ষণ দেওয়া হয় যা একটি মডেলকে উচ্চ-মাত্রিক এমবেডিং শিখতে শেখায় যার প্রাথমিক অংশ (অথবা উপসর্গ) থাকে যা একই ডেটার কার্যকর, সহজ সংস্করণও বটে।

আউটপুট এম্বেডিং ভেক্টরের আকার নিয়ন্ত্রণ করতে output_dimensionality প্যারামিটার ব্যবহার করুন। একটি ছোট আউটপুট ডাইমেনশন্যালিটি নির্বাচন করলে স্টোরেজ স্পেস বাঁচানো যায় এবং ডাউনস্ট্রিম অ্যাপ্লিকেশনের জন্য কম্পিউটেশনাল দক্ষতা বৃদ্ধি পায়, যদিও মানের দিক থেকে খুব কম ত্যাগ স্বীকার করতে হয়। ডিফল্টরূপে, উভয় মডেলই 3072-ডাইমেনশনাল এম্বেডিং আউটপুট করে, তবে স্টোরেজ স্পেস বাঁচাতে আপনি গুণমান না হারিয়ে এটিকে ছোট আকারে ছোট করতে পারেন। আমরা 768, 1536, অথবা 3072 আউটপুট ডাইমেনশন ব্যবহার করার পরামর্শ দিই।

পাইথন

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 '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

ছোট আকারের জন্য মান নিশ্চিত করা

৩০৭২ মাত্রার এম্বেডিং স্বাভাবিক করা হয়েছে। স্বাভাবিক করা এম্বেডিংগুলি ভেক্টর দিক তুলনা করে আরও সঠিক শব্দার্থিক সাদৃশ্য তৈরি করে, মাত্রার তুলনা করে না। ৭৬৮ এবং ১৫৩৬ সহ অন্যান্য মাত্রার জন্য, আপনাকে নিম্নরূপ এম্বেডিংগুলিকে স্বাভাবিক করতে হবে:

পাইথন

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 স্কোর
২০৪৮ ৬৮.১৬
১৫৩৬ ৬৮.১৭
৭৬৮ ৬৭.৯৯
৫১২ ৬৭.৫৫
২৫৬ ৬৬.১৯
১২৮ ৬৩.৩১

মাল্টিমোডাল এম্বেডিং

gemini-embedding-2-preview মডেলটি মাল্টিমোডাল ইনপুট সমর্থন করে, যা আপনাকে টেক্সটের পাশাপাশি ছবি, ভিডিও, অডিও এবং ডকুমেন্ট কন্টেন্ট এম্বেড করার অনুমতি দেয়। সমস্ত মোডালিটি একই এম্বেডিং স্পেসে ম্যাপ করা হয়, যা ক্রস-মোডাল অনুসন্ধান এবং তুলনা সক্ষম করে।

সমর্থিত পদ্ধতি এবং সীমা

সামগ্রিকভাবে সর্বোচ্চ ইনপুট টোকেনের সীমা হল 8192 টোকেন।

মোডালিটি স্পেসিফিকেশন এবং সীমা
টেক্সট ৮,১৯২টি পর্যন্ত টোকেন সমর্থন করে।
ভাবমূর্তি প্রতি অনুরোধে সর্বোচ্চ ৬টি ছবি। সমর্থিত ফর্ম্যাট: PNG, JPEG।
অডিও সর্বোচ্চ সময়কাল ৮০ সেকেন্ড। সমর্থিত ফর্ম্যাট: MP3, WAV।
ভিডিও সর্বোচ্চ সময়কাল ১২৮ সেকেন্ড। সমর্থিত ফর্ম্যাট: MP4, MOV, সমর্থিত কোডেক: H264, H265, AV1, VP9
ডকুমেন্টস (পিডিএফ) সর্বোচ্চ ৬ পৃষ্ঠা।

ছবি এম্বেড করা হচ্ছে

নিম্নলিখিত উদাহরণে gemini-embedding-2-preview ব্যবহার করে কীভাবে একটি ছবি এম্বেড করতে হয় তা দেখানো হয়েছে।

ছবিগুলি ইনলাইন ডেটা হিসাবে অথবা ফাইলস এপিআই এর মাধ্যমে আপলোড করা ফাইল হিসাবে সরবরাহ করা যেতে পারে।

পাইথন

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-preview',
    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-preview',
        contents: [{
            inlineData: {
                mimeType: 'image/png',
                data: imgBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

বিশ্রাম

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview: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 অ্যারেতে একাধিক এন্ট্রি পাঠানো হলে প্রতিটি এন্ট্রির জন্য পৃথক এম্বেডিং ফেরত আসে।
  • পোস্ট-লেভেল উপস্থাপনা: একাধিক মিডিয়া আইটেম সহ সোশ্যাল মিডিয়া পোস্টের মতো জটিল বস্তুর জন্য, আমরা একটি সুসংগত পোস্ট-লেভেল উপস্থাপনা তৈরি করতে পৃথক এম্বেডিংগুলিকে একত্রিত করার (উদাহরণস্বরূপ, গড় দ্বারা) সুপারিশ করি।

নিচের উদাহরণে দেখানো হয়েছে কিভাবে টেক্সট এবং ইমেজ ইনপুটের জন্য একটি সমষ্টিগত এম্বেডিং তৈরি করতে হয়। একাধিক ইনপুট একত্রিত করতে parts ফিল্ড ব্যবহার করুন:

পাইথন

from google import genai
from google.genai import types

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

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

    console.log(response.embeddings);
}

main();

বিশ্রাম

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

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

অন্যদিকে, এই উদাহরণটি একটি এম্বেডিং কলে একাধিক এম্বেডিং তৈরি করে:

পাইথন

from google import genai
from google.genai import types

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

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

    console.log(response.embeddings);
}

main();

বিশ্রাম

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

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

অডিও এম্বেড করা হচ্ছে

নিম্নলিখিত উদাহরণে gemini-embedding-2-preview ব্যবহার করে একটি অডিও ফাইল এম্বেড করার পদ্ধতি দেখানো হয়েছে।

অডিও ফাইলগুলি ইনলাইন ডেটা হিসাবে অথবা ফাইলস এপিআই এর মাধ্যমে আপলোড করা ফাইল হিসাবে সরবরাহ করা যেতে পারে।

পাইথন

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-preview',
    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-preview',
        contents: [{
            inlineData: {
                mimeType: 'audio/mpeg',
                data: audioBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

বিশ্রাম

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview: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-preview ব্যবহার করে কীভাবে একটি ভিডিও এম্বেড করতে হয় তা দেখানো হয়েছে।

ভিডিওগুলি ইনলাইন ডেটা হিসাবে অথবা ফাইলস এপিআই এর মাধ্যমে আপলোড করা ফাইল হিসাবে সরবরাহ করা যেতে পারে।

পাইথন

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-preview',
    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-preview',
        contents: [{
            inlineData: {
                mimeType: 'video/mp4',
                data: videoBase64,
            },
        }],
    });

    console.log(response.embeddings);
}

main();

বিশ্রাম

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

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

যদি আপনার ১২৮ সেকেন্ডের বেশি সময় ধরে ভিডিও এম্বেড করার প্রয়োজন হয়, তাহলে আপনি ভিডিওটিকে ওভারল্যাপিং সেগমেন্টে ভাগ করে আলাদা আলাদাভাবে এম্বেড করতে পারেন।

নথি এম্বেড করা হচ্ছে

পিডিএফ ফরম্যাটে ডকুমেন্ট সরাসরি এমবেড করা যেতে পারে। মডেলটি প্রতিটি পৃষ্ঠার ভিজ্যুয়াল এবং টেক্সট কন্টেন্ট প্রক্রিয়া করে।

পিডিএফ ফাইলগুলি ইনলাইন ডেটা হিসাবে অথবা ফাইলস এপিআই এর মাধ্যমে আপলোড করা ফাইল হিসাবে সরবরাহ করা যেতে পারে।

পাইথন

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

    console.log(response.embeddings);
}

main();

বিশ্রাম

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview: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): এম্বেডিংগুলি একটি মডেলের প্রেক্ষাপটে প্রাসঙ্গিক তথ্য পুনরুদ্ধার এবং অন্তর্ভুক্ত করে জেনারেট করা টেক্সটের মান উন্নত করে।
  • তথ্য পুনরুদ্ধার: ইনপুট টেক্সটের একটি অংশের মাধ্যমে সবচেয়ে শব্দার্থগতভাবে অনুরূপ টেক্সট বা ডকুমেন্ট অনুসন্ধান করুন।

    ডকুমেন্ট সার্চ টিউটোরিয়াল

  • অনুসন্ধান পুনঃর‍্যাঙ্কিং : কোয়েরির বিপরীতে প্রাথমিক ফলাফলগুলিকে অর্থগতভাবে স্কোর করে সবচেয়ে প্রাসঙ্গিক আইটেমগুলিকে অগ্রাধিকার দিন।

    রির‍্যাঙ্কিং টিউটোরিয়াল খুঁজুন

  • অসঙ্গতি সনাক্তকরণ: এম্বেডিংয়ের গ্রুপগুলির তুলনা লুকানো প্রবণতা বা বহির্মুখীতা সনাক্ত করতে সাহায্য করতে পারে।

    অ্যানোমালি সনাক্তকরণ টিউটোরিয়াল

  • শ্রেণীবিভাগ: টেক্সটের বিষয়বস্তুর উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে শ্রেণীবদ্ধ করুন, যেমন অনুভূতি বিশ্লেষণ বা স্প্যাম সনাক্তকরণ

    শ্রেণীবিভাগ টিউটোরিয়াল

  • ক্লাস্টারিং: আপনার এমবেডিংগুলির ক্লাস্টার এবং ভিজ্যুয়ালাইজেশন তৈরি করে জটিল সম্পর্কগুলিকে কার্যকরভাবে উপলব্ধি করুন।

    ক্লাস্টারিং ভিজ্যুয়ালাইজেশন টিউটোরিয়াল

এম্বেডিং সংরক্ষণ করা হচ্ছে

যখন আপনি এম্বেডিংগুলিকে উৎপাদনে নিয়ে যান, তখন উচ্চ-মাত্রিক এম্বেডিংগুলিকে দক্ষতার সাথে সংরক্ষণ, সূচীকরণ এবং পুনরুদ্ধারের জন্য ভেক্টর ডাটাবেস ব্যবহার করা সাধারণ। গুগল ক্লাউড পরিচালিত ডেটা পরিষেবাগুলি অফার করে যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে যেমন BigQuery , AlloyDB , এবং Cloud SQL

নিম্নলিখিত টিউটোরিয়ালগুলি জেমিনি এম্বেডিংয়ের মাধ্যমে অন্যান্য তৃতীয় পক্ষের ভেক্টর ডাটাবেসগুলি কীভাবে ব্যবহার করবেন তা দেখায়।

মডেল সংস্করণ

জেমিনি এম্বেডিং ২ প্রিভিউ

সম্পত্তি বিবরণ
মডেল কোড

জেমিনি এপিআই

gemini-embedding-2-preview

সমর্থিত ডেটা প্রকারগুলি

ইনপুট

টেক্সট, ছবি, ভিডিও, অডিও, পিডিএফ

আউটপুট

টেক্সট এম্বেডিং

টোকেন সীমা [*]

ইনপুট টোকেন সীমা

৮,১৯২

আউটপুট মাত্রার আকার

নমনীয়, সমর্থন করে: 128 - 3072, প্রস্তাবিত: 768, 1536, 3072

সংস্করণ
আরও বিস্তারিত জানার জন্য মডেল সংস্করণের ধরণগুলি পড়ুন।
  • প্রিভিউ: gemini-embedding-2-preview
সর্বশেষ আপডেট নভেম্বর ২০২৫

জেমিনি এম্বেডিং

সম্পত্তি বিবরণ
মডেল কোড

জেমিনি এপিআই

gemini-embedding-001

সমর্থিত ডেটা প্রকারগুলি

ইনপুট

টেক্সট

আউটপুট

টেক্সট এম্বেডিং

টোকেন সীমা [*]

ইনপুট টোকেন সীমা

২,০৪৮

আউটপুট মাত্রার আকার

নমনীয়, সমর্থন করে: 128 - 3072, প্রস্তাবিত: 768, 1536, 3072

সংস্করণ
আরও বিস্তারিত জানার জন্য মডেল সংস্করণের ধরণগুলি পড়ুন।
  • স্থিতিশীল: gemini-embedding-001
সর্বশেষ আপডেট জুন ২০২৫

অবচয়হীন এম্বেডিং মডেলগুলির জন্য, অবচয় পৃষ্ঠাটি দেখুন।

মিথুন-এমবেডিং-০০১ থেকে মাইগ্রেশন

gemini-embedding-001 এবং gemini-embedding-2-preview মধ্যে থাকা এম্বেডিং স্পেসগুলি অসঙ্গত । এর অর্থ হল আপনি একটি মডেল দ্বারা তৈরি এম্বেডিংগুলিকে অন্য মডেল দ্বারা তৈরি এম্বেডিংয়ের সাথে সরাসরি তুলনা করতে পারবেন না। আপনি যদি gemini-embedding-2-preview এ আপগ্রেড করেন, তাহলে আপনাকে আপনার বিদ্যমান সমস্ত ডেটা পুনরায় এম্বেড করতে হবে।

ব্যাচ এম্বেডিং

যদি ল্যাটেন্সি কোনও উদ্বেগের বিষয় না হয়, তাহলে Batch API সহ Gemini Embeddings মডেলগুলি ব্যবহার করে দেখুন। এটি ডিফল্ট Embedding মূল্যের 50% এ অনেক বেশি থ্রুপুট প্রদান করতে সাহায্য করে। Batch API কুকবুক থেকে কীভাবে শুরু করবেন তার উদাহরণ খুঁজুন।

দায়িত্বশীল ব্যবহারের বিজ্ঞপ্তি

জেনারেটিভ এআই মডেলগুলি যা নতুন কন্টেন্ট তৈরি করে তার বিপরীতে, জেমিনি এম্বেডিং মডেলটি কেবল আপনার ইনপুট ডেটার ফর্ম্যাটকে একটি সংখ্যাসূচক উপস্থাপনায় রূপান্তর করার উদ্দেশ্যে তৈরি। যদিও গুগল একটি এমবেডিং মডেল সরবরাহ করার জন্য দায়ী যা আপনার ইনপুট ডেটার ফর্ম্যাটকে অনুরোধ করা সংখ্যাসূচক-ফরম্যাটে রূপান্তরিত করে, ব্যবহারকারীরা তাদের ইনপুট করা ডেটা এবং এর ফলে এম্বেডিংয়ের সম্পূর্ণ দায়িত্ব বহন করে। জেমিনি এম্বেডিং মডেল ব্যবহার করে আপনি নিশ্চিত করেন যে আপনার আপলোড করা যেকোনো কন্টেন্টের উপর আপনার প্রয়োজনীয় অধিকার রয়েছে। এমন কন্টেন্ট তৈরি করবেন না যা অন্যদের বৌদ্ধিক সম্পত্তি বা গোপনীয়তার অধিকার লঙ্ঘন করে। এই পরিষেবার আপনার ব্যবহার আমাদের নিষিদ্ধ ব্যবহার নীতি এবং গুগলের পরিষেবার শর্তাবলী সাপেক্ষে।

এম্বেডিং দিয়ে তৈরি করা শুরু করুন

মডেলের ক্ষমতাগুলি অন্বেষণ করতে এবং আপনার এম্বেডিংগুলিকে কীভাবে কাস্টমাইজ এবং ভিজ্যুয়ালাইজ করতে হয় তা শিখতে এম্বেডিং কুইকস্টার্ট নোটবুকটি দেখুন।