এম্বেডিং

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

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

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

এমবেডিং তৈরি করা

টেক্সট এমবেডিং তৈরি করতে embedContent মেথডটি ব্যবহার করুন:

পাইথন

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();

জাভা

import com.google.genai.Client;
import com.google.genai.types.EmbedContentResponse;
import java.util.Collections;

Client client = new Client();

EmbedContentResponse response =
    client.models.embedContent("text-embedding-004", "Why is the sky blue?", null);

response.embeddings().ifPresent(list -> {
  for (var emb : list) {
    System.out.println("Embedding values: " + emb.values().orElse(Collections.emptyList()));
  }
});

যান

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

কর্মক্ষমতা উন্নত করতে কাজের ধরণ নির্দিষ্ট করুন।

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

এমবেডিং সহ টাস্কের প্রকারভেদ ২

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}

উদাহরণ ব্যবহার

পাইথন

# 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}
অনুসন্ধান বা পুনরুদ্ধারের জন্য এটি ব্যবহার করবেন না। এটি শব্দার্থগত পাঠ্য সাদৃশ্যের জন্য উদ্দিষ্ট।

উদাহরণ ব্যবহার

পাইথন

# 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 ব্যবহার করে একাধিক টেক্সট স্ট্রিংয়ের অর্থের সাদৃশ্য যাচাই করতে পারেন।

পাইথন

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?"