Embeddings em lote
Versão em lote da geração de embeddings: em vez de vetorizar um texto por vez, você envia uma lista inteira — descrições de produto, artigos, chamados — e recebe todos os vetores juntos. Feita para quem tem catálogo ou base de conteúdo e não quer disparar milhares de chamadas soltas.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Quando o lote ganha do um a um
Se você tem dez textos, tanto faz. Se tem dez mil, o lote é a diferença entre um script que termina em minutos e uma madrugada de chamadas soltas. Uma chamada em lote carrega vários trechos de uma vez, dilui o custo fixo por chamada e devolve os vetores todos juntos, cada um ligado ao trecho que o originou. Para bases grandes, é o caminho natural: você fatia o conteúdo, monta os lotes e acompanha as tarefas pelo task_id.
O que enviar e o que volta
A entrada é uma lista de trechos de texto — cada item pode ser uma descrição de produto, um parágrafo de artigo, um chamado de suporte. O retorno traz um vetor por item, na mesma estrutura, pronto para gravar no seu banco. Cada chamada aceita até 20.000 tokens somando todos os itens; acima disso, é só dividir em mais lotes. Não há formato exótico: texto entra, JSON com vetores sai.
A conta de um catálogo real
Pense num catálogo com 3.000 descrições de produto de uns 60 tokens cada — cerca de 180.000 tokens. O processamento custa US$ 0,27 (US$ 0,0015 por 1.000 tokens); somando US$ 0,002 por chamada em nove lotes, mais US$ 0,018. Total: menos de US$ 0,30 para vetorizar a loja inteira. É o tipo de conta que vale refazer sempre que o catálogo mudar — o custo de re-vetorizar é pequeno demais para justificar vetor desatualizado.
Preparação que economiza dinheiro
Antes de mandar o lote, passe o pente-fino: remova itens duplicados (por que pagar duas vezes pelo mesmo vetor?), tire o texto de template que se repete em todos os itens e padronize a codificação em UTF-8. Se a base vem de planilha, confira se não sobraram células vazias ou cabeçalhos no meio dos dados — lixo que entra é token que você paga e vetor que não serve para nada.
Casos de uso
Catálogo de distribuidora
A Distribuidora Horizonte Verde S.A. vetorizou 8.500 itens do catálogo em uma tarde para alimentar a busca interna do time comercial. Custo total de processamento: menos de US$ 1.
Arquivo de blog
Uma agência de Belo Horizonte migrou um blog com 900 posts e vetorizou tudo em lotes para montar o bloco de “conteúdo relacionado” — sem depender de tags preenchidas à mão ao longo de dez anos.
Histórico de chamados
Um SaaS de gestão para MEIs vetorizou dois anos de tickets de suporte. Com os vetores no banco, o time enxergou os problemas recorrentes e priorizou o roadmap com base no que os clientes realmente relatam.
Perguntas frequentes
Quantos textos posso mandar numa chamada?
O limite é de 20.000 tokens somando todos os itens do lote. Na prática, isso significa centenas de trechos curtos — descrições de produto, títulos, comentários — por chamada.
Os vetores voltam identificados?
Sim: cada vetor volta associado ao item que o gerou, na mesma estrutura da entrada, para você gravar no banco sem malabarismo de índice.
Sai mais barato que a versão unitária?
O preço por token é o mesmo (US$ 0,0015 por 1.000). A economia real está no custo por chamada — US$ 0,002 diluídos entre centenas de itens — e no tempo do seu script.
Como eu pago? Aceita Pix?
Por enquanto o pagamento é via PayPal, em dólares — Pix não está disponível, e preferimos dizer isso com todas as letras a fingir o contrário. Cartão funciona dentro do próprio PayPal.
Posso mandar dados de clientes no lote?
Pode, mas pense antes: para a maioria dos usos, o vetor funciona igual com o texto anonimizado. Se o lote tem nome, e-mail ou CPF que não mudam o significado, troque por marcadores antes de enviar — boa prática de LGPD que não custa nada.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/search/embed-batch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'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({
"text": "…"
})
});
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={
"text": "…"
},
)
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" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
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)Exemplo de requisição
{
"text": "…"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "search.embed_batch",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chunks | 10000 |
max_tokens | 20000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |