Endpoints
Embeddings
Genera embeddings vectoriales con POST /embeddings para búsqueda semántica, agrupación y RAG, con el mismo formato que la API de OpenAI.
Pruébalo en el playgroundConvierte texto en vectores para búsqueda semántica, agrupación, deduplicación y generación aumentada por recuperación (RAG). El endpoint tiene el mismo formato que POST /embeddings de OpenAI, así que client.embeddings.create(...) funciona sin cambios.
POST https://api14.com/api/v1/embeddings
Petición
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
model | string | sí | Un id de modelo de embeddings, p. ej. openai/text-embedding-3-small. |
input | string o string[] | sí | Texto del que se calculará el embedding. Pasa un array para procesar varias entradas en una sola petición. |
dimensions | integer | no | Tamaño del vector de salida, para modelos que admiten reducirlo (p. ej. text-embedding-3-*). |
encoding_format | string | no | float (por defecto) o base64. |
user | string | no | Tu propio id de usuario final, que se transmite al proveedor. |
provider | object | no | Preferencias de enrutamiento de proveedores. Consulta Enrutamiento de proveedores. |
Ejemplo
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.embeddings.create({
"model": "openai/text-embedding-3-small",
"input": [
"The quick brown fox",
"Lorem ipsum"
]
});
console.log(result.data.map((d) => d.embedding.length));
Respuesta
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0023, -0.0091, 0.0154, "..."] }
],
"model": "openai/text-embedding-3-small",
"usage": { "prompt_tokens": 8, "total_tokens": 8, "cost": 0.00000016 }
}
data[i].index coincide con la posición de la entrada en tu array input.
Elegir un modelo
Lista los modelos de embeddings con sus precios, sin necesidad de clave de API:
curl https://api14.com/api/v1/embeddings/models
# o, con categorías y nuestros precios:
curl "https://api14.com/api/v1/models?category=embeddings"
Los vectores de modelos distintos no son comparables. Guarda el id del modelo junto a cada vector y vuelve a calcular los embeddings de tu corpus cuando cambies de modelo.
Precios
Los embeddings se facturan por token de entrada al precio indicado del modelo, mostrado como "$ / 1M tokens". El coste de cada petición se devuelve en usage.cost (USD) y se descuenta de tu saldo. Consulta Precios y facturación.
Consejos
- Agrupa las entradas: una petición con 100 cadenas es más rápida y cuenta como una sola petición para tu límite de tasa.
- Mantén cada entrada por debajo de la longitud de contexto del modelo; el texto más largo se rechaza en el proveedor.
- Normaliza los vectores (la mayoría de los modelos ya devuelven longitud unitaria) y usa la similitud del coseno.
Errores
| Estado | Código | Cuándo |
|---|---|---|
| 400 | model_required / invalid_json | Falta model o el cuerpo no es un objeto JSON. |
| 401 | invalid_api_key | Clave ausente o no válida. |
| 402 | insufficient_balance | Tu saldo en USD es $0. |
| 403 | model_not_allowed | La lista de modelos permitidos de la clave excluye este modelo. |
| 404 | model_not_found | Id de modelo desconocido o desactivado. |
| 429 | rate_limited | Se superaron las peticiones por minuto. |
Lista completa: Errores.