Embeddings

L'API Gemini est compatible avec plusieurs modèles d'embedding qui génèrent des embeddings pour les mots, les expressions, le code et les phrases. Les représentations vectorielles continues obtenues peuvent ensuite être utilisées pour des tâches telles que la recherche sémantique, la classification de texte et le clustering, entre autres.

-Que sont les embeddings ?

Les représentations vectorielles continues sont des représentations numériques de texte (ou d'autres formats multimédias) qui capturent les relations entre les entrées. Les embeddings textuels fonctionnent en convertissant le texte en tableaux de nombres à virgule flottante, appelés vecteurs. Ces vecteurs sont conçus pour capturer la signification du texte. La longueur du tableau d'embedding est appelée dimensionnalité du vecteur. Un passage de texte peut être représenté par un vecteur contenant des centaines de dimensions.

Les embeddings capturent la signification sémantique et le contexte, ce qui signifie que les embeddings "plus proches" correspondent à des textes dont la signification est similaire. Par exemple, les phrases "J'ai emmené mon chien chez le vétérinaire" et "J'ai emmené mon chat chez le vétérinaire" auraient des représentations vectorielles continues proches les unes des autres dans l'espace vectoriel.

Vous pouvez utiliser des représentations vectorielles continues pour comparer différents textes et comprendre leur relation. Par exemple, si les représentations vectorielles continues du texte "chat" et "chien" sont proches, vous pouvez en déduire que ces mots sont similaires en termes de sens, de contexte ou des deux. Cela permet de mettre en œuvre différents cas d'utilisation courants de l'IA.

Avant de commencer

Avant d'appeler l'API Gemini, assurez-vous d'avoir installé le SDK de votre choix et d'avoir configuré une clé API Gemini prête à l'emploi.

Générer des embeddings

Utilisez la méthode embedContent pour générer des embeddings textuels:

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

Vous pouvez également générer des représentations vectorielles continues pour plusieurs segments à la fois en les transmettant sous forme de liste de chaînes.

Types de tâches

Lors de la création de systèmes de génération augmentée par récupération (RAG), il est courant d'utiliser des embeddings textuels pour effectuer une recherche de similarité. Dans certains cas, cela peut entraîner une dégradation de la qualité, car les questions et leurs réponses ne sont pas sémantiquement similaires. Par exemple, une question comme "Pourquoi le ciel est-il bleu ?" et sa réponse "La diffusion de la lumière du soleil provoque la couleur bleue" ont des significations distinctes en tant qu'énoncés. Cela signifie qu'un système RAG ne reconnaîtra pas automatiquement leur relation.

Les types de tâches vous permettent de générer des embeddings optimisés pour des tâches spécifiques, ce qui vous fait gagner du temps et évite les coûts nécessaires pour développer vos propres embeddings spécifiques à des tâches.

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

Types de tâches compatibles

Type de tâche Description
SEMANTIC_SIMILARITY Permet de générer des embeddings optimisés pour évaluer la similitude de texte.
CLASSIFICATION Permet de générer des embeddings optimisés pour classer des textes en fonction d'étiquettes prédéfinies.
CLUSTERING Permet de générer des embeddings optimisés pour regrouper des textes en fonction de leurs similitudes.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING et FACT_VERIFICATION Permettent de générer des embeddings optimisés pour la recherche de documents ou la récupération d'informations.
CODE_RETRIEVAL_QUERY Permet de récupérer un bloc de code en fonction d'une requête en langage naturel, par exemple pour trier un tableau ou inverser une liste chaînée. Les représentations vectorielles continues des blocs de code sont calculées à l'aide de RETRIEVAL_DOCUMENT.

Cas d'utilisation

Les embeddings de texte sont utilisés dans divers cas d'utilisation courants de l'IA, par exemple:

Modèles d'embeddings

L'API Gemini propose trois modèles qui génèrent des représentations vectorielles continues de texte:

Étape suivante

Consultez le notebook de démarrage rapide sur les représentations vectorielles continues.