Incorporaciones en la API de Gemini

El servicio de incorporación de la API de Gemini genera incorporaciones de última generación para palabras, frases y oraciones. Las incorporaciones resultantes se pueden usar para tareas de procesamiento de lenguaje natural (PLN), como búsqueda semántica, clasificación de texto y agrupamiento en clústeres, entre otras.

En esta página, se explican brevemente las incorporaciones y se destacan algunos casos de uso clave para el servicio de incorporación que te ayudarán a comenzar.

¿Qué son las incorporaciones?

Las incorporaciones de texto son una técnica de procesamiento de lenguaje natural (PLN) que convierte texto en coordenadas numéricas (llamadas vectores) que se pueden graficar en un espacio n-dimensional. Este enfoque te permite tratar fragmentos de texto como bits de datos relacionales, con los que luego podemos entrenar modelos.

Las incorporaciones capturan el significado semántico y el contexto, lo que da como resultado texto con significados similares que tenga incorporaciones más cercanas. Por ejemplo, las oraciones “Llegué a mi perro al veterinario” y “Llegué a mi gato al veterinario” tendría incorporaciones cercanas entre sí en el espacio vectorial, ya que ambas describen un contexto similar.

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 muy cerca, puedes inferir que estas palabras tienen significado o contexto similares, o ambos. Esta función permite una variedad de casos de uso descritos en la siguiente sección.

Casos de uso

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

  • Recuperación de información: Puedes usar incorporaciones para recuperar texto semántico similar a partir de un texto de entrada. Un sistema de recuperación de información puede admitir varias aplicaciones, como la búsqueda semántica, la respuesta a preguntas o el resumen.
  • Clasificación: Puedes entrenar un modelo mediante incorporaciones para clasificar documentos en categorías. Por ejemplo, si deseas clasificar los comentarios del usuario como negativos o positivos, puedes usar el servicio de incorporaciones para obtener la representación vectorial de cada comentario para entrenar el clasificador.
  • Agrupamiento en clústeres: la comparación de vectores de texto puede mostrar qué tan similares o diferentes son. Esta función se puede usar para entrenar un modelo de agrupamiento en clústeres que agrupe textos o documentos similares y detectar anomalías en tus datos.
  • Base de datos de vectores: Puedes almacenar las incorporaciones generadas en una base de datos de vectores para mejorar la exactitud y eficiencia de tu aplicación de PLN. Consulta el siguiente instructivo para aprender a usar una base de datos de vectores para traducir instrucciones de texto en vectores numéricos.

Modelos de incorporaciones de Gemini

La API de Gemini ofrece dos modelos que generan incorporaciones de texto: incorporaciones de texto e incorporaciones. Las incorporaciones de texto son una versión actualizada del modelo de incorporación que ofrece tamaños de incorporaciones elásticos de menos de 768 dimensiones. Las incorporaciones elásticas generan dimensiones de salida más pequeñas y pueden ahorrar costos de procesamiento y almacenamiento con una pérdida de rendimiento leve.

Usa incorporaciones de texto para proyectos o aplicaciones nuevos. Tu aplicación solo debe usar el modelo de incorporación si no puedes migrarlo para usar incorporaciones de texto.

Genera incorporaciones con la API de Gemini

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

Python

result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")

# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')

Consulta nuestro instructivo de introducción para ver el ejemplo completo de ejecutable.

Go

ctx := context.Background()
// Access your API key as an environment variable (see our Getting Started tutorial)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
// For embeddings, use the Text Embeddings model
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)

Consulta nuestro instructivo de introducción para ver el ejemplo completo de ejecutable.

Node.js

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see our Getting Started tutorial)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
// For embeddings, use the Text Embeddings model
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});

const text = "The quick brown fox jumps over the lazy dog."

const result = await model.embedContent(text);
const embedding = result.embedding;
console.log(embedding.values);
}

run();

Consulta nuestro instructivo de introducción para ver el ejemplo completo de ejecutable.

Dart (Flutter)

final model = GenerativeModel(model: 'text-embedding-004', apiKey: apiKey);
final content = Content.text('The quick brown fox jumps over the lazy dog.');
final result = await model.embedContent(content);
print(result.embedding.values);

Consulta nuestro instructivo de introducción para ver el ejemplo completo de ejecutable.

curl

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
    "content": {
    "parts":[{
    "text": "Hello world"}]}, }' 2> /dev/null | head

Visita nuestra Guía de inicio rápido sobre la incorporación con REST en GitHub para ver el ejemplo completo ejecutable.

¿Qué sigue?