Endpoints
Embeddings
Transforme texto em vetores com POST /embeddings para busca semântica, clusterização, deduplicação e RAG, usando o mesmo formato da API de embeddings da OpenAI.
Teste no playgroundTransforme texto em vetores para busca semântica, clusterização, deduplicação e geração aumentada por recuperação (RAG). O endpoint tem o mesmo formato do POST /embeddings da OpenAI, então client.embeddings.create(...) funciona sem alterações.
POST https://api14.com/api/v1/embeddings
Requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
model | string | sim | Id de um modelo de embeddings, por exemplo openai/text-embedding-3-small. |
input | string ou string[] | sim | Texto a ser vetorizado. Passe um array para vetorizar vários textos em uma única requisição. |
dimensions | integer | não | Tamanho do vetor de saída, para modelos que permitem reduzi-lo (por exemplo text-embedding-3-*). |
encoding_format | string | não | float (padrão) ou base64. |
user | string | não | O id do seu usuário final, repassado ao provedor. |
provider | object | não | Preferências de roteamento de provedores. Veja Roteamento de provedores. |
Exemplo
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));
Resposta
{
"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 corresponde à posição do texto no array input.
Como escolher um modelo
Liste os modelos de embeddings com seus preços, sem precisar de chave de API:
curl https://api14.com/api/v1/embeddings/models
# ou, com categorias e os nossos preços:
curl "https://api14.com/api/v1/models?category=embeddings"
Vetores de modelos diferentes não são comparáveis. Guarde o id do modelo junto de cada vetor e gere os embeddings do seu corpus novamente ao trocar de modelo.
Preços
Os embeddings são cobrados por token de entrada ao preço listado do modelo, exibido como "$ / 1M tokens". O custo de cada requisição é retornado em usage.cost (USD) e debitado do seu saldo. Veja Preços e cobrança.
Dicas
- Agrupe as entradas: uma requisição com 100 strings é mais rápida e conta como uma única requisição no seu limite de taxa.
- Mantenha cada entrada abaixo do tamanho de contexto do modelo; textos maiores são rejeitados pelo provedor.
- Normalize os vetores (a maioria dos modelos já retorna comprimento unitário) e use a similaridade de cosseno.
Erros
| Status | Código | Quando |
|---|---|---|
| 400 | model_required / invalid_json | model ausente ou o corpo não é um objeto JSON. |
| 401 | invalid_api_key | Chave ausente ou inválida. |
| 402 | insufficient_balance | Seu saldo em USD é $0. |
| 403 | model_not_allowed | A lista de modelos permitidos da chave exclui este modelo. |
| 404 | model_not_found | Id de modelo desconhecido ou desativado. |
| 429 | rate_limited | Limite de requisições por minuto excedido. |
Lista completa: Erros.