Quanto custa um sistema RAG: embeddings, banco e LLM

Com preços hipotéticos, um RAG pequeno com mil perguntas por dia custa de cerca de US$ 30 a US$ 600 por mês, quase tudo no LLM. Gerar os embeddings custa pouco, e o banco vetorial pesa mais pelo mínimo do plano.

Atualizado em 8 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Separar o custo de um RAG em indexação, armazenamento, consulta e geração
  • Calcular o gasto mensal de embeddings, banco vetorial e LLM com uma conta passo a passo
  • Reconhecer os custos escondidos e as alavancas que mais reduzem a conta
Nesta página

Um sistema RAG parece caro porque tem muitas peças: modelo de embeddings, banco vetorial, LLM, servidor. Na prática, a conta costuma se concentrar numa só delas, e saber qual muda as decisões de projeto. Quem otimiza o banco vetorial enquanto envia 10 trechos enormes a um modelo caro está economizando no lugar errado.

Os números deste artigo são hipotéticos, escolhidos para facilitar a conta, em dólar e sem impostos. Não são preços de nenhum provedor; os valores reais ficam nas páginas oficiais de preços.

Indexaçãouma vez e a cada atualizaçãoDocumentosTrechosEmbeddingsBancovetorialcustoConsultaa cada perguntaPerguntaembeddingBuscano índicePrompt+ trechosLLMrespostacusto
Embeddings e banco vetorial custam pouco; a geração no LLM, paga a cada pergunta, é quase toda a conta.

Do que é feito o custo de um RAG?#

Um RAG tem duas fases, cada uma com seus custos:

  • Indexação (uma vez, e de novo a cada atualização): dividir os documentos em trechos, gerar o embedding de cada trecho e gravar os vetores num índice.
  • Consulta (a cada pergunta): gerar o embedding da pergunta, buscar os trechos mais parecidos e enviar pergunta e trechos ao LLM, que escreve a resposta.

Isso dá quatro linhas na fatura: embeddings, armazenamento e busca dos vetores, geração no LLM e hospedagem da aplicação que junta tudo.

Quanto custam os embeddings?#

Os modelos de embedding cobram só a entrada, por milhão de tokens, e custam bem menos que os de geração. As contas abaixo usam três faixas hipotéticas:

Faixa do modelo (hipotético) US$ por milhão de tokens Observação
Embedding pequeno 0,05 vetores de 1.536 dimensões, por exemplo
Embedding grande 0,10 vetores maiores, de 3.072 dimensões, por exemplo
Embedding premium 0,25 alguns provedores dão desconto no modo batch

Alguns provedores oferecem uma cota de tokens sem custo por conta, e outros dão desconto no modo batch. Os valores atuais estão nas páginas de preços de provedores como a OpenAI, a Voyage AI e o Google. O provedor dos embeddings não precisa ser o mesmo da geração: a documentação de embeddings da Anthropic, por exemplo, indica a Voyage AI.

A conta da indexação é pequena. Exemplo hipotético: um acervo de 10 mil documentos de 2 mil tokens soma 20 milhões de tokens: US$ 1 no embedding pequeno, US$ 5 no premium e zero enquanto durar uma cota sem custo, se o provedor oferecer uma. As perguntas também viram embeddings, mas com uns 50 tokens cada, mil perguntas por dia somam 1,5 milhão de tokens por mês: sete centavos e meio de dólar.

Quanto custa guardar e buscar os vetores?#

O tamanho de cada vetor depende das dimensões: cada uma ocupa 4 bytes em precisão simples (float32) e 2 bytes em meia precisão (float16), mais alguns bytes de cabeçalho por vetor. Com 20 milhões de tokens em trechos de 500 tokens, são 40 mil trechos:

  • 40.000 × (4 × 1.536 + 8) bytes ≈ 246 MB de vetores em precisão simples.
  • Metade disso, ≈ 123 MB, em meia precisão.
  • Some o texto dos trechos (que você guarda para mandar ao LLM) e o índice de busca, que ocupa espaço próprio.

Há dois caminhos para hospedar isso:

  1. Extensão vetorial num banco que você mesmo administra. Alguns bancos relacionais aceitam extensões open source que guardam e buscam vetores. O custo é o do servidor do banco, e 40 mil trechos cabem com folga num servidor pequeno.
  2. Serviço vetorial dedicado. Costuma ter um plano sem mensalidade, com limites de armazenamento, de leituras e escritas por mês e de região, e planos pagos com um valor mínimo mensal, mais cobrança por GB armazenado e por milhão de operações de leitura e escrita. A página de preços do Pinecone é um exemplo de como essa tabela é montada.

