Introduzione: Cos’è l’Ingegneria del Contesto?

L’ingegneria del contesto si riferisce alla disciplina del progettare, organizzare e manipolare il contesto che viene fornito ai grandi modelli linguistici (LLM) al fine di ottimizzare le loro prestazioni. A differenza del fine-tuning dei pesi o delle architetture del modello, l’ingegneria del contesto si concentra sull’input—inclusi i prompt, le istruzioni del sistema, la conoscenza recuperata, il formattaggio, e persino l’ordine delle informazioni.

L’ingegneria del contesto non riguarda solo la creazione di prompt migliori. Si tratta di costruire sistemi che forniscono il contesto giusto, esattamente quando serve.

Immaginiamo un assistente AI incaricato di redigere un feedback sui rendimenti.

Poche informazioni: L’assistente vede solo l’istruzione. Il risultato è un feedback vago e generico che manca di profondità.

Contesto ricco: L’assistente vede l’istruzione più gli obiettivi dell’impiegato, i feedback precedenti, i risultati dei progetti, il feedback dei pari, e le note del manager. Il risultato? Un feedback articolato, supportato da dati e personalizzato—proprio perché è così.

Questa pratica emergente sta guadagnando terreno a causa dell'aumento della fiducia nei modelli basati su prompt come GPT-4, Claude e Mistral. La prestazione di questi modelli dipende spesso poco dalle loro dimensioni, ma molto dalla qualità del contesto che ricevono. In tale contesto, l’ingegneria del contesto funge da funzionamento equivalente al prompting per l’era degli agenti intelligenti e la generazione arricchita da ricerca (RAG).

Perché abbiamo bisogno di ingegneria del contesto?

Efficienza dei token: Sebbene le finestre di contesto si stiano espandendo (es. 128K in GPT-4-Turbo), la gestione efficiente del contesto è cruciale. Un contesto ridondante o male organizzato sprecarebbe token preziosi.

Precisione e Relevanza: I modelli LLM sono sensibili al “rumore”. Più mirato e logicamente organizzato è il prompt, più alta è la probabilità di ottenere un output accurato.

Generazione Arricchita da Ricerca (RAG): Nei sistemi RAG, i dati esterni vengono recuperati in tempo reale. L’ingegneria del contesto aiuta a decidere cosa recuperare, come suddividerlo e come presentarlo.

Workflows Agentic: Quando si usano strumenti come LangChain o OpenAgents, gli agenti autonomi si affidano al contesto per mantenere memoria, obiettivi e utilizzo degli strumenti. Un contesto cattivo conduce a fallimenti nella pianificazione o agli hallucination.

Adattamento Specifico del Dominio: Il fine-tuning è costoso. Gestire meglio i prompt o costruire pipeline di recupero consente ai modelli di eseguire bene in compiti specializzati con apprendimento zero-shot o few-shot.

Tecniche Principali nell'Ingegneria del Contesto

Varie metodologie e pratiche formano il campo:

1. Ottimizzazione del Prompt del Sistema

Il prompt del sistema è fondamentale. Definisce il comportamento e lo stile del LLM. Tecniche includono:

    • Assegnazione di ruoli (es. “Sei un tutor di data science”)
    • Frammentazione delle istruzioni (es. “Pensaci passo per passo”)
    • Imporre vincoli (es. “Solo output JSON”)

2. Composizione e Concatenazione di Prompt

LangChain ha reso popolare l’uso di modelli di prompt e concatenamenti per modulare i prompt. La concatenazione consente di suddividere i compiti per prompt—per esempio, decomporre una domanda, recuperare la prova, poi rispondere.

3. Compressione del Contesto

Con finestre limitate di contesto, si può:

    • Usare modelli di sintesi per comprimere conversazioni precedenti
    • Utilizzare embedding e clustering per rimuovere la ridondanza
    • Applicare formati strutturati (come tabelle) invece di testi estesi

4. Recupero Dinamico e Indirizzamento

Nelle pipeline RAG (come in LlamaIndex e LangChain), i documenti vengono recuperati da depositi vettoriali in base all’intenzione dell'utente. Configurazioni avanzate includono:

    • Rifrasare o espandere la query prima del recupero
    • Indirizzamento multivettore per scegliere fonti o recupera diversi
    • Riposizionamento contestuale in base alla rilevanza e alla recentezza

5. Ingegneria della Memoria

La memoria a breve termine (ciò che è nel prompt) e la memoria a lungo termine (informazioni storiche recuperabili) devono allinearsi. Tecniche includono:

    • Re-ripetizione contestuale (inserzione di interazioni rilevanti del passato)
    • Sommario della memoria
    • Selezionare la memoria in base all'intento

6. Contesto Arricchito dagli Strumenti

Negli ambienti basati sugli agenti, l’utilizzo degli strumenti è contestualmente-aware:

    • Formattazione della descrizione degli strumenti
    • Riassunto della cronologia degli strumenti
    • Osservazioni passate tra i passaggi

Ingegneria del Contesto vs. Prompt Engineering

Anche se correlati, l'ingegneria del contesto è più ampia e orientata al sistema. L’ingegneria dei promping si riferisce di solito agli input statici creati manualmente. L’ingegneria del contesto include la costruzione dinamica del contesto attraverso embedding, memoria, concatenamenti e recupero. Come osservato da Simon Willison, “L’ingegneria del contesto è ciò che facciamo invece di fine-tuning.”

Applicazioni Pratiche

    • Agenti di Supporto Clienti: Fornire riassunti delle richieste precedenti, profili clienti, documenti KB.
    • Assistenti per Codifica: Inserire documenti specifici del repository, commit precedenti e utilizzo delle funzioni.
    • Ricerca Documento Legale: Query basate sul contesto con storia dei casi e casi precedenti.
    • Educazione: Agenti di insegnamento personalizzati con memoria comportamento e obiettivi dell’utente.

Difficoltà nell'Ingegneria del Contesto

Nonostante le sue promesse, l’ingegneria del contesto affronta diversi problemi:

    • Latenza: I passaggi di recupero e formattazione introducono overhead.
  • Qualità del Ranking: Un cattivo recupero danneggia la