Osadzone elementy

Gemini API obsługuje kilka modeli embeddingu, które generują embeddingi słów, wyrażeń, kodu i zdań. Uzyskane w ten sposób embeddingi można następnie wykorzystać do zadań takich jak wyszukiwanie semantyczne, klasyfikacja tekstu czy grupowanie.

Co to są wbudowane modele?

Umieszczanie to liczbowe reprezentacje tekstu (lub innych formatów multimediów), które odzwierciedlają relacje między danymi wejściowymi. Wstawianie tekstu polega na konwertowaniu tekstu na tablice liczb zmiennoprzecinkowych, czyli wektorów. Te wektory są zaprojektowane tak, aby odzwierciedlać znaczenie tekstu. Długość tablicy wektorów to wymiar wektora. Fragment tekstu może być reprezentowany przez wektor zawierający setki wymiarów.

Reprezentacje właściwościowe uchwytują znaczenie semantyczne i kontekst, dzięki czemu teksty o podobnym znaczeniu mają „bliższe” reprezentacje. Na przykład zdania „Zabiorę psa do weterynarza” i „Zabiorę kota do weterynarza” będą miały wbudowane elementy, które są blisko siebie w przestrzeni wektorowej.

Za pomocą wektorów własnego podobieństwa możesz porównywać różne teksty i poznawać ich wzajemne zależności. Jeśli na przykład kody uczenia głębokiego tekstu „kot” i „pies” są blisko siebie, można wywnioskować, że te słowa są podobne pod względem znaczenia, kontekstu lub obu tych czynników. Umożliwia to stosowanie AI w różnych typowych przypadkach.

Generowanie wektorów

Aby wygenerować ukryte reprezentacje tekstu, użyj metody embedContent:

Python

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)

JavaScript

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

Przeczytaj

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)

REST

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

Możesz też wygenerować embeddingi dla wielu kawałków naraz, przekazując je jako listę ciągów znaków.

Typy zadań

Podczas tworzenia systemów generowania wspomaganego przez wyszukiwanie w zapisanych informacjach (RAG) często stosuje się wektory dystrybucyjne tekstu do wyszukiwania podobieństw. W niektórych przypadkach może to obniżyć jakość, ponieważ pytania i ich odpowiedzi nie są podobne pod względem semantycznym. Na przykład pytanie „Dlaczego niebo jest niebieskie?” i odpowiedź „Rozproszenie światła słonecznego powoduje niebieski kolor” mają wyraźnie różne znaczenia, co oznacza, że system RAG nie będzie automatycznie rozpoznawał ich wzajemnych relacji.

Typy zadań umożliwiają generowanie zoptymalizowanych wektorów w przypadku określonych zadań, co pozwala zaoszczędzić czas i pieniądze oraz poprawić wydajność.

Python

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)

JavaScript

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

REST

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

Obsługiwane typy zadań

Typ zadania Opis
SEMANTIC_SIMILARITY Służy do generowania wektorów osadzonych, które są optymalizowane pod kątem oceny podobieństwa tekstu.
CLASSIFICATION Służy do generowania wektorów, które są optymalizowane pod kątem klasyfikowania tekstów według wstępnie zdefiniowanych etykiet.
CLUSTERING Służy do generowania wektorów, które są optymalizowane pod kątem grupowania tekstów na podstawie ich podobieństw.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERINGFACT_VERIFICATION Służy do generowania elementów zastępczych zoptymalizowanych pod kątem wyszukiwania dokumentów lub pobierania informacji.
CODE_RETRIEVAL_QUERY Służy do pobierania bloku kodu na podstawie zapytania w języku naturalnym, np. sortowania tablicy lub odwracania połączonej listy. Wstawianie bloków kodu jest obliczane za pomocą funkcji RETRIEVAL_DOCUMENT.

Przypadki użycia

Węzły tekstowe są używane w różnych typowych przypadkach użycia AI, takich jak:

Modele wektora dystrybucyjnego

Gemini API udostępnia 3 modele, które generują wektory dystrybucyjne tekstu:

Co dalej?

Zapoznaj się z notebookiem z krótkim wprowadzeniem do kodowania za pomocą embeddingów.