Embeddings

Los embeddings son una representación numérica de la entrada de texto que permite una serie de casos de uso únicos, como el agrupamiento en clústeres, la medición de la similitud y la recuperación de información. Para obtener una introducción, consulta la guía de incorporaciones.

A diferencia de los modelos de IA generativa que crean contenido nuevo, el modelo de Gemini Embedding solo está diseñado para transformar el formato de tus datos de entrada en una representación numérica. Si bien Google es responsable de proporcionar un modelo de embedding que transforme el formato de tus datos de entrada al formato numérico solicitado, los usuarios conservan la responsabilidad total de los datos que ingresan y los embeddings resultantes. Si usas el modelo de Gemini Embedding, confirmas que tienes los derechos necesarios sobre cualquier contenido que subas. No generes contenido que infrinja la propiedad intelectual o los derechos de privacidad de otras personas. El uso de este servicio está sujeto a nuestra Política de Uso Prohibido y a las Condiciones del Servicio de Google.

Método: models.embedContent

Genera un vector de incorporación de texto a partir del Content de entrada con el modelo de incorporación de Gemini especificado.

Extremo

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:embedContent

Parámetros de ruta

model string

Obligatorio. Es el nombre del recurso del modelo. Este valor sirve como ID para que lo use el modelo.

Este nombre debe coincidir con un nombre de modelo que muestre el método models.list.

Formato: models/{model}. Toma la forma models/{model}.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Campos
content object (Content)

Obligatorio. Es el contenido que se incorporará. Solo se contabilizarán los campos parts.text.

taskType enum (TaskType)

Opcional. Es el tipo de tarea opcional para el que se usarán los embeddings. No es compatible con modelos anteriores (models/embedding-001).

title string

Opcional. Es un título opcional para el texto. Solo se aplica cuando TaskType es RETRIEVAL_DOCUMENT.

Nota: Especificar un title para RETRIEVAL_DOCUMENT proporciona incorporaciones de mejor calidad para la recuperación.

outputDimensionality integer

Opcional. Dimensión reducida opcional para el embedding de salida. Si se establece, los valores excesivos en el embedding de salida se truncan desde el final. Solo es compatible con los modelos más recientes desde 2024. No puedes establecer este valor si usas el modelo anterior (models/embedding-001).

Ejemplo de solicitud

Python

from google import genai
from google.genai import types

client = genai.Client()
text = "Hello World!"
result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=text,
    config=types.EmbedContentConfig(output_dimensionality=10),
)
print(result.embeddings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const text = "Hello World!";
const result = await ai.models.embedContent({
  model: "gemini-embedding-001",
  contents: text,
  config: { outputDimensionality: 10 },
});
console.log(result.embeddings);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

text := "Hello World!"
outputDim := int32(10)
contents := []*genai.Content{
	genai.NewContentFromText(text, genai.RoleUser),
}
result, err := client.Models.EmbedContent(ctx, "gemini-embedding-001", 
	contents, &genai.EmbedContentConfig{
		OutputDimensionality: &outputDim,
})
if err != nil {
	log.Fatal(err)
}

embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
if err != nil {
	log.Fatal(err)
}
fmt.Println(string(embeddings))

Almeja

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-001",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]}
    }'

Cuerpo de la respuesta

Es la respuesta a un EmbedContentRequest.

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Campos
embedding object (ContentEmbedding)

Solo salida. Es la incorporación generada a partir del contenido de entrada.

Representación JSON
{
  "embedding": {
    object (ContentEmbedding)
  }
}

Método: models.batchEmbedContents

Genera varios vectores de incorporación a partir del Content de entrada, que consta de un lote de cadenas representadas como objetos EmbedContentRequest.

Extremo

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:batchEmbedContents

Parámetros de ruta

model string

Obligatorio. Es el nombre del recurso del modelo. Este valor sirve como ID para que lo use el modelo.

Este nombre debe coincidir con un nombre de modelo que muestre el método models.list.

Formato: models/{model}. Toma la forma models/{model}.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Campos
requests[] object (EmbedContentRequest)

Obligatorio. Son las solicitudes de incorporación para el lote. El modelo en cada una de estas solicitudes debe coincidir con el modelo especificado BatchEmbedContentsRequest.model.

Ejemplo de solicitud

Python

from google import genai
from google.genai import types

