جاسازی‌ها

رابط برنامه‌نویسی کاربردی Gemini مدل‌های جاسازی را برای تولید جاسازی برای متن، تصاویر، ویدیو و سایر محتوا ارائه می‌دهد. این جاسازی‌های حاصل می‌توانند برای کارهایی مانند جستجوی معنایی، طبقه‌بندی و خوشه‌بندی استفاده شوند و نتایج دقیق‌تر و آگاه از متن را نسبت به رویکردهای مبتنی بر کلمه کلیدی ارائه دهند.

آخرین مدل، gemini-embedding-2-preview ، اولین مدل جاسازی چندوجهی در رابط برنامه‌نویسی نرم‌افزار Gemini است. این مدل، متن، تصاویر، ویدئو، صدا و اسناد را در یک فضای جاسازی یکپارچه نگاشت می‌کند و امکان جستجوی چندوجهی، طبقه‌بندی و خوشه‌بندی را در بیش از ۱۰۰ زبان فراهم می‌کند. برای کسب اطلاعات بیشتر به بخش جاسازی‌های چندوجهی مراجعه کنید. برای موارد استفاده فقط متنی، gemini-embedding-001 همچنان در دسترس است.

ساخت سیستم‌های بازیابی افزوده نسل (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 برای متن هدف و RETRIEVAL_DOCUMENT برای اسنادی که باید بازیابی شوند استفاده کنید. سیستم‌های خودکار بررسی واقعیت

کنترل اندازه جاسازی

هر دو gemini-embedding-001 و gemini-embedding-2-preview با استفاده از تکنیک یادگیری نمایش ماتریوشکا (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، یک معیار رایج برای جاسازی‌ها، را برای ابعاد مختلف نشان می‌دهد. نکته قابل توجه این است که نتیجه نشان می‌دهد عملکرد صرفاً به اندازه بُعد جاسازی وابسته نیست، و ابعاد پایین‌تر به نمراتی قابل مقایسه با همتایان خود در ابعاد بالاتر دست می‌یابند.

ابعاد MRL امتیاز MTEB
۲۰۴۸ ۶۸.۱۶
۱۵۳۶ ۶۸.۱۷
۷۶۸ عدد ۶۷.۹۹
۵۱۲ ۶۷.۵۵
۲۵۶ ۶۶.۱۹
۱۲۸ ۶۳.۳۱

جاسازی‌های چندوجهی

مدل gemini-embedding-2-preview از ورودی چندوجهی پشتیبانی می‌کند و به شما امکان می‌دهد محتوای تصاویر، ویدیو، صدا و اسناد را در کنار متن جاسازی کنید. همه روش‌ها در یک فضای جاسازی یکسان نگاشت می‌شوند و امکان جستجو و مقایسه بین روشی را فراهم می‌کنند.

روش‌ها و محدودیت‌های پشتیبانی‌شده

حداکثر تعداد توکن‌های ورودی ۸۱۹۲ توکن است.

روش مشخصات و محدودیت‌ها
متن حداکثر ۸۱۹۲ توکن را پشتیبانی می‌کند.
تصویر حداکثر ۶ تصویر در هر درخواست. فرمت‌های پشتیبانی شده: PNG، JPEG.
صوتی حداکثر مدت زمان ۸۰ ثانیه. فرمت‌های پشتیبانی شده: MP3، WAV.
ویدئو حداکثر مدت زمان ۱۲۸ ثانیه. فرمت‌های پشتیبانی‌شده: MP4، MOV، کدک‌های پشتیبانی‌شده: H264، H265، AV1، VP9
اسناد (پی دی اف) حداکثر ۶ صفحه.

جاسازی تصاویر

مثال زیر نحوه جاسازی یک تصویر با استفاده از gemini-embedding-2-preview را نشان می‌دهد.

تصاویر می‌توانند به عنوان داده‌های درون‌خطی یا به عنوان فایل‌های آپلود شده از طریق API فایل‌ها ارائه شوند.

پایتون

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 را نشان می‌دهد.

فایل‌های صوتی می‌توانند به صورت داده‌های درون‌خطی یا به صورت فایل‌های آپلود شده از طریق API فایل‌ها ارائه شوند.

پایتون

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 را نشان می‌دهد.

ویدیوها می‌توانند به عنوان داده‌های درون‌خطی یا به عنوان فایل‌های آپلود شده از طریق API فایل‌ها ارائه شوند.

پایتون

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

اگر نیاز به جاسازی ویدیوهایی با طول بیش از ۱۲۸ ثانیه دارید، می‌توانید ویدیو را به بخش‌های هم‌پوشان تقسیم کنید و آن بخش‌ها را به‌صورت جداگانه جاسازی کنید.

جاسازی اسناد

اسناد با فرمت PDF را می‌توان مستقیماً جاسازی کرد. این مدل محتوای بصری و متنی هر صفحه را پردازش می‌کند.

فایل‌های PDF می‌توانند به عنوان داده‌های درون‌خطی یا به عنوان فایل‌های آپلود شده از طریق API فایل‌ها ارائه شوند.

پایتون

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

موارد استفاده

جاسازی متن برای انواع موارد استفاده رایج هوش مصنوعی، مانند موارد زیر، بسیار مهم است:

  • تولید افزوده‌شده با بازیابی (RAG): جاسازی‌ها با بازیابی و گنجاندن اطلاعات مرتبط در متن یک مدل، کیفیت متن تولید شده را افزایش می‌دهند.
  • بازیابی اطلاعات: جستجوی متن یا اسنادی که از نظر معنایی بیشترین شباهت را به یک متن ورودی دارند.

    جستجوی اسناد

  • رتبه‌بندی مجدد جستجو : با امتیازدهی معنایی نتایج اولیه در برابر عبارت جستجو، مرتبط‌ترین موارد را اولویت‌بندی کنید.

    آموزش تغییر رتبه‌بندی جستجو -

  • تشخیص ناهنجاری: مقایسه گروه‌های جاسازی‌ها می‌تواند به شناسایی روندهای پنهان یا داده‌های پرت کمک کند.

    آموزش تشخیص ناهنجاری

  • طبقه‌بندی: دسته‌بندی خودکار متن بر اساس محتوای آن، مانند تحلیل احساسات یا تشخیص هرزنامه

    آموزش طبقه‌بندی

  • خوشه‌بندی: با ایجاد خوشه‌ها و تجسم‌هایی از جاسازی‌های خود، روابط پیچیده را به طور مؤثر درک کنید.

    آموزش خوشه‌بندی و مصورسازی نمودار

ذخیره سازی جاسازی ها

وقتی جاسازی‌ها را به مرحله تولید می‌رسانید، استفاده از پایگاه‌های داده برداری برای ذخیره، فهرست‌بندی و بازیابی کارآمد جاسازی‌های با ابعاد بالا رایج است. Google Cloud سرویس‌های داده مدیریت‌شده‌ای را ارائه می‌دهد که می‌توانند برای این منظور استفاده شوند، از جمله BigQuery ، AlloyDB و Cloud SQL .

آموزش‌های زیر نحوه استفاده از سایر پایگاه‌های داده برداری شخص ثالث را با Gemini Embedding نشان می‌دهند.

نسخه‌های مدل

پیش‌نمایش Gemini Embedding 2

ملک توضیحات
کد مدل

API جمینی

gemini-embedding-2-preview

انواع داده پشتیبانی شده را

ورودی

متن، تصویر، ویدئو، صدا، پی‌دی‌اف

خروجی

جاسازی متن

محدودیت‌های توکن [*]

محدودیت توکن ورودی

۸,۱۹۲

اندازه ابعاد خروجی

انعطاف‌پذیر، پشتیبانی از: ۱۲۸ - ۳۰۷۲، توصیه شده: ۷۶۸، ۱۵۳۶، ۳۰۷۲

نسخه
برای جزئیات بیشتر ، الگوهای نسخه مدل را مطالعه کنید.
  • پیش‌نمایش: gemini-embedding-2-preview
آخرین به‌روزرسانی نوامبر ۲۰۲۵

جاسازی جمینی

ملک توضیحات
کد مدل

API جمینی

gemini-embedding-001

انواع داده پشتیبانی شده را

ورودی

متن

خروجی

جاسازی متن

محدودیت‌های توکن [*]

محدودیت توکن ورودی

۲,۰۴۸

اندازه ابعاد خروجی

انعطاف‌پذیر، پشتیبانی از: ۱۲۸ - ۳۰۷۲، توصیه شده: ۷۶۸، ۱۵۳۶، ۳۰۷۲

نسخه
برای جزئیات بیشتر ، الگوهای نسخه مدل را مطالعه کنید.
  • پایدار: gemini-embedding-001
آخرین به‌روزرسانی ژوئن ۲۰۲۵

برای مدل‌های منسوخ‌شده‌ی Embeddings، به صفحه‌ی Deprecations مراجعه کنید.

مهاجرت از gemini-embedding-001

فضاهای تعبیه‌شده بین gemini-embedding-001 و gemini-embedding-2-preview با هم سازگار نیستند . این بدان معناست که شما نمی‌توانید جاسازی‌های ایجاد شده توسط یک مدل را مستقیماً با جاسازی‌های ایجاد شده توسط مدل دیگر مقایسه کنید. اگر در حال ارتقا به gemini-embedding-2-preview هستید، باید تمام داده‌های موجود خود را دوباره جاسازی کنید.

جاسازی‌های دسته‌ای

اگر تأخیر نگران‌کننده نیست، از مدل‌های Gemini Embeddings با Batch API استفاده کنید. این کار امکان دستیابی به توان عملیاتی بسیار بالاتر را با ۵۰٪ قیمت پیش‌فرض Embedding فراهم می‌کند. مثال‌هایی در مورد نحوه شروع کار را در کتاب آشپزی Batch API بیابید.

اطلاعیه استفاده مسئولانه

برخلاف مدل‌های هوش مصنوعی مولد که محتوای جدید ایجاد می‌کنند، مدل جاسازی Gemini فقط برای تبدیل قالب داده‌های ورودی شما به یک نمایش عددی در نظر گرفته شده است. در حالی که گوگل مسئول ارائه یک مدل جاسازی است که قالب داده‌های ورودی شما را به قالب عددی درخواستی تبدیل می‌کند، کاربران مسئولیت کامل داده‌هایی را که وارد می‌کنند و جاسازی‌های حاصل از آن را بر عهده دارند. با استفاده از مدل جاسازی Gemini، شما تأیید می‌کنید که از حقوق لازم برای هر محتوایی که آپلود می‌کنید، برخوردار هستید. محتوایی تولید نکنید که حقوق مالکیت معنوی یا حریم خصوصی دیگران را نقض کند. استفاده شما از این سرویس تابع سیاست استفاده ممنوعه ما و شرایط خدمات گوگل است.

شروع به ساخت با جاسازی‌ها کنید

برای بررسی قابلیت‌های مدل و یادگیری نحوه سفارشی‌سازی و تجسم جاسازی‌های خود ، دفترچه راهنمای شروع سریع جاسازی‌ها را بررسی کنید.