Torna al blog

RAG e datiGuida

Quanto costa una domanda RAG: quanti chunk inviare

Stima i token di una domanda RAG, vedi il costo di 1.000 e 100.000 domande sui prezzi live e scegli il numero di chunk che sta nel tuo budget.

Di CheapTokens TeamPubblicato il 6 min di lettura

Diagramma: una domanda e i chunk recuperati fluiscono nel modello, il costo dipende dal numero di chunk
In questa pagina
  1. Cosa entra in una richiesta RAG
  2. Quanto costano 1.000 domande
  3. Top-k: ogni chunk aggiunge la stessa quantità
  4. L'intero documento nel prompt, o quattro chunk
  5. Invia la richiesta
  6. Quattro modi per ridurre l'input

Il tuo chatbot per documenti funziona, arriva la prima fattura ed è più alta di quanto le domande meritino. In quasi ogni configurazione RAG il denaro va in un solo posto: i chunk recuperati che incolli davanti a ogni domanda. Una domanda RAG costa i token della domanda, delle tue istruzioni e di N chunk sul lato input, più una risposta breve sul lato output. I chunk sono la parte che controlli, e ognuno aggiunge lo stesso numero di token a ogni singola richiesta.

Questa guida conta una richiesta, ne prezza 1.000 e 100.000 sui prezzi live, e mostra cosa cambia quando sposti il top-k da 3 a 10. Il retrieval in sé (il tuo vector store, il tuo chunking) resta dalla tua parte; solo la chiamata finale di generazione va all'API del modello. Se la fatturazione di input e output è nuova per te, inizia da token di input vs output.

Cosa entra in una richiesta RAG#

Immagina un bot di supporto sui documenti aziendali. Un cliente chiede: "Come reimposto l'accesso a due fattori?", il tuo retriever restituisce i cinque passaggi migliori e invii questo al modello:

  • un system prompt: "Rispondi solo dal contesto. Se non c'è, dillo." — circa 300 token una volta aggiunte le regole di formattazione;
  • la domanda con un po' di contesto della chat — circa 200 token;
  • 5 chunk da circa 500 token ciascuno — 5 × 500 = 2.500 token;
  • la risposta: due o tre paragrafi brevi — circa 300 token in uscita.

Il lato input è 2.500 + 300 + 200 = 3.000 token, il lato output circa 300. Queste sono le ipotesi dell'autore per un tipico bot di supporto; sostituiscile con i tuoi numeri. Tutto quanto segue usa questa singola richiesta come unità.

Il modo rapido per vedere la forma: i chunk sono circa cinque sesti dell'intero input, e l'input è dieci volte la risposta. Prova tu stesso la stima:

Indovina il numero

Quanti token di input invia la richiesta qui sopra?

Mostra risposta

Risposta: 3000

3.000: 5 chunk × 500 = 2.500, più 300 per il system prompt e 200 per la domanda. I chunk dominano.

Quanto costano 1.000 domande#

Una richiesta è troppo piccola per sentirla, quindi scala. Con 3.000 token in input e 300 in output, 1.000 domande inviano 3.000.000 di token di input e generano 300.000 token di output. Trascina gli slider qui sotto per adattarli al tuo bot; il sito ricalcola sui prezzi live per ogni modello.

Calcolatore di costi

Un giorno di un bot di supporto

Token di input per richiesta: 3000 · Token di output per richiesta: 300 · Richieste al giorno: 1000

ModelloAl giornoAl mese
GLM-5.3-Flash$0.072$2.16
DeepSeek-V4-Flash$0.075$2.25
MiniMax-M2.7$0.195$5.85

La tabella mostra lo stesso carico di lavoro per tutti e tre i modelli, con il riferimento OpenRouter accanto. Contando il totale, con input e output insieme, ognuno di essi risulta più economico di OpenRouter qui.

Modello Per richiesta 1000 richieste OpenRouter, 1000 richieste
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

3000 token di input e 300 token di output per richiesta. I prezzi per 1M di token sono attuali e cambiano insieme alle nostre tariffe; la colonna OpenRouter mostra i prezzi di riferimento per lo stesso carico di lavoro.

E con 100.000 domande? Sono 300.000.000 di token in input e 30.000.000 in output. Su DeepSeek-V4-Flash sono $7.50, su GLM-5.3-Flash $7.20, su MiniMax-M2.7 $19.50. I prezzi sono fissi per modello, senza ore di punta, quindi un batch notturno e una chat diurna costano lo stesso per token. Vedi il listino completo su la pagina dei prezzi.

Top-k: ogni chunk aggiunge la stessa quantità#

