Incorporaciones

La API de Gemini admite varios modelos de incorporación que generan incorporaciones para palabras, frases, código y oraciones. Las incorporaciones resultantes se pueden usar para tareas como la búsqueda semántica, la clasificación de texto y el agrupamiento, entre muchas otras.

¿Qué son los embeddings?

Las incorporaciones son representaciones numéricas de texto (o de otros formatos multimedia) que capturan relaciones entre entradas. Las incorporaciones de texto funcionan mediante la conversión de texto en arreglos de números de punto flotante, llamados vectores. Estos vectores están diseñados para capturar el significado del texto. La longitud del array de incorporaciones se denomina dimensionalidad del vector. Un pase de texto podría representarse con un vector que contiene cientos de dimensiones.

Las incorporaciones capturan el significado y el contexto semánticos, lo que genera texto con significados similares que tienen incorporaciones “más cercanas”. Por ejemplo, las oraciones “Llevé a mi perro al veterinario” y “Llevé a mi gato al veterinario” tendrían incorporaciones que están cerca una de la otra en el espacio vectorial.

Puedes usar las incorporaciones para comparar diferentes textos y comprender cómo se relacionan. Por ejemplo, si las incorporaciones del texto “gato” y “perro” están juntas, puedes inferir que estas palabras son similares en significado, contexto o ambos. Esto permite una variedad de casos de uso comunes de la IA.

Genera embeddings

Usa el método embedContent para generar incorporaciones de texto:

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

También puedes generar incorporaciones para varios fragmentos a la vez pasándolos como una lista de cadenas.

Tipos de tareas

Cuando se compilan sistemas de Generación mejorada de recuperación (RAG), un diseño común es usar embeddings de texto para realizar una búsqueda de similitud. En algunos casos, esto puede generar una disminución de la calidad, ya que las preguntas y sus respuestas no son semánticamente similares. Por ejemplo, una pregunta como "¿Por qué el cielo es azul?" y su respuesta "La dispersión de la luz solar causa el color azul" tienen significados claramente diferentes como afirmaciones, lo que significa que un sistema de RAG no reconocerá automáticamente su relación.

Los tipos de tareas te permiten generar embeddings optimizados para tareas específicas, lo que te ahorra tiempo y costos, y mejora el rendimiento.

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

Tipos de tareas compatibles

Tipo de tarea Descripción
SEMANTIC_SIMILARITY Se usa para generar embeddings optimizados para evaluar la similitud del texto.
CLASSIFICATION Se usa para generar embeddings optimizados para clasificar textos según etiquetas predeterminadas.
CLUSTERING Se usa para generar embeddings que están optimizados para agrupar textos en función de sus similitudes.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING y FACT_VERIFICATION Se usa para generar embeddings optimizados para la búsqueda de documentos o la recuperación de información.
CODE_RETRIEVAL_QUERY Se usa para recuperar un bloque de código basado en una consulta de lenguaje natural, como ordenar un array o invertir una lista vinculada. Las incorporaciones de los bloques de código se calculan con RETRIEVAL_DOCUMENT.

Casos de uso

Las incorporaciones de texto se usan en una variedad de casos de uso comunes de IA, como los siguientes:

Modelos de incorporación

La API de Gemini ofrece tres modelos que generan incorporaciones de texto:

¿Qué sigue?

Consulta el notebook de la guía de inicio rápido de incorporaciones.