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.
-
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.
-
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>/inferenceSustituye
<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
dimensionspara 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)