Creación de incrustaciones

Las representaciones (embeddings) convierten el texto en vectores numéricos que captan el significado semántico, lo que permite a los modelos de IA comparar y recuperar contenidos semánticamente similares. Si quieres ver un tutorial que muestra cómo las incrustaciones pueden mejorar las respuestas de autocompletado del chat al proporcionar a un modelo contexto relevante procedente de tu propia base de conocimientos, consulta Mejorar el autocompletado del chat con incrustaciones vectoriales y RAG. Para obtener una lista completa de los parámetros disponibles, consulta OpenAI Crear incrustaciones.

Antes de empezar

  • Crea una cuenta de IBM Cloud con pago por uso o por suscripción. No se admiten cuentas de prueba. Para obtener más información o para ampliar tu cuenta, consulta Tipos de cuenta.

  • Crea un proyecto Red Hat AI Inference.

  • Asegúrate de tener el rol de Writer o superior en el servicio Red Hat AI Inference. Para obtener más información, consulta Gestión del acceso a IAM.

  • Autentícate en la API.

  • Consigue tu punto final de API. Todas las solicitudes de API utilizan el siguiente formato básico: URL:

    https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference
    

    Sustituye <project_id> por el ID de tu proyecto. Para encontrarlo, ve a Red Hat AI Inference projects y abre tu proyecto.

Para comprobar si un modelo admite incrustaciones, enumera los modelos u obtén un modelo por su ID y verifica que supports_embeddings esté establecido en true.

Formatos y límites de entrada

La API de embeddings admite los siguientes formatos de entrada para el parámetro input:

Serie
Una sola cadena de texto que se va a convertir en un vector de incrustación.
Matriz de series
Una matriz de cadenas de texto, en la que cada cadena se convierte en un vector de incrustación independiente.
Secuencia de números
Una matriz de números enteros que representan tokens, la cual se convierte en un vector de incrustación.
Matriz de matrices de números
Una matriz de matrices de tokens, en la que cada matriz de tokens se convierte en un vector de incrustación independiente.

Al enviar entradas para incrustaciones, se aplican los siguientes límites y comportamientos:

Límites de tokens de entrada
Cada modelo de incrustación define su límite máximo de tokens de entrada en función del tamaño de su ventana de contexto.
Evaluación de entradas de matriz
Si envías una matriz con varias entradas, el límite de tokens de entrada se aplica a cada texto de forma individual.
Superando los límites
Si cualquier entrada de texto de la matriz supera el límite de tokens del modelo, la API rechaza toda la solicitud y devuelve un error HTTP 400 Bad Request.

Dimensiones del resultado

El resultado de una solicitud de representaciones es un vector de alta dimensión. Ten en cuenta las siguientes características de los vectores de salida:

Calidad de la representación
Un tamaño mayor del vector de salida puede representar más detalles y captar un significado semántico más granular. Sin embargo, los vectores más grandes requieren más memoria para su almacenamiento y búsqueda, lo que puede aumentar el consumo de recursos.
Configuración del tamaño del vector
El tamaño del vector de salida depende del modelo. Aunque la API de embeddings admite un parámetro dimensions para configurar el tamaño del vector de salida, este parámetro solo se utiliza si el modelo seleccionado es compatible con la configuración de los tamaños de las dimensiones.

Creación de incrustaciones

Utiliza la API de representaciones vectoriales para convertir una o varias entradas de texto en representaciones vectoriales. Los siguientes ejemplos muestran cómo crear incrustaciones con la API utilizando cURL o el cliente OpenAI Python.

curl https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <bearer_token>" \
  -d '{
    "model": "granite-embedding-278m-multilingual",
    "input": [
      "Manage your projects from the IBM Cloud console.",
      "Use the API to automate workflows and integrate AI into your applications.",
      "IBM Cloud offers a range of AI and machine learning services for enterprise applications."
    ]
  }'
from openai import OpenAI
client = OpenAI(
  api_key="<bearer_token>",
  base_url="https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference",
)
response = client.embeddings.create(
  model="granite-embedding-278m-multilingual",
    input=[
        "Manage your projects from the IBM Cloud console.",
        "Use the API to automate workflows and integrate AI into your applications.",
        "IBM Cloud offers a range of AI and machine learning services for enterprise applications."
    ]
)
print(response.data[0].embedding)