Vectorizar un corpus entero
Vectorice diez mil descripciones de producto en un solo envío en lugar de diez mil llamadas sueltas: manda la lista completa, sigue un único trabajo y recoge todos los vectores, cada uno asociado a su elemento original. Pague solo por uso, sin suscripción.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Vectorizar diez mil descripciones de producto una llamada a la vez es un problema de colas disfrazado de problema de embeddings.
Por qué un lote es mejor que miles de llamadas sueltas
Vectorizar diez mil descripciones de producto de una en una es un problema de colas disfrazado de problema de vectores. Cada llamada suelta trae su propio trabajo que seguir, sus reintentos y su entrega, para lo que en realidad es una sola tarea: convertir este conjunto de datos en vectores. Agrupar trabajo parecido siempre ha sido la vía eficiente en informática, desde los procesos nocturnos de los grandes ordenadores hasta las colas de proceso actuales, porque reduce la carga extra por elemento. Si ya tiene la lista completa, enviarla como un lote es lo sensato.
Usos habituales y errores frecuentes
Llevar un catálogo existente a una búsqueda por significado empieza aquí: se vectoriza todo una vez, se guardan los vectores y después solo se convierten los productos nuevos o modificados. Una tienda en línea puede enviar su catálogo entero como un lote antes de cambiar su buscador de palabras clave a orden por similitud, y un equipo de datos puede preparar un conjunto etiquetado como entrada de un clasificador que entrena aparte. Un error frecuente es reenviar todo el catálogo tras cada cambio pequeño en lugar de solo lo modificado; otro es perder qué vector corresponde a cada elemento, y por eso cada vector vuelve asociado a su entrada original.
Dónde encaja en un flujo de datos
Migrar un catálogo existente a un nuevo sistema de búsqueda semántica empieza aquí: vectorice todo una vez, guarde los vectores y de ahí en adelante solo vectorice lo nuevo o lo modificado. Equipos de ciencia de datos lo usan para preparar variables de entrenamiento a partir de grandes conjuntos de texto sin escribir su propia lógica de lotes y reintentos.
Qué puede hacer con ella
Migración de catálogo a búsqueda semántica
Una tienda en línea envía todo su catálogo de productos en un solo lote para generar vectores antes de cambiar su búsqueda de coincidencia por palabras a ranking por similitud.
Preparación de variables para un modelo propio
Un equipo de ciencia de datos vectoriza en bloque un conjunto de entrenamiento etiquetado para usar los vectores como variables de entrada de un clasificador que entrena por separado.
Preguntas frecuentes
¿Cómo relaciono los vectores devueltos con mis elementos originales?
Cada vector del resultado se devuelve alineado con el orden o los identificadores de los elementos que envió, para que pueda emparejarlos sin ambigüedad.
¿Se conserva el texto enviado después de procesar el lote?
No, el texto enviado y los resultados generados se eliminan después del período de retención y nunca se usan para entrenamiento.
¿En qué se diferencia de convertir los textos uno por uno?
Convertirlos uno por uno obliga a gestionar miles de trabajos, reintentos y entregas por separado. Aquí toda la lista es un solo envío, con un único número de seguimiento y un único resultado que recoger al terminar.
¿Tengo que dividir la lista en partes más pequeñas?
No. El lote se reparte, se procesa en paralelo y se vuelve a ordenar por usted, así que no tiene que pensar en cómo se programó cada parte.
¿Cómo recibo los vectores?
Cuando termina el proceso, el conjunto completo de vectores llega mediante un aviso automático a su sistema o a través de un enlace privado válido durante 24 horas.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/search/embed-batch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"texts":["uno","dos"]}'const res = await fetch("https://api.kit.forhosting.com/search/embed-batch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"texts": [
"uno",
"dos"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/search/embed-batch",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"texts": [
"uno",
"dos"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/search/embed-batch", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"texts":["uno","dos"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"texts":["uno","dos"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/search/embed-batch", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"texts": [
"uno",
"dos"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "search.embed_batch",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_chunks | 10000 |
max_tokens | 20000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Este endpoint toma toda la lista de una vez, así que usted envía un corpus, no un bucle, y recibe todos los vectores juntos.
El problema de repetir un endpoint de un solo elemento
Llamar miles de veces a un endpoint pensado para un solo texto implica manejar miles de task_id, miles de reintentos y miles de entregas pequeñas por webhook para lo que conceptualmente es un solo trabajo: vectorizar este conjunto de datos. search.embed_batch reduce todo eso a un solo envío, un solo task_id y un solo resultado que recoger al terminar.
Cómo es una llamada en lote
Internamente el lote se paraleliza y se ordena por usted; no tiene que pensar en cómo se programaron las piezas. Haga POST a /search/embed-batch con un arreglo de textos, reciba un solo task_id que cubre todo el lote, y obtenga el conjunto completo de vectores —correlacionados con sus elementos originales— por webhook o mediante un enlace firmado de 24 horas cuando termine el procesamiento.
Por qué el procesamiento por lotes tiene otro precio
El procesamiento por lotes ha sido siempre el camino eficiente en cómputo, desde los trabajos nocturnos de los mainframes hasta las colas de inferencia con GPU de hoy, porque agrupar trabajo similar reduce el costo fijo por unidad frente a solicitudes constantes de una en una. Esa eficiencia es la razón por la que procesar texto en este endpoint como lote, en lugar de miles de llamadas individuales, es la ruta más razonable cuando ya tiene toda la lista en mano.
Lo que no hace por usted
Use este cuando necesite los vectores en bruto bajo su propio control, para un flujo de trabajo a medida, un almacén de datos o un modelo que esté entrenando. Este endpoint devuelve vectores, no un índice consultable; si quiere buscar en el corpus por similitud de inmediato sin manejar el almacenamiento usted mismo, search.index_text es el paso equivalente orientado a lotes que además construye el índice.
Dónde encaja en un flujo de datos
Como se cobra por solicitud más por 1000 tokens sin tamaño mínimo de trabajo, tanto una migración única de un millón de registros como una pequeña actualización semanal caben en el mismo endpoint.
Casos de integración
Actualización incremental nocturna
Una plataforma de contenido agrupa solo los artículos publicados ese día y los vuelve a vectorizar en un único trabajo programado, en lugar de llamar al endpoint de un solo texto por artículo.
Vectorización de archivo histórico para investigación
Un grupo de investigación vectoriza años de documentos históricos en unos pocos trabajos en lote, en vez de correr un script que llama en bucle a un endpoint de un solo elemento.
Preguntas técnicas
¿Cómo vectorizo muchos textos a la vez con la API?
Envíe un arreglo de textos a POST /search/embed-batch, guarde el task_id devuelto y recoja todos los vectores resultantes por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API de embeddings en lote?
No, no hay plan gratuito ni prueba; cuesta $0.002 por solicitud más $0.002 por 1000 tokens de todo el lote, y una tarea fallida nunca se cobra.
¿Hay un tamaño máximo de lote?
Sí, revise la referencia del endpoint para conocer los límites vigentes de elementos y tokens por lote; los corpus más grandes deben dividirse en varios envíos.
¿Cuál es la diferencia con search.embed?
search.embed procesa un solo texto por llamada; search.embed_batch procesa una lista completa de textos en una sola tarea, lo cual es mucho más eficiente para corpus grandes.
¿Debo usar esto o search.index_text para una función de búsqueda?
Use search.embed_batch si va a guardar y consultar los vectores usted mismo; use search.index_text si quiere que el troceado, la vectorización y el índice queden resueltos de nuestro lado.
¿Cuánto tarda en procesarse un lote grande?
Depende del tamaño del lote y del total de tokens; como corre de forma asíncrona, se le notifica por webhook en lugar de tener que consultar el estado o esperar en línea.