Migliorare la capacità di ChatGPT di comprendere prompt ambigui
Questo articolo è stato originariamente pubblicato su The New Stack e viene ripubblicato qui con autorizzazione.
La tecnica di prompt engineering aiuta i large language models (LLM) a gestire pronomi e altri riferimenti coreferenziali complessi nei sistemi di retrieval augmented generation (RAG).
Nel regno in continua espansione dell’AI, large language models (LLMs) come ChatGPT stanno guidando ricerca e applicazioni innovative a una velocità senza precedenti. Uno sviluppo significativo è l’emergere della retrieval augmented generation (RAG). Questa tecnica combina la potenza degli LLM con un vector database che funge da memoria a lungo termine per migliorare l’accuratezza delle risposte generate. Una manifestazione esemplare dell’approccio RAG è il progetto open source Akcio, che offre un solido sistema di domande e risposte.
Architettura di Akcio
Nell’architettura di Akcio, la conoscenza specifica del dominio viene integrata senza soluzione di continuità in un vector store, come Milvus o Zilliz (Milvus completamente gestito), utilizzando un data loader. Il vector store recupera i risultati Top-K più pertinenti per la query dell’utente e li trasmette all’LLM, fornendo all’LLM il contesto sulla domanda dell’utente. Successivamente, l’LLM perfeziona le sue risposte sulla base della conoscenza esterna.
Per esempio, se un utente chiede: “Quali sono i casi d’uso dei large language models nel 2023?” in merito a un articolo intitolato “Insights Report on the Progress of Large Language Models in 2023” importato in Akcio, il sistema recupera abilmente i tre passaggi più rilevanti dal report:
1. Nel 2023, i casi d’uso degli LLM possono essere suddivisi in due categorie: AI generativa e processo decisionale. Si prevede che gli scenari di processo decisionale abbiano un valore aziendale più elevato.
2. Lo scenario di AI generativa include principalmente interazione dialogica, sviluppo di codice, agenti intelligenti, ecc.
3. Le applicazioni NLP includono classificazione del testo, traduzione automatica, analisi del sentiment, riassunto automatico, ecc.
Akcio combina questi passaggi con la query originale e li inoltra all’LLM, generando una risposta sfumata e precisa:
Gli scenari applicativi del settore dei large model possono essere suddivisi in scenari di generazione e di processo decisionale.
La sfida della risoluzione delle coreferenze in RAG
Tuttavia, nonostante i progressi compiuti, l’implementazione dei sistemi RAG introduce sfide, in particolare nelle conversazioni multi-turno che implicano la risoluzione delle coreferenze. Considera questa sequenza di domande:
Q1: Quali sono i casi d’uso del large language model nel 2023?
A1: I casi d’uso dei large language models possono essere suddivisi in AI generativa e processo decisionale.
Q2: Quali sono le loro differenze, e puoi fornire esempi?
Il pronome “loro” in Q2 si riferisce a “AI generativa e processo decisionale.” Tuttavia, l’LLM potrebbe generare risultati irrilevanti per questa domanda che compromettono la coerenza della conversazione:
1. BERT e GPT sono modelli importanti nel campo dell’NLP, ma presentano differenze significative nella loro progettazione e negli scenari applicativi.
2. La differenza tra modelli grandi e modelli piccoli risiede nella loro scala e complessità. I modelli grandi di solito hanno più parametri e strutture più complesse, richiedendo maggiori risorse computazionali e tempo per l’addestramento e l’inferenza. I modelli piccoli, invece, sono relativamente semplici, con meno parametri e velocità di addestramento e inferenza più elevate.
3. Tuttavia, non ci sono informazioni aggiuntive per distinguere tra questi due prodotti perché appaiono molto simili.
Utilizzare ChatGPT per la risoluzione delle coreferenze
I metodi tradizionali, come la tokenizzazione, la lemmatizzazione e la sostituzione di parole chiave tramite reti neurali ricorrenti, sono spesso inadeguati per risolvere riferimenti complessi. Di conseguenza, i ricercatori si sono rivolti a LLM come ChatGPT per attività di risoluzione delle coreferenze. Questo approccio consiste nell’istruire ChatGPT a sostituire i pronomi o a mantenere la domanda originale in base al contesto fornito. Sebbene questo metodo sia promettente, occasionalmente produce risposte dirette invece di seguire le istruzioni del prompt, il che indica la necessità di una strategia più raffinata.
Esempi testati
Abbiamo sperimentato comandi semplici che sollecitavano ChatGPT a sostituire i pronomi utilizzando il seguente formato di prompt:
prompt = f'''Genera una nuova domanda attenendoti alle seguenti linee guida:
1. Completa eventuali pronomi o condizioni mancanti nella domanda in base al contesto.
2. Mantieni la domanda originale se è già completa.
{history}
Domanda: {question}'''
Esempio 1
Query:
history = ''' Che cos’è l’NLP?
NLP sta per Natural Language Processing. È un campo dell’informatica e dell’intelligenza artificiale che si concentra sull’interazione tra computer ed esseri umani utilizzando il linguaggio naturale. '''
question = 'Quale problema risolve?'
Risposta di ChatGPT:
Quale problema risolve il Natural Language Processing (NLP)?
In questo caso, ChatGPT ha fatto un ottimo lavoro, sostituendo “it” con “Natural Language Processing (NLP).”
Esempio 2
Query:
history = '''Quando è stato rilasciato GPT4?
GPT4 è stato rilasciato nel 2023'''
question = 'Quali progressi sono stati fatti nella visione artificiale quest’anno?'
Risposta di ChatGPT:
Quali progressi sono stati fatti nella visione artificiale quest’anno?
In questo caso, ChatGPT ha avuto difficoltà a sostituire “quest’anno,” portando a una risoluzione incompleta.
Esempio 3
Query:
history = '''Che cos’è GPT3?
GPT-3 (Generative Pre-trained Transformer 3) è un modello di elaborazione del linguaggio all’avanguardia sviluppato da OpenAI.
Quando è stato rilasciato GPT4?
GPT4 è stato rilasciato nel 2023'''
question = 'Qual è la differenza tra loro? Quali sono i vantaggi del secondo?'
Risposta di ChatGPT:
Spiacente, le informazioni fornite sulla data di rilascio di GPT-4 non sono accurate, poiché non è stata annunciata ufficialmente da OpenAI. Pertanto, non è possibile rispondere alla domanda sulla differenza tra GPT-3 e GPT-4 o sui vantaggi del secondo.
Sfortunatamente, ChatGPT si discosta dalle istruzioni, forse a causa del suo intricato processo decisionale. Nonostante i nostri sforzi per rafforzare il prompt, ChatGPT talvolta tende verso risposte dirette, complicando il compito di risoluzione delle coreferenze.
Prompt few-shot con Chain of Thought: un approccio raffinato
Il prompt engineering svolge un ruolo fondamentale nello sfruttare gli LLM in modo efficace. Abbiamo deciso di testare la combinazione di prompt few-shot con il metodo Chain of Thought (CoT) come strategia promettente. I prompt few-shot presentano agli LLM molteplici esempi di riferimento, guidandoli a emulare tali esempi nelle loro risposte. CoT migliora le prestazioni degli LLM nei compiti di ragionamento complesso incoraggiando un ragionamento passo dopo passo nelle loro risposte.
Integrando queste tecniche, abbiamo sviluppato un formato di prompt per guidare ChatGPT nella risoluzione delle coreferenze. Il formato di prompt rivisto include una cronologia della conversazione vuota, esempi di base, sostituzioni di pronomi non riuscite e casi che coinvolgono più pronomi, per offrire a ChatGPT istruzioni più esplicite ed esempi di riferimento. I casi in cui ChatGPT restituisce NEED COREFERENCE RESOLUTION: Yes sono cruciali, poiché indicano che ChatGPT deve sostituire pronomi o riferimenti ambigui per una risposta coerente.
Ecco un formato di prompt perfezionato:
REWRITE_TEMP = f'''
HISTORY:
[]
NOW QUESTION: Hello, how are you?
NEED COREFERENCE RESOLUTION: No => THOUGHT: Consequently, the output question mirrors the current query. => OUTPUT QUESTION: Hello, how are you?
-------------------
HISTORY:
[Q: Is Milvus a vector database?
A: Yes, Milvus is a vector database.]
NOW QUESTION: How to use it?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: I must substitute 'it' with 'Milvus' in the current question. => OUTPUT QUESTION: How to use Milvus?
-------------------
HISTORY:
[]
NOW QUESTION: What are its features?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: Although 'it' requires substitution, there's no suitable reference in the history. Thus, the output question remains unchanged. => OUTPUT QUESTION: What are its features?
-------------------
HISTORY:
[Q: What is PyTorch?
A: PyTorch is an open-source machine learning library for Python. It provides a flexible and efficient framework for building and training deep neural networks.
Q: What is Tensorflow?
A: TensorFlow is an open-source machine learning framework. It provides a comprehensive set of tools, libraries, and resources for building and deploying machine learning models.]
NOW QUESTION: What is the difference between them?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: 'Them' should be replaced with 'PyTorch and Tensorflow' in the current question. => OUTPUT QUESTION: What is the difference between PyTorch and Tensorflow?
-------------------
HISTORY:
[{history}]
NOW QUESTION: {question}
NEED COREFERENCE RESOLUTION: '''
Esempi testati e risposte perfezionate
Ecco alcuni risultati dei nostri esperimenti con prompt perfezionati:
Esempio 1
Query:
history = '''When was GPT-4 released?
GPT-4 was released in 2023'''
question = 'What progress has been made in computer vision this year?'
Risposta perfezionata di ChatGPT:
Yes => THOUGHT: I need to replace "this year" with "2023" in the now question. => OUTPUT QUESTION: What progress has been made in computer vision in 2023?
Esempio 2:
Query:
history = '''What is GPT-3?
GPT-3 (Generative Pre-trained Transformer 3) is a state-of-the-art language processing model developed by OpenAI.
When was GPT-4 released?
GPT-4 was released in 2023'''
question = 'What is the difference between the two? What are the advantages of the latter?'
Risposta perfezionata di ChatGPT:
Yes => THOUGHT: I need to replace 'the two' with 'GPT-3 and GPT-4' and 'the latter' with 'GPT-4' in the now question. => OUTPUT QUESTION: What is the difference between GPT-3 and GPT-4? What are the advantages of GPT-4?
Il formato di prompt perfezionato migliora significativamente la capacità di ChatGPT di gestire compiti complessi di risoluzione delle coreferenze. Le domande che coinvolgono più entità, che in precedenza rappresentavano una sfida, ora vengono affrontate in modo efficace. ChatGPT sostituisce abilmente pronomi e riferimenti ambigui, fornendo risposte accurate e contestualmente pertinenti.
Conclusione
Il prompt engineering svolge un ruolo fondamentale nella risoluzione dei problemi di coreferenza nei sistemi RAG che utilizzano LLM. Integrando tecniche innovative come prompt few-shot e metodi CoT, abbiamo migliorato significativamente la gestione di riferimenti complessi nei sistemi RAG, consentendo a LLM come ChatGPT di sostituire accuratamente pronomi e riferimenti ambigui, con il risultato di risposte coerenti.
Continua a leggere

Why Context Engineering Is Becoming the Full Stack of AI Agents
Discover how context engineering unifies prompts, RAG, and tools to build smarter, production-ready AI agents powered by Milvus.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.