client = genai.Client()
texts = [
    "What is the meaning of life?",
    "How much wood would a woodchuck chuck?",
    "How does the brain work?",
]
result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=texts,
    config=types.EmbedContentConfig(output_dimensionality=10),
)
print(result.embeddings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const texts = [
  "What is the meaning of life?",
  "How much wood would a woodchuck chuck?",
  "How does the brain work?",
];
const result = await ai.models.embedContent({
  model: "gemini-embedding-001",
  contents: texts,
  config: { outputDimensionality: 10 },
});
console.log(result.embeddings);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

contents := []*genai.Content{
	genai.NewContentFromText("What is the meaning of life?", genai.RoleUser),
	genai.NewContentFromText("How much wood would a woodchuck chuck?", genai.RoleUser),
	genai.NewContentFromText("How does the brain work?", genai.RoleUser),
}

outputDim := int32(10)
result, err := client.Models.EmbedContent(ctx, "gemini-embedding-001", contents, &genai.EmbedContentConfig{
	OutputDimensionality: &outputDim,
})
if err != nil {
	log.Fatal(err)
}

embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
if err != nil {
	log.Fatal(err)
}
fmt.Println(string(embeddings))

Almeja

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"requests": [{
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "What is the meaning of life?"}]}, },
      {
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "How much wood would a woodchuck chuck?"}]}, },
      {
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "How does the brain work?"}]}, }, ]}' 2> /dev/null | grep -C 5 values

Cuerpo de la respuesta

Es la respuesta a un BatchEmbedContentsRequest.

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Campos
embeddings[] object (ContentEmbedding)

Solo salida. Son las incorporaciones para cada solicitud, en el mismo orden en que se proporcionaron en la solicitud por lotes.

Representación JSON
{
  "embeddings": [
    {
      object (ContentEmbedding)
    }
  ]
}

EmbedContentRequest

Solicitud que contiene el Content para que el modelo lo incorpore.

Campos
model string

Obligatorio. Es el nombre del recurso del modelo. Este valor sirve como ID para que lo use el modelo.

Este nombre debe coincidir con un nombre de modelo que muestre el método models.list.

Formato: models/{model}

content object (Content)

Obligatorio. Es el contenido que se incorporará. Solo se contabilizarán los campos parts.text.

taskType enum (TaskType)

Opcional. Es el tipo de tarea opcional para el que se usarán los embeddings. No es compatible con modelos anteriores (models/embedding-001).

title string

Opcional. Es un título opcional para el texto. Solo se aplica cuando TaskType es RETRIEVAL_DOCUMENT.

Nota: Especificar un title para RETRIEVAL_DOCUMENT proporciona incorporaciones de mejor calidad para la recuperación.

outputDimensionality integer

Opcional. Dimensión reducida opcional para el embedding de salida. Si se establece, los valores excesivos en el embedding de salida se truncan desde el final. Solo es compatible con los modelos más recientes desde 2024. No puedes establecer este valor si usas el modelo anterior (models/embedding-001).

Representación JSON
{
  "model": string,
  "content": {
    object (Content)
  },
  "taskType": enum (TaskType),
  "title": string,
  "outputDimensionality": integer
}

ContentEmbedding

Es una lista de números de punto flotante que representan una incorporación.

Campos
values[] number

Son los valores de la incorporación.

Representación JSON
{
  "values": [
    number
  ]
}

TaskType

Es el tipo de tarea para la que se usará la incorporación.

Enumeraciones
TASK_TYPE_UNSPECIFIED Es un valor no establecido que se establecerá de forma predeterminada en uno de los otros valores de enumeración.
RETRIEVAL_QUERY Especifica que el texto dado es una consulta en un parámetro de configuración de búsqueda/recuperación.
RETRIEVAL_DOCUMENT Especifica que el texto dado es un documento del corpus en el que se realiza la búsqueda.
SEMANTIC_SIMILARITY Especifica que el texto dado se usará para la STS.
CLASSIFICATION Especifica que se clasificará el texto determinado.
CLUSTERING Especifica que las incorporaciones se usarán para el agrupamiento en clústeres.
QUESTION_ANSWERING Especifica que el texto proporcionado se usará para responder preguntas.
FACT_VERIFICATION Especifica que el texto proporcionado se usará para la verificación de datos.
CODE_RETRIEVAL_QUERY Especifica que el texto proporcionado se usará para la recuperación de código.