Prompt Enrichment
L'arricchimento dei prompt aggiunge dati dell'utente, documenti recuperati, risultati di strumenti o esempi a una richiesta prima che raggiunga un modello di IA, così le risposte sono adatte all'utente.
L'arricchimento del prompt consiste nell'aggiungere automaticamente informazioni alla richiesta di un utente prima che raggiunga un modello AI. Il codice dell'applicazione si interpone tra l'utente e il modello e inserisce ciò che l'utente non ha digitato: i dati del suo account, i documenti che rispondono alla domanda, dati in tempo reale provenienti dagli strumenti, esempi svolti o una versione più dettagliata della richiesta. Un cliente che chiede "Perché la mia fotocamera non viene più rilevata?" digita sette parole, mentre il modello linguistico di grandi dimensioni (LLM) riceve quelle sette parole insieme al dispositivo del cliente, alla versione software e all'articolo di assistenza relativo proprio a quel problema. Il termine è un ombrello che comprende diverse tecniche, la più nota delle quali è la generazione aumentata dal recupero (RAG).
Cosa aggiunge l'arricchimento#
- Dati utente e di sessione: Campi del profilo, piano, lingua, posizione, data corrente o pagina visualizzata dall'utente, letti dai registri dell'applicazione stessa.
- Conoscenze recuperate: Passaggi trovati cercando in una raccolta di documenti o in un grafo di conoscenza testi pertinenti alla richiesta.
- Risultati degli strumenti: Valori recuperati per la richiesta, come lo stato di un ordine tramite un'API, una riga di database o l'output di un altro modello.
- Esempi selezionati: Esempi few-shot scelti per ogni richiesta perché simili all'input, invece di un unico insieme fisso per tutte le richieste.
- Query riscritte: Un modello amplia una richiesta concisa prima che venga usata. In HyDE, Luyu Gao e colleghi fanno scrivere a un LLM una risposta ipotetica, quindi usano il vettore di embedding di quel documento per recuperare documenti reali; il risultato ha superato quello dello stesso sistema di recupero non supervisionato alimentato dalla sola domanda.
L'esempio seguente arricchisce una domanda di assistenza con i dati dell'account e l'articolo di supporto più pertinente, recuperato tramite similarità TF-IDF con scikit-learn:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# Context the user never typed: their account record and the help center's articles
account = {"plan": "Pro", "device": "USB webcam", "app_version": "2.3"}
articles = [
"Version 2.4 fixes USB webcams that are not detected after a system update.",
"Pro plans include ten concurrent video streams per workspace.",
"Invoices are available on the billing page as soon as a payment succeeds.",
]
question = "Why is my camera not detected anymore?"
# Retrieve the article most similar to the question
vectorizer = TfidfVectorizer().fit([*articles, question])
scores = cosine_similarity(vectorizer.transform([question]), vectorizer.transform(articles))[0]
best = articles[scores.argmax()]
# Assemble the enriched prompt the model actually receives
profile = ", ".join(f"{key}: {value}" for key, value in account.items())
prompt = f"Customer profile: {profile}\nRelevant article: {best}\nQuestion: {question}"
print(prompt)Stampa:
Customer profile: plan: Pro, device: USB webcam, app_version: 2.3
Relevant article: Version 2.4 fixes USB webcams that are not detected after a system update.
Question: Why is my camera not detected anymore?La domanda dell'utente non menziona mai una webcam, una versione o un aggiornamento, eppure il prompt arricchito contiene tutto ciò che serve per rispondere "aggiornamento dalla versione 2.3 alla 2.4". I sistemi di produzione in genere recuperano informazioni usando vettori di embedding densi da un database vettoriale o tramite ricerca ibrida, ma il passaggio di assemblaggio è lo stesso.
L'arricchimento nella pratica#
Nel 2023, GitHub ha descritto come la tecnica delle schede adiacenti di Copilot cerchi nei file aperti dallo sviluppatore frammenti simili al codice vicino al cursore e li aggiunga al prompt; questo ha prodotto un aumento relativo del 5% nella frequenza con cui gli utenti accettavano i suggerimenti di Copilot. I chatbot per l'assistenza clienti arricchiscono ogni turno con i dati dell'account e degli ordini, mentre gli agenti AI arricchiscono ogni passaggio con i risultati delle chiamate precedenti agli strumenti.
Le pipeline di visione arricchiscono i prompt con ciò che ha rilevato un rilevatore. In Ultralytics Platform Agents, un blocco LLM invia al modello visione-linguaggio selezionato ogni immagine insieme ai risultati dei blocchi a monte, come i rilevamenti di YOLO26, così un prompt scritto una sola volta viene arricchito con nuovi risultati di rilevamento degli oggetti per ogni immagine elaborata dal flusso di lavoro.
L'arricchimento ha dei costi. Ogni passaggio aggiunto utilizza token, aumentando il prezzo e la latenza di inferenza; un contesto irrilevante o eccessivo riduce l'accuratezza, un effetto noto come deterioramento del contesto. Anche le pagine web e i documenti recuperati possono contenere attacchi di prompt injection, e qualsiasi dato personale aggiunto a un prompt solleva questioni di privacy dei dati, perché viene inviato a chi esegue il modello.
Arricchimento del prompt e termini correlati#
- Generazione aumentata dal recupero (RAG): La forma di arricchimento che cerca in una raccolta esterna di documenti. L'arricchimento comprende anche dati che non richiedono ricerche, come il piano dell'utente o la data corrente.
- Prompt engineering: Una persona progetta il modello del prompt. L'arricchimento lo compila con dati specifici della richiesta in fase di esecuzione.
- Context engineering: Gestisce tutto ciò che rientra nel contesto di un modello in un'applicazione, compreso cosa aggiungere, comprimere o eliminare a ogni passaggio. L'arricchimento è la parte dedicata all'aggiunta.
- Ancoraggio alle fonti: Collegare l'output di un modello a fonti verificabili. L'arricchimento fornisce tali fonti nel prompt.
- Compressione del prompt: Accorcia un prompt rimuovendo i token con poca informazione e viene spesso applicata dopo l'arricchimento, quando il contesto aggiunto è lungo.










