Gemini include una finestra contestuale da 1 milione di token. In passato, i modelli linguistici di grandi dimensioni (LLM) erano significativamente limitati dalla quantità di testo (o token) che poteva essere passata al modello in una sola volta. La finestra contestuale lunga di Gemini, con un recupero quasi perfetto (>99%), sblocca molti nuovi casi d'uso e paradigmi per gli sviluppatori.
Il codice che utilizzi già per casi come la generazione di contenuti o gli input multimodali funzionerà immediatamente con un contesto lungo.
In questa guida esplorerai brevemente le nozioni di base della finestra contestuale, come gli sviluppatori dovrebbero pensare al contesto lungo, vari casi d'uso reali per il contesto lungo e modi per ottimizzare l'utilizzo del contesto lungo.
Che cos'è una finestra contestuale?
Il modo di base per utilizzare i modelli Gemini consiste nel passare informazioni (contesto) al modello, che genererà successivamente una risposta. Un'analogia per la finestra contestuale è la memoria a breve termine. La quantità di informazioni che possono essere memorizzate nella memoria a breve termine di una persona è limitata, e lo stesso vale per i modelli generativi.
Puoi scoprire di più sul funzionamento dei modelli nella nostra guida ai modelli generativi.
Inizia a utilizzare il contesto lungo
La maggior parte dei modelli generativi creati negli ultimi anni era in grado di elaborare solo 8000 token alla volta. I modelli più recenti hanno spinto questo limite ancora più in là, accettando 32.000 o 128.000 token. Gemini è il primo modello in grado di accettare 1 milione di token.
In pratica, 1 milione di token corrisponderebbe a:
- 50.000 righe di codice (con i 80 caratteri standard per riga)
- Tutti i messaggi che hai inviato negli ultimi 5 anni
- 8 romanzi in inglese di lunghezza media
- Trascrizioni di oltre 200 puntate di podcast di durata media
Anche se i modelli possono acquisire sempre più contesto, gran parte della conoscenza convenzionale sull'utilizzo dei modelli linguistici di grandi dimensioni presuppone questa limitazione intrinseca del modello, che a partire dal 2024 non è più valida.
Alcune strategie comuni per gestire la limitazione delle finestre di contesto di piccole dimensioni includevano:
- Eliminazione arbitraria di vecchi messaggi/testo dalla finestra contestuale man mano che viene inserito nuovo testo
- Riassumere i contenuti precedenti e sostituirli con il riepilogo quando la finestra di contesto è quasi piena
- Utilizzo di RAG con la ricerca semantica per spostare i dati dalla finestra contestuale a un database vettoriale
- Utilizzo di filtri deterministici o generativi per rimuovere determinati testi/caratteri dai prompt per risparmiare token
Sebbene molte di queste siano ancora pertinenti in alcuni casi, il punto di partenza predefinito ora è semplicemente inserire tutti i token nella finestra contestuale. Poiché i modelli Gemini sono stati progettati appositamente con una finestra contestuale ampia, sono molto più capaci di apprendere in contesto.
Questo esempio sottolinea come puoi iniziare a pensare a ciò che è possibile fare con il contesto lungo e le funzionalità di apprendimento in-context di Gemini.
Casi d'uso del contesto lungo
Sebbene il caso d'uso standard per la maggior parte dei modelli generativi sia ancora l'input di testo, la famiglia di modelli Gemini consente un nuovo paradigma di casi d'uso multimodali. Questi modelli possono comprendere in modo nativo testo, video, audio e immagini. Sono accompagnati dall'API Gemini Enterprise per Gemini, che accetta tipi di file multimodali per praticità.
Testo in formato lungo
Il testo si è rivelato il livello di intelligence alla base di gran parte dello slancio degli LLM. Come accennato in precedenza, gran parte della limitazione pratica degli LLM era dovuta alla mancanza di una finestra di contesto sufficientemente ampia per eseguire determinate attività. Ciò ha portato alla rapida adozione della Retrieval-Augmented Generation (RAG) e di altre tecniche che forniscono dinamicamente al modello informazioni contestuali pertinenti. Ora, con finestre contestuali sempre più grandi, sono disponibili nuove tecniche che sbloccano nuovi casi d'uso.
Alcuni casi d'uso emergenti e standard per il contesto lungo basato su testo includono:
- Riassumere grandi corpora di testo
- Le opzioni di riassunto precedenti con modelli di contesto più piccoli richiedevano una finestra scorrevole o un'altra tecnica per mantenere lo stato delle sezioni precedenti man mano che nuovi token venivano passati al modello
- Domande e risposte
- In passato, questo era possibile solo con la RAG, data la quantità limitata di contesto e il basso richiamo oggettivo dei modelli.
- Agentic Workflows
- Il testo è alla base del modo in cui gli agenti tengono traccia di ciò che hanno fatto e di ciò che devono fare; non avere informazioni sufficienti sul mondo e sull'obiettivo dell'agente è un limite all'affidabilità degli agenti
L'apprendimento contestuale many-shot è una delle funzionalità più uniche sbloccate dai modelli con contesto lungo. La ricerca ha dimostrato che l'adozione del paradigma di esempio comune "single-shot" o "multi-shot", in cui al modello vengono presentati uno o più esempi di un'attività, e l'espansione di questo paradigma a centinaia, migliaia o persino centinaia di migliaia di esempi, può portare a nuove funzionalità del modello. Questo approccio many-shot ha anche dimostrato di avere prestazioni simili ai modelli ottimizzati per un'attività specifica. Per i casi d'uso in cui le prestazioni di un modello Gemini non sono ancora sufficienti per un'implementazione in produzione, puoi provare l'approccio many-shot. Come potrai scoprire più avanti nella sezione Ottimizzazione del contesto lungo, la memorizzazione nella cache del contesto rende questo tipo di workload con token di input elevati molto più fattibile dal punto di vista economico e, in alcuni casi, con una latenza ancora più bassa.
Video nel formato lungo
L'utilità dei contenuti video è stata a lungo limitata dalla mancanza di accessibilità del mezzo stesso. Era difficile scorrere i contenuti, le trascrizioni spesso non riuscivano a cogliere le sfumature di un video e la maggior parte degli strumenti non elabora immagini, testo e audio insieme. Con Gemini, le funzionalità di testo con contesto lungo si traducono nella capacità di ragionare e rispondere a domande su input multimodali con prestazioni costanti.
Alcuni casi d'uso emergenti e standard per il contesto lungo dei video includono:
- Domande e risposte sui video
- Memoria video, come mostrato con Project Astra di Google
- Sottotitoli video
- Sistemi di consigli per i video, arricchendo i metadati esistenti con una nuova comprensione multimodale
- Personalizzazione dei video, esaminando un corpus di dati e i metadati dei video associati, quindi rimuovendo le parti dei video non pertinenti per lo spettatore
- Moderazione dei contenuti video
- Elaborazione video in tempo reale
Quando lavori con i video, è importante considerare come i video vengono elaborati in token, il che influisce sulla fatturazione e sui limiti di utilizzo. Puoi scoprire di più sul prompting con file video nella guida al prompting.
Audio nel formato lungo
I modelli Gemini sono stati i primi modelli linguistici di grandi dimensioni nativamente multimodali in grado di comprendere l'audio. In passato, il flusso di lavoro tipico degli sviluppatori prevedeva la combinazione di più modelli specifici per un dominio, come un modello di trascrizione vocale e un modello da testo a testo, per elaborare l'audio. Ciò ha comportato una latenza aggiuntiva dovuta all'esecuzione di più richieste di andata e ritorno e una riduzione delle prestazioni, solitamente attribuita alle architetture disconnesse della configurazione di più modelli.
Alcuni casi d'uso emergenti e standard per il contesto audio includono:
- Trascrizione e traduzione in tempo reale
- Domande e risposte su podcast/video
- Trascrizione e riepilogo delle riunioni
- Assistenti vocali
Puoi scoprire di più sul prompting con file audio nella guida al prompting.
Ottimizzazioni del contesto lungo
L'ottimizzazione principale quando si lavora con un contesto lungo e i modelli Gemini è l'utilizzo della memorizzazione nella cache del contesto. Oltre alla precedente impossibilità di elaborare molti token in una singola richiesta, l'altro vincolo principale era il costo. Se hai un'app "chatta con i tuoi dati" in cui un utente carica 10 PDF, un video e alcuni documenti di lavoro, in passato avresti dovuto utilizzare uno strumento/framework di Retrieval-Augmented Generation (RAG) più complesso per elaborare queste richieste e pagare un importo significativo per i token spostati nella finestra di contesto. Ora puoi memorizzare nella cache i file caricati dall'utente e pagare per archiviarli su base oraria. Il costo di input/output per richiesta è inferiore al costo di input/output standard, quindi se l'utente chatta con i propri dati abbastanza, si ottiene un enorme risparmio sui costi per te in qualità di sviluppatore.
Limitazioni del contesto lungo
In varie sezioni di questa guida, abbiamo parlato di come i modelli Gemini raggiungono prestazioni elevate in varie valutazioni di recupero di tipo "ago nel pagliaio". Questi test prendono in considerazione la configurazione più semplice, in cui cerchi un singolo ago. Nei casi in cui potresti avere più "aghi" o informazioni specifiche che stai cercando, il modello non funziona con la stessa accuratezza. Le prestazioni possono variare notevolmente a seconda del contesto. Questo è un aspetto importante da considerare, in quanto esiste un compromesso intrinseco tra il recupero di informazioni corrette e il costo. Puoi ottenere un risparmio di circa il 99% su una singola query, ma devi pagare il costo dei token di input ogni volta che invii la query. Quindi, per recuperare 100 informazioni, se hai bisogno di un rendimento del 99%, probabilmente dovrai inviare 100 richieste. Questo è un buon esempio di come la memorizzazione nella cache del contesto può ridurre in modo significativo i costi associati all'utilizzo dei modelli Gemini, mantenendo al contempo prestazioni elevate.
Passaggi successivi
Elenca e conta i token
Utilizza l'SDK Google Gen AI per elencare i token e i relativi ID token di un prompt e ottenere un conteggio totale dei token di un prompt.