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:
Recuperación de información: Puedes usar incorporaciones para recuperar texto similar semánticamente a partir de un texto de entrada.
Agrupación: Comparar grupos de incorporaciones puede ayudar a identificar tendencias ocultas.
Base de datos de vectores: A medida que llevas diferentes casos de uso de las incorporaciones a producción, es común almacenarlas en una base de datos de vectores.
Clasificación: Puedes entrenar un modelo con incorporaciones para clasificar los documentos en categorías.
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.