Yerleştirmeler

Gemini API, kelimeler, kelime öbekleri, kod ve cümleler için yerleştirmeler oluşturan çeşitli yerleştirme modellerini destekler. Elde edilen bu yerleştirmeler daha sonra birçok farklı görev için kullanılabilir. Örneğin, semantik arama, metin sınıflandırma ve küme oluşturma.

Yerleşim nedir?

Yerleşimler, girişler arasındaki ilişkileri yakalayan metnin (veya diğer medya biçimlerinin) sayısal temsilleridir. Metin yerleştirme, metni vektörler adı verilen kayan noktalı sayı dizilerine dönüştürerek çalışır. Bu vektörler, metnin anlamını yakalayacak şekilde tasarlanmıştır. Yerleştirme dizisinin uzunluğuna vektörün boyut sayısı denir. Bir metin parçası, yüzlerce boyut içeren bir vektörle temsil edilebilir.

Yerleşimler, anlamsal anlamı ve bağlamı yakalar. Bu da benzer anlamlara sahip metinlerin "daha yakın" yerleşimlere sahip olmasına neden olur. Örneğin, "Köpeğimi veterinere götürdüm" ve "Kedimi veterinere götürdüm" cümlelerinin vektör uzayında birbirine yakın yerleştirmeleri olur.

Farklı metinleri karşılaştırmak ve bunların nasıl ilişkili olduğunu anlamak için yerleştirmeleri kullanabilirsiniz. Örneğin, "kedi" ve "köpek" metinlerinin yerleştirilmeleri birbirine yakınsa bu kelimelerin anlam, bağlam veya her ikisi açısından benzer olduğunu anlayabilirsiniz. Bu sayede çeşitli yaygın yapay zeka kullanım alanları oluşturulabilir.

Yerleştirilmiş öğeler oluşturma

Metin gömmeleri oluşturmak için embedContent yöntemini kullanın:

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")

result = client.models.embed_content(
        model="gemini-embedding-exp-03-07",
        contents="What is the meaning of life?")

print(result.embeddings)
import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-exp-03-07',
        contents: 'What is the meaning of life?',
    });

    console.log(response.embeddings);
}

main();
ctx := context.Background()

client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
    log.Fatal(err)
}
defer client.Close()

em := client.EmbeddingModel("gemini-embedding-exp-03-07")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))

if err != nil {
    panic(err)
}
fmt.Println(res.Embedding.Values)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]}
    }'

Ayrıca, bunları dize listesi olarak göndererek aynı anda birden fazla parça için yerleştirme oluşturabilirsiniz.

Görev türleri

Almayla Artırılmış Üretim (RAG) sistemleri oluştururken benzerlik araması yapmak için metin yerleştirmelerini kullanmak yaygın bir tasarımdır. Bazı durumlarda, sorular ve yanıtları anlam açısından benzer olmadığından bu durum kalitenin düşmesine neden olabilir. Örneğin, "Gökyüzü neden mavi?" gibi bir soru ve "Güneş ışığının dağılması mavi renge neden olur." gibi bir yanıt, ifade olarak birbirinden oldukça farklı anlamlara sahiptir. Bu da bir RAG sisteminin bu iki ifade arasındaki ilişkiyi otomatik olarak tanımayacağı anlamına gelir.

Görev türleri, belirli görevler için optimize edilmiş yerleştirmeler oluşturmanıza olanak tanır. Böylece zamandan ve maliyetten tasarruf eder, performansı iyileştirirsiniz.

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

result = client.models.embed_content(
        model="gemini-embedding-exp-03-07",
        contents="What is the meaning of life?",
        config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-exp-03-07',
        contents: 'What is the meaning of life?',
        config: {
            taskType: "SEMANTIC_SIMILARITY",
        }
    });

    console.log(response.embeddings);
}

main();
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]},
     "taskType": "SEMANTIC_SIMILARITY"
    }'

Desteklenen görev türleri

Görev türü Açıklama
SEMANTIC_SIMILARITY Metin benzerliğini değerlendirmek için optimize edilmiş yerleştirmeler oluşturmak amacıyla kullanılır.
CLASSIFICATION Metinleri önceden ayarlanmış etiketlere göre sınıflandırmak için optimize edilmiş yerleştirmeler oluşturmak amacıyla kullanılır.
CLUSTERING Metinleri benzerliklerine göre kümelemek için optimize edilmiş gömme noktaları oluşturmak amacıyla kullanılır.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING ve FACT_VERIFICATION Doküman arama veya bilgi alma için optimize edilmiş yerleştirmeler oluşturmak amacıyla kullanılır.
CODE_RETRIEVAL_QUERY Doğal dil sorgusuna göre bir kod bloğu almak için kullanılır (ör. bir diziyi sıralama veya bağlı listeyi tersine çevirme). Kod bloklarının yerleştirmeleri RETRIEVAL_DOCUMENT kullanılarak hesaplanır.

Kullanım alanları

Metin yerleştirmeleri, aşağıdakiler gibi çeşitli yaygın yapay zeka kullanım alanlarında kullanılır:

Modelleri yerleştirme

Gemini API, metin yerleştirmeleri oluşturan üç model sunar:

Sırada ne var?

Embedding'ler hızlı başlangıç not defterine göz atın.