رابط برنامهنویسی کاربردی Gemini مدلهای جاسازی را برای تولید جاسازی برای متن، تصاویر، ویدیو و سایر محتوا ارائه میدهد. این جاسازیهای حاصل میتوانند برای کارهایی مانند جستجوی معنایی، طبقهبندی و خوشهبندی استفاده شوند و نتایج دقیقتر و آگاه از متن را نسبت به رویکردهای مبتنی بر کلمه کلیدی ارائه دهند.
آخرین مدل، gemini-embedding-2 ، اولین مدل جاسازی چندوجهی در رابط برنامهنویسی نرمافزار Gemini است. این مدل، متن، تصاویر، ویدئو، صدا و اسناد را در یک فضای جاسازی یکپارچه نگاشت میکند و امکان جستجوی چندوجهی، طبقهبندی و خوشهبندی را در بیش از ۱۰۰ زبان فراهم میکند. برای کسب اطلاعات بیشتر به بخش جاسازیهای چندوجهی مراجعه کنید. برای موارد استفاده فقط متنی، 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();
برو
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}"
موارد استفاده تک ورودی (قالب متقارن)
در موارد استفاده متقارن، برای یک کار مشابه، از قالببندی یکسانی برای پرسوجو و سند استفاده کنید.