Context window: cosa ci sta davvero dentro

I modelli promettono finestre di contesto da centinaia di migliaia di token, ma quello spazio non è tutto vostro: system prompt, cronologia, documenti e risposta se lo contendono. Guida ragionata a un budget che si esaurisce in fretta.

Incollate un contratto di quaranta pagine in una chat con un modello che dichiara duecentomila token di contesto, fate tre domande, ricevete tre buone risposte. Alla quindicesima domanda, il modello si «dimentica» una clausola di cui avevate discusso all’inizio. Com’è possibile, se il contratto intero occupava una frazione della finestra dichiarata? La risposta breve: la context window non è un magazzino a vostra disposizione. È un budget conteso tra molte voci di spesa, alcune delle quali non vedete nemmeno.

Cos’è, tecnicamente, la finestra di contesto

La context window è il numero massimo di token che il modello può elaborare in una singola passata: tutto ciò che legge più tutto ciò che scrive. Un token è l’unità minima in cui il testo viene spezzato prima di entrare nel modello — in italiano, grosso modo, tra mezzo e tre quarti di parola; una pagina di testo sono circa 500-700 token.

Il limite non è una scelta commerciale arbitraria: è architetturale. Nel transformer, il meccanismo di self-attention mette in relazione ogni token con tutti gli altri, un costo che cresce con il quadrato della lunghezza della sequenza. Raddoppiare il contesto non raddoppia il lavoro: lo quadruplica, in termini di calcolo dell’attention, e fa crescere linearmente una struttura di memoria (la KV cache, a cui abbiamo dedicato un articolo) che su contesti lunghi arriva a pesare gigabyte per singola conversazione. Le finestre enormi di oggi esistono grazie a ottimizzazioni ingegnose, ma il conto economico resta: contesto lungo, inferenza cara.

Il condominio dentro la finestra

L’errore più comune è pensare alla context window come a un appartamento vuoto tutto vostro. È più simile a un condominio già parzialmente occupato. Vediamo chi ci abita, in una conversazione tipica con un assistente moderno.

  • Il system prompt: le istruzioni che definiscono il comportamento dell’assistente — tono, regole, limiti. Nei prodotti commerciali può occupare migliaia di token, e voi non lo vedete mai.
  • Strumenti e definizioni: se l’assistente può usare tool (ricerca web, esecuzione di codice), le descrizioni di ogni strumento entrano nel contesto. Un agente con venti tool spende altri migliaia di token prima di leggere una sola vostra parola.
  • La cronologia della conversazione: ogni vostro messaggio e ogni risposta del modello. È la voce che cresce senza che ve ne accorgiate: una chat lunga se la mangia da sola, la finestra.
  • I documenti allegati: il contratto, il PDF, il codice sorgente. Spesso la voce singola più grande.
  • La risposta da generare: anche i token in uscita vivono nella stessa finestra. Se chiedete un’analisi lunga, dovete lasciarle spazio.

Context window da 128.000 token: chi occupa cosa System prompt ~6.000 tok Definizioni tool ~10.000 tok Cronologia conversazione ~35.000 tok (e cresce a ogni turno) Documenti allegati ~58.000 tok Spazio per la risposta ~19.000 tok residui Valori indicativi per un assistente con tool in una sessione di lavoro reale. La quota utente (documenti + domande) è solo una parte del totale dichiarato.

Il budget di una finestra da 128.000 token in una sessione realistica: prima che l’utente scriva una parola, una parte del contesto è già spesa; la cronologia erode il resto turno dopo turno.

L’analogia giusta è il bagaglio a mano in aereo: la compagnia dichiara dieci chili, ma la valigia stessa ne pesa due, il necessaire un altro, e quando arrivate a metterci i vestiti lo spazio vero è molto meno di quanto promesso dal cartello al check-in.

Presenza non significa attenzione

C’è poi un problema più sottile: anche quando tutto entra nella finestra, non tutto viene usato allo stesso modo. La ricerca sul fenomeno noto come lost in the middle (Liu et al., 2023) ha mostrato che molti modelli recuperano bene le informazioni poste all’inizio e alla fine del contesto, e molto peggio quelle sepolte nel mezzo. La curva delle prestazioni in funzione della posizione ha una forma a U: alta ai bordi, bassa al centro.

Che un’informazione sia dentro la finestra di contesto non garantisce che il modello la stia davvero guardando: entrare in aula non equivale a essere ascoltati.

I modelli più recenti hanno ridotto il problema — i benchmark «needle in a haystack», dove si nasconde una frase in un testo lunghissimo e si chiede al modello di ritrovarla, oggi vengono spesso superati con punteggi quasi perfetti. Ma quei test misurano il recupero di un dettaglio isolato, non il ragionamento che deve tenere insieme molte informazioni sparse su tutto il contesto: su quel fronte, le prestazioni con contesti molto pieni tendono ancora a degradare. Finestra grande, insomma, non significa comprensione uniforme.

Quando la finestra finisce davvero

E quando il budget si esaurisce? Le strategie tipiche dei prodotti sono tre, ognuna con un costo. La più brutale è il troncamento: si tagliano i messaggi più vecchi della cronologia, ed ecco spiegata la clausola «dimenticata» del contratto iniziale — se il documento o la discussione su di esso sono scivolati fuori dalla finestra, per il modello non sono mai esistiti. La seconda è la sintesi progressiva: la parte vecchia della conversazione viene riassunta da un modello e sostituita dal riassunto; si risparmia spazio, ma i dettagli fini si perdono, come in una fotocopia di fotocopia. La terza è il retrieval (il RAG di cui parliamo spesso su queste pagine): invece di tenere tutto nel contesto, si tiene tutto fuori — in un archivio — e si recupera solo ciò che serve alla domanda corrente. È la soluzione più scalabile, al prezzo di una nuova dipendenza: la qualità della risposta ora dipende dalla qualità del recupero.

Nessuna delle tre è «quella giusta»: sono compromessi diversi tra costo, fedeltà e scalabilità, e i prodotti seri spesso le combinano.

Il colpo d’occhio da tenere

Perché tutto questo vi riguarda, anche se non scrivete una riga di codice? Perché il comportamento strano degli assistenti AI diventa prevedibile una volta che pensate in termini di budget. La chat che «peggiora» dopo un’ora di lavoro non si sta stancando: sta troncando o riassumendo la sua memoria. Il consiglio pratico che ne segue è controintuitivo ma efficace: le conversazioni lunghe su temi diversi rendono meno di tante conversazioni brevi e mirate, ognuna con il suo contesto pulito.

Se invece costruite applicazioni sugli LLM, il contesto è letteralmente una voce di bilancio: le API si pagano a token, e ogni turno di conversazione rimanda al modello l’intera cronologia. Riempire la finestra «perché c’è spazio» significa pagare di più per risposte potenzialmente peggiori. La disciplina emergente che qualcuno chiama context engineering — decidere cosa merita di stare nella finestra, in che ordine, e cosa invece va archiviato e recuperato al bisogno — è in fondo una vecchia virtù editoriale applicata alle macchine: non dire tutto, dire ciò che serve, al momento giusto.

La prossima volta che leggete «un milione di token di contesto» in un annuncio, la domanda da farsi non è «quanto è grande?» ma «quanto di quello spazio arriverà davvero al mio problema, e quanto bene verrà usato?». È lì che si gioca la differenza tra una specifica di marketing e uno strumento che funziona.

I commenti sono riservati agli iscritti.

Accedi per commentare