Para um acervo desse tamanho, o armazenamento custa menos de um dólar em qualquer opção. O que pesa é o mínimo do plano. A comparação entre os tipos de banco está em o que é um banco de dados vetorial.

Quanto custa a geração no LLM?#

Aqui está a maior parte da conta. Cada pergunta envia ao modelo o prompt de sistema, os trechos recuperados e a pergunta. Com 5 trechos de 500 tokens, a entrada chega a 3 mil tokens, mesmo que a pergunta tenha uma linha.

As contas usam as mesmas três faixas hipotéticas de preço por milhão de tokens (entrada e saída) do artigo sobre a API de um LLM: um modelo pequeno a US$ 0,20 e US$ 1, outro pequeno com saída mais cara a US$ 0,50 e US$ 4 e um intermediário a US$ 4 e US$ 20. Os valores reais estão na página de preços de cada provedor. A explicação da cobrança por token está em quanto custa usar a API de um LLM.

Quanto custa um RAG com mil perguntas por dia?#

Exemplo hipotético: 10 mil documentos (20 milhões de tokens), trechos de 500 tokens, mil perguntas por dia (30 mil por mês), 5 trechos por pergunta, prompt de sistema de 450 tokens, pergunta de 50 e resposta de 400. O script abaixo faz a conta (qualquer versão atual do Python 3, sem dependências):

python
"""custo_rag.py: rode com python custo_rag.py.
Preços em US$ por milhão de tokens: valores hipotéticos, troque pelos atuais."""

EMBEDDING = 0.05  # embedding pequeno (hipotético)
MODELOS = {
    "pequeno-a": (0.20, 1.00),
    "pequeno-b": (0.50, 4.00),
    "intermediario": (4.00, 20.00),
}

tokens_corpus = 20_000_000  # indexação: 10 mil documentos de 2 mil tokens
tokens_por_trecho = 500
dimensoes = 1536
trechos = tokens_corpus // tokens_por_trecho
bytes_por_vetor = 4 * dimensoes + 8  # float32 + cabeçalho

print(f"Indexação: US$ {tokens_corpus / 1e6 * EMBEDDING:.2f} (uma vez)")
print(f"Trechos: {trechos}, vetores: {trechos * bytes_por_vetor / 1e6:.0f} MB")

consultas = 30_000  # mil perguntas por dia
entrada = 450 + 5 * tokens_por_trecho + 50  # sistema + 5 trechos + pergunta
saida = 400
emb_perguntas = consultas * 50 / 1e6 * EMBEDDING

for nome, (preco_in, preco_out) in MODELOS.items():
    llm = consultas * (entrada * preco_in + saida * preco_out) / 1e6
    print(f"{nome}: US$ {llm + emb_perguntas:.2f} por mês")

Resultado:

Parte Custo
Indexação (uma vez) US$ 1,00
Embeddings das perguntas US$ 0,075 por mês
Geração com o modelo pequeno A cerca de US$ 30 por mês
Geração com o modelo pequeno B cerca de US$ 93 por mês
Geração com o modelo intermediário cerca de US$ 600 por mês
Banco vetorial o do servidor do seu banco, ou de zero ao mínimo mensal do plano num serviço dedicado

Trocar o modelo de geração leva a conta de US$ 30 a US$ 600 por mês; trocar o modelo de embeddings muda poucos dólares. Some ainda a hospedagem da aplicação e do banco, que é fixa por mês.

Quais custos escondidos aparecem?#

  • Trechos demais. Passar de 5 para 10 trechos quase dobra a entrada de cada pergunta. Teste com quantos trechos a resposta ainda fica boa.
  • Reindexação. Trocar o modelo de embeddings, o tamanho dos trechos ou a forma de dividir os documentos exige gerar todos os vetores de novo. Barato para 20 milhões de tokens, caro para bilhões.
  • Histórico de conversa. Num chat, o histórico se soma aos trechos a cada mensagem e a entrada cresce rápido.
  • Contexto longo. Alguns modelos cobram mais caro por prompts acima de um certo tamanho. Um RAG que despeja documentos inteiros no prompt cai nessa faixa.
  • Reranker e avaliação. Um modelo de reranking melhora a busca, mas é mais uma chamada paga por pergunta. Rodar testes de qualidade também gasta tokens.
  • Extração de documentos. PDFs escaneados precisam de OCR antes de virar texto, e isso pode custar mais que os embeddings.
  • Abuso. Um endpoint público sem limite por usuário vira uma API de LLM aberta. Veja o que é prompt injection e ponha limites no código.

