Voltar ao blog

RAG e dadosGuia

Quanto custa uma pergunta de RAG: quantos chunks enviar

Estime os tokens de uma pergunta de RAG, veja o custo de 1.000 e 100.000 perguntas com preços ao vivo e escolha a quantidade de chunks que cabe no seu orçamento.

Por CheapTokens TeamPublicado em 7 min de leitura

Diagrama: uma pergunta e chunks recuperados fluem para o modelo, o custo depende da quantidade de chunks
Nesta página
  1. O que entra em uma requisição de RAG
  2. Quanto custam 1.000 perguntas
  3. Top-k: cada chunk adiciona a mesma quantidade
  4. O documento inteiro no prompt, ou quatro chunks
  5. Envie a requisição
  6. Quatro formas de reduzir a entrada

Seu chatbot de documentos funciona, a primeira fatura chega e ela é maior do que as perguntas merecem. Em quase toda configuração de RAG o dinheiro vai para um único lugar: os chunks recuperados que você cola na frente de cada pergunta. Uma pergunta de RAG custa os tokens da pergunta, das suas instruções e de N chunks no lado da entrada, mais uma resposta curta no lado da saída. Os chunks são a parte que você controla, e cada um adiciona o mesmo número de tokens a cada requisição.

Este guia conta uma requisição, precifica 1.000 e 100.000 delas com preços ao vivo e mostra o que muda quando você passa o top-k de 3 para 10. A recuperação em si (seu vector store, seu chunking) fica do seu lado; só a chamada final de geração vai para a API do modelo. Se cobrança de entrada e saída é novidade para você, comece por tokens de entrada vs saída.

O que entra em uma requisição de RAG#

Digamos que você roda um bot de suporte sobre os documentos da empresa. Um cliente pergunta: "Como faço para redefinir o login de dois fatores?", seu retriever retorna as cinco melhores passagens, e você envia isto ao modelo:

  • um system prompt: "Responda apenas a partir do contexto. Se não estiver lá, diga isso." — cerca de 300 tokens quando você adiciona regras de formatação;
  • a pergunta com um pouco de contexto de chat — cerca de 200 tokens;
  • 5 chunks de cerca de 500 tokens cada — 5 × 500 = 2.500 tokens;
  • a resposta: dois ou três parágrafos curtos — cerca de 300 tokens de saída.

O lado da entrada é 2.500 + 300 + 200 = 3.000 tokens, o lado da saída cerca de 300. Essas são as premissas do autor para um bot de suporte típico; troque pelos seus próprios números. Tudo abaixo usa esta única requisição como unidade.

O jeito rápido de ver o formato: os chunks são aproximadamente cinco sextos de toda a entrada, e a entrada é dez vezes a resposta. Faça a estimativa você mesmo:

Adivinhar o número

Quantos tokens de entrada a requisição acima envia?

Mostrar resposta

Resposta: 3.000

3.000: 5 chunks × 500 = 2.500, mais 300 do system prompt e 200 da pergunta. Os chunks dominam.

Quanto custam 1.000 perguntas#

Uma requisição é pequena demais para sentir, então escale. Com 3.000 tokens de entrada e 300 de saída, 1.000 perguntas enviam 3.000.000 de tokens de entrada e geram 300.000 tokens de saída. Arraste os sliders abaixo para casar com o seu próprio bot; o site recalcula com preços ao vivo para cada modelo.

Calculadora de custos

Um dia de um bot de suporte

Tokens de entrada por solicitação: 3.000 · Tokens de saída por solicitação: 300 · Solicitações por dia: 1.000

ModeloPor diaPor mês
GLM-5.3-Flash$0.072$2.16
DeepSeek-V4-Flash$0.075$2.25
MiniMax-M2.7$0.195$5.85

A tabela mostra a mesma carga de trabalho para os três modelos, com a referência do OpenRouter ao lado. Contado no total, com entrada e saída juntas, cada um deles sai mais barato que o OpenRouter aqui.

Modelo Por solicitação 1.000 solicitações OpenRouter, 1.000 solicitações
GLM-5.3-Flash $0.000072 $0.072 $0.147
DeepSeek-V4-Flash $0.000075 $0.075 $0.19
MiniMax-M2.7 $0.0002 $0.195 $1.26

3.000 tokens de entrada e 300 tokens de saída por solicitação. Os preços por 1M de tokens são atuais e mudam junto com nossas tarifas; a coluna OpenRouter mostra preços de referência para a mesma carga de trabalho.

E com 100.000 perguntas? São 300.000.000 de tokens de entrada e 30.000.000 de saída. No DeepSeek-V4-Flash isso é $7.50, no GLM-5.3-Flash $7.20, no MiniMax-M2.7 $19.50. Os preços são fixos por modelo, sem horário de pico, então um lote noturno e um chat diurno custam o mesmo por token. Veja a lista completa de preços na página de preços.

Top-k: cada chunk adiciona a mesma quantidade#

Aqui está o segundo cenário: um assistente de wiki interna. Alguém sugere: "Vamos enviar 10 chunks em vez de 3, só por garantia." A entrada cresce em linha reta: cada chunk são mais 500 tokens em cada requisição.