Ecco il secondo scenario: un assistente per il wiki interno. Qualcuno suggerisce: "Mandiamo 10 chunk invece di 3, per sicurezza." L'input cresce in linea retta: ogni chunk sono altri 500 token in ogni richiesta.

Tre chunk contro dieci: la stessa domanda, una dimensione dell'input diversa
Token di input per richiesta con top-k 3 e top-k 10, nell'ipotesi di 500 token per chunk

2.000 contro 5.500 token: la risposta è della stessa lunghezza, quindi tutta la differenza nella fattura dell'assistente wiki è input. Se ti compra una risposta migliore è una questione di qualità: oltre il punto in cui il passaggio giusto è già nel contesto, i chunk extra aggiungono soprattutto rumore e costo. Un modo pratico per scegliere k è prendere un insieme di domande reali, verificare a quale k compare il passaggio giusto e fermarsi poco sopra.

La finestra di contesto è l'altro limite. Tutti e tre i modelli qui hanno ampio spazio per un top-k ordinario: 180K token per MiniMax-M2.7, 380K per DeepSeek-V4-Flash e 390K per GLM-5.3-Flash. I limiti di output differiscono: fino a 8.192 token per risposta per GLM-5.3-Flash e MiniMax-M2.7, fino a 32.768 per DeepSeek-V4-Flash, cosa che conta se le tue risposte sono report lunghi anziché repliche brevi.

Scegli il tuo caso

Qual è il tuo caso RAG?

Risposte brevi da pochi chunk

Un bot di supporto o una FAQ con top-k di 3–6 e risposte di qualche centinaio di token si adatta a uno qualsiasi dei tre modelli. Scegli in base alla qualità sulle tue domande, poi lascia decidere la tabella dei costi qui sopra.

Risposte lunghe e riassunti

Se le risposte arrivano a migliaia di token, DeepSeek-V4-Flash consente fino a 32.768 token di output per risposta e un contesto di 380K.

Molti documenti per richiesta

Se vuoi unire molti passaggi o intere sezioni, GLM-5.3-Flash ha il contesto più grande dei tre, 390K.

L'intero documento nel prompt, o quattro chunk#

Terzo scenario: Q&A sui contratti. La versione pigra incolla l'intero PDF da 30.000 token in ogni domanda. La versione con retrieval invia la domanda, le istruzioni e quattro chunk rilevanti da circa 650 token ciascuno, circa 3.000 token in totale. Stesse 1.000 domande, stesse risposte da 300 token:

Costo di 1.000 domande sui contratti su DeepSeek-V4-Flash
  • Intero documento da 30.000 token in ogni richiesta$0.48
  • Domanda, istruzioni e 4 chunk recuperati, circa 3.000 token$0.075

Il documento completo invia dieci volte l'input, 30.000 ÷ 3.000 = 10, per la stessa domanda. Ha ancora senso per una singola domanda una tantum su un documento che sta nel contesto. Per un bot che risponde tutto il giorno, è il default costoso. Se gran parte di quell'input è lo stesso testo ogni volta, leggi di prompt caching.

Invia la richiesta#

Qui sotto c'è lo step di generazione. La parte di retrieval è tua: chunks è qualunque cosa abbia restituito il tuo vector store. Lo stesso codice funziona con l'SDK OpenAI o con curl puro.

Fai una domanda con i chunk recuperati

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?"}
    ]
  }'

L'ultima riga dell'esempio Python è quella utile. usage.prompt_tokens è il tuo input reale per domanda; confrontalo con la stima di 3.000 e sostituisci le mie ipotesi con i tuoi numeri. Usa l'id completo del modello, come nell'esempio: deepseek-ai/DeepSeek-V4-Flash-0731. Gli id sono elencati nella documentazione. La configurazione completa è in la documentazione, e se vuoi vedere come si sommano i token di un bot lungo un dialogo, perché una chat lunga costa di più copre la parte della cronologia.

Quattro modi per ridurre l'input#

Inizia con max_tokens, che limita la risposta e ti protegge da una replica fuori controllo. Poi riduci k al valore più piccolo che trova ancora il passaggio giusto. Rendi i chunk più compatti, così 500 token portano 500 token di significato e non intestazioni e boilerplate. Elimina i chunk duplicati prima dell'invio: due passaggi quasi identici costano il doppio e dicono una volta sola. E misura con usage sul traffico reale, perché un'ipotesi su chunk da 500 token è solo un'ipotesi. Per uno sguardo più ampio su dove vanno i token in una chiamata API, vedi quanti token usa una richiesta.

Inserisci i tuoi token per richiesta nel calcolatore qui sopra per prezzare il tuo bot su tutti e tre i modelli; se le tue risposte sono lunghe, DeepSeek-V4-Flash è quello da guardare per primo.