Como reduzir o custo de um RAG?#

  1. Comece pelo menor modelo de geração e só suba se as respostas não servirem.
  2. Recupere menos e melhor. Trechos menores, menos trechos e um corte por similaridade mínima reduzem a entrada.
  3. Limite a saída com max_tokens e peça respostas curtas.
  4. Use cache de prompt para a parte fixa (instruções e exemplos). Os trechos mudam a cada pergunta, então o ganho fica no prompt de sistema.
  5. Guarde respostas de perguntas repetidas. FAQ interno tende a repetir as mesmas dúvidas.
  6. Use batch na indexação quando o provedor oferece desconto no modo batch para embeddings.

Como fazer isso na Square Cloud#

A tabela acima mostra que quase toda a conta está na geração. Na Square Cloud você hospeda a aplicação RAG e, a partir do Standard, pode tirar essa linha da fatura em dólar.

A aplicação (a API que recebe a pergunta, consulta o índice e chama o modelo) roda num container sempre ligado, sem cold start. Entre diversos runtimes, como Python, Node.js e Go, você escolhe o da sua stack; veja os runtimes disponíveis hoje em Runtimes. As chaves dos provedores ficam nas variáveis de ambiente da aplicação.

Para a geração, o AI Gateway, a partir do Standard (R$ 44,99 por mês), é uma API compatível com a da OpenAI que serve o modelo cubic. Você aponta o SDK da OpenAI para https://api.squarecloud.app/v2/ai, usa uma chave de API da conta com o escopo ai:chat e manda o prompt com os trechos recuperados, como faria com qualquer provedor. O gateway está em beta, com acesso antecipado sem custo extra, e os limites e a disponibilidade podem mudar quando o beta acabar. No Standard são até 2,5 milhões de tokens e até 1.000 requisições por dia, com contexto de até 16 mil tokens; no Pro, até 5 milhões de tokens e até 5.000 requisições por dia. As mil perguntas diárias do exemplo somam cerca de 3,4 milhões de tokens: passam do Standard e cabem no Pro.

O gateway faz só a geração. Os embeddings continuam num provedor como os da tabela, que custam centavos, e o índice fica num serviço vetorial externo: não há banco vetorial na plataforma, e o PostgreSQL hospedado é o nativo, sem extensões (nem pgvector). A hospedagem de bancos, útil para os documentos e o histórico, também começa no Standard, no mesmo datacenter das aplicações, com latência média de cerca de 1 ms. O Hobby, a partir de R$ 12,49, não inclui banco nem o gateway e serve para uma API leve que chama provedores externos. Um modelo de embedding local, com as wheels de torch e transformers do runtime Python, não cabe no Hobby de 1 GB.

Veja os detalhes em AI Gateway e como publicar a API em Hospedagem de APIs.

IA

Hospede apps com IA em containers sempre ligados

Saiba mais

Perguntas frequentes

Qual é a parte mais cara de um sistema RAG?

Quase sempre a geração. Cada pergunta envia ao LLM o prompt de sistema e os trechos recuperados, então a entrada fica grande. Embeddings custam centavos por milhão de tokens e são gerados uma vez, na indexação.

Quanto custa gerar embeddings de 10 mil documentos?

Com 10 mil documentos de 2 mil tokens (20 milhões de tokens), um modelo de embedding a US$ 0,05 por milhão custa US$ 1, e um a US$ 0,25 por milhão, US$ 5. São valores hipotéticos: confira o preço real do modelo escolhido.

Preciso pagar um banco vetorial dedicado?

Não necessariamente. Com dezenas de milhares de trechos, uma extensão vetorial num banco que você mesmo administra resolve, e o custo é o do servidor desse banco. Serviços dedicados costumam ter um nível sem mensalidade, com limites, e planos pagos com um valor mínimo por mês.

Trocar o modelo de embeddings tem custo?

Tem. Vetores de modelos diferentes não são comparáveis, então trocar o modelo exige gerar de novo os embeddings de todo o acervo e reconstruir o índice.

Próximo artigoComo criar um bot do Discord com IACrie um bot do Discord com IA em discord.js: comando /ask, chave de API em variável de ambiente, memória por canal, limites do Discord e como colocar no ar.