Três chunks contra dez: a mesma pergunta, um tamanho de entrada diferente
Tokens de entrada por requisição com top-k 3 e top-k 10, sob a premissa de 500 tokens por chunk

2.000 contra 5.500 tokens: a resposta tem o mesmo tamanho, então toda a diferença na conta do assistente de wiki é entrada. Se isso compra uma resposta melhor é uma questão de qualidade: depois do ponto em que a passagem certa já está no contexto, chunks extras em grande parte só adicionam ruído e custo. Um jeito prático de escolher k é pegar um conjunto de perguntas reais, verificar em qual k a passagem certa aparece e parar um pouco acima disso.

A janela de contexto é o outro limite. Os três modelos aqui têm bastante espaço para top-k comum: 180K tokens para o MiniMax-M2.7, 380K para o DeepSeek-V4-Flash e 390K para o GLM-5.3-Flash. Os limites de saída diferem: até 8.192 tokens por resposta para o GLM-5.3-Flash e o MiniMax-M2.7, até 32.768 para o DeepSeek-V4-Flash, o que importa se suas respostas são relatórios longos em vez de respostas curtas.

Escolha o seu caso

Qual é o seu caso de RAG?

Respostas curtas a partir de poucos chunks

Um bot de suporte ou FAQ com top-k de 3–6 e respostas de algumas centenas de tokens cabe em qualquer um dos três modelos. Escolha pela qualidade nas suas próprias perguntas e depois deixe a tabela de custos acima decidir.

Respostas longas e resumos

Se as respostas chegam a milhares de tokens, o DeepSeek-V4-Flash permite até 32.768 tokens de saída por resposta e um contexto de 380K.

Muitos documentos por requisição

Se você quer mesclar muitas passagens ou seções inteiras, o GLM-5.3-Flash tem o maior contexto dos três, 390K.

O documento inteiro no prompt, ou quatro chunks#

Terceiro cenário: Q&A de contratos. A versão preguiçosa cola o PDF inteiro de 30.000 tokens em cada pergunta. A versão com recuperação envia a pergunta, as instruções e quatro chunks relevantes de cerca de 650 tokens cada, aproximadamente 3.000 tokens no total. As mesmas 1.000 perguntas, as mesmas respostas de 300 tokens:

Custo de 1.000 perguntas de contrato no DeepSeek-V4-Flash
  • Documento inteiro de 30.000 tokens em cada requisição$0.48
  • Pergunta, instruções e 4 chunks recuperados, cerca de 3.000 tokens$0.075

O documento completo envia dez vezes a entrada, 30.000 ÷ 3.000 = 10, para a mesma pergunta. Ainda faz sentido para uma pergunta única e pontual sobre um documento que cabe no contexto. Para um bot que responde o dia todo, é o padrão caro. Se boa parte dessa entrada é o mesmo texto toda vez, leia sobre prompt caching.

Envie a requisição#

Abaixo está a etapa de geração. A parte de recuperação é sua: chunks é o que quer que seu vector store tenha retornado. O mesmo código funciona com o SDK da OpenAI ou com curl puro.

Faça uma pergunta com chunks recuperados

Python

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key="YOUR_CHEAPTOKENS_KEY",
)

chunks = ["Chunk 1 text...", "Chunk 2 text...", "Chunk 3 text..."]
context = "\n\n---\n\n".join(chunks)

resp = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    max_tokens=400,
    messages=[
        {"role": "system", "content": "Answer only from the context. If the answer is not there, say so."},
        {"role": "user", "content": f"Context:\n{context}\n\nQuestion: How do I reset two-factor login?"},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)

curl

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer YOUR_CHEAPTOKENS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "max_tokens": 400,
    "messages": [
      {"role": "system", "content": "Answer only from the context. If the answer is not there, say so."},
      {"role": "user", "content": "Context:\nChunk 1...\n\nQuestion: How do I reset two-factor login?"}
    ]
  }'

A última linha do exemplo em Python é a útil. usage.prompt_tokens é a sua entrada real por pergunta; compare com a estimativa de 3.000 e substitua minhas premissas pelos seus números. Use o id completo do modelo, como no exemplo: deepseek-ai/DeepSeek-V4-Flash-0731. Os ids estão listados na documentação. A configuração completa está em a documentação, e se você quer ver como os tokens de um bot se acumulam ao longo de um diálogo, por que um chat longo custa mais cobre a parte do histórico.

Quatro formas de reduzir a entrada#

Comece com max_tokens, que limita a resposta e protege você de uma resposta descontrolada. Depois corte k para o menor valor que ainda encontra a passagem certa. Deixe os chunks mais enxutos, para que 500 tokens carreguem 500 tokens de significado e não cabeçalhos e boilerplate. Descarte chunks duplicados antes de enviar: duas passagens quase idênticas custam o dobro e dizem uma vez. E meça com usage em tráfego real, porque um palpite sobre chunks de 500 tokens é só um palpite. Para uma visão mais ampla de para onde vão os tokens em uma chamada de API, veja quantos tokens uma requisição usa.

Coloque seus próprios tokens por requisição na calculadora acima para precificar seu bot nos três modelos; se suas respostas são longas, DeepSeek-V4-Flash é o primeiro a olhar.