Generazione potenziata dal recupero

Ultimo aggiornamento: 26 feb 2025
Generazione potenziata dal recupero

È possibile utilizzare i modelli di fondazione in IBM watsonx.ai per generare risultati accurati, basati sulle informazioni contenute in una base di conoscenza, applicando il modello RAG (retrieval-augmented generation ).

 

Questo video fornisce un metodo visivo per apprendere i concetti e le attività in questa documentazione.

Capitoli video

[ 0:08 ] Descrizione dello scenario
[ 0:27 ] Panoramica del pattern
[ 1:03 ] Base di conoscenza
[ 1:22 ] Componente di ricerca
[ 1:41 ] Prompt aumentato con il contesto
[ 2:13 ] Generazione dell'output
[ 2:31 ] Soluzione completa
[ 2:55 ] Considerazioni per la ricerca
[ 3:58 ] Considerazioni per il testo del prompt
[ 5:01 ] Considerazioni per la spiegabilità

 

Fornire il contesto nel prompt migliora l'accuratezza

I modelli di base possono generare un output che è di fatto inaccurato per vari motivi. Un modo per migliorare l'accuratezza dell'output generato è fornire i fatti necessari come contesto nel testo del prompt.

Esempio

Il seguente prompt include il contesto per stabilire alcuni fatti:

Aisha recently painted the kitchen yellow, which is her favorite color.

Aisha's favorite color is 

A meno che Aisha non sia una persona famosa il cui colore preferito è stato menzionato in molti articoli online inclusi nei comuni set di dati di pre-addestramento, senza il contesto all'inizio del prompt, nessun modello di base può generare in modo affidabile il completamento corretto della frase alla fine del prompt.

Se si richiede un modello con testo che include un contesto pieno di fatti, è più probabile che l'output generato dal modello sia accurato. Per ulteriori dettagli, consultare Generazione di un output accurato.

 

Il modello di generazione con recupero e incremento

È possibile scalare la tecnica di inclusione del contesto nei prompt utilizzando le informazioni in una knowledge base.

Il diagramma che segue illustra il modello di generazione con recupero e incremento. Anche se il diagramma mostra un esempio di risposta alle domande, lo stesso flusso di lavoro supporta altri casi di utilizzo.

Diagramma che mostra l'aggiunta dei risultati della ricerca all'input per la creazione aumentata del richiamo

Il modello di generazione aumentata dal recupero prevede le seguenti fasi:

  1. Ricercare nella knowledge base il contenuto correlato alla domanda di un utente.
  2. Inserire i risultati di ricerca più pertinenti nel prompt come contesto e aggiungere un'istruzione, ad esempio "Rispondi alla seguente domanda utilizzando solo le informazioni dei seguenti passaggi".
  3. Solo se il modello di base che stai utilizzando non è ottimizzato per l'istruzione : aggiungi alcuni esempi che dimostrino il formato di input e output previsto.
  4. Invia il testo del prompt combinato (istruzioni + risultati della ricerca + domanda) al modello di base.
  5. Il modello di base utilizza le informazioni contestuali della richiesta per generare una risposta concreta.

L'origine della generazione aumentata dal reperimento

In questo lavoro è stato introdotto il termine retrieval-augmented generation (RAG ): Retrieval-augmented generation for knowledge-intensive NLP tasks. "Costruiamo modelli RAG in cui la memoria parametrica è un trasformatore pre-addestrato di tipo " seq2seq " e la memoria non parametrica è un indice vettoriale denso di Wikipedia, a cui si accede con un "neural retriever" riqualificato"

In questo articolo, il termine Modelli RAG fa riferimento a un'implementazione specifica di un retriever (un codificatore di query specifico e un indice di ricerca di documenti basato su vettori) e di un generatore (uno specifico modello di linguaggio generativo pre - addestrato). Tuttavia, l'approccio di base di ricerca e generazione può essere generalizzato per utilizzare diversi componenti retriever e modelli di base.

Knowledge base

La knowledge base può essere qualsiasi raccolta di risorse utente contenenti informazioni, ad esempio:

  • Informazioni sul processo nelle pagine wiki aziendali interne
  • File in GitHub (in qualsiasi formato: Markdown, testo semplice, JSON, codice)
  • Messaggi in uno strumento di collaborazione
  • Argomenti nella documentazione del prodotto, che possono includere blocchi di testo lunghi
  • Passaggi di testo in un database che supporta query SQL (structured query language), come Db2
  • Un archivio documenti con una raccolta di file, come i contratti legali memorizzati come file PDF
  • Ticket di assistenza clienti in un sistema di gestione dei contenuti

Programma di recupero

Il retriever può essere una qualsiasi combinazione di strumenti di ricerca e contenuto che restituiscono in modo affidabile contenuti pertinenti dalla knowledge base, inclusi strumenti di ricerca come IBM Watson Discovery o API di ricerca e contenuto come quelle fornite da GitHub.

Anche i database vettoriali sono dei retriever efficaci. Un database vettoriale memorizza non solo i dati, ma anche un inserimento vettoriale dei dati, che è una rappresentazione numerica dei dati che cattura il suo significato semantico. Al momento della query, viene utilizzato un vettore che incorpora il testo della query per trovare corrispondenze rilevanti.

IBM watsonx.ai non include un database vettoriale, ma puoi utilizzare i modelli di fondazione in watsonx.ai con qualsiasi database vettoriale sul mercato. I notebook di esempio illustrano i passaggi per la connessione a database vettoriali diffusi, come Cloud Pak for Data e Elasticsearch.

Per aiutarvi a implementare un modello RAG in cui il retriever utilizza testo vettoriale, watsonx.ai offre un'API di incorporamento e modelli di incorporamento che potete usare per convertire frasi e passaggi in vettori. Per ulteriori informazioni su questo tipo di implementazione di RAG, vedere Utilizzo di testo vettoriale con compiti di generazione aumentata dal reperimento.

Generatore

Il componente generatore può utilizzare qualsiasi modello in watsonx.ai, a seconda del caso di utilizzo, del formato del prompt e del contenuto che si sta estraendo per il contesto.

Progetto di esempio

Importazione di un progetto di esempio con notebook e altre risorse che implementano una soluzione di domande e risposte utilizzando la generazione aumentata dal recupero. Il progetto mostra come eseguire le seguenti operazioni:

  • Utilizzate i file HTML, PDF, DOC o PPT come base di conoscenza e un indice vettoriale Elasticsearch come retriever. (È necessario creare l'istanza del servizio Elasticsearch separatamente)
  • Scrivere una funzione di " Python " che interroghi l'indice vettoriale per cercare informazioni relative a una domanda, quindi deduca un modello di base e controlli la risposta generata per verificare la presenza di contenuti allucinati.
  • Utilizzate i modelli di prompt che vi aiutano a formulare prompt efficaci per i modelli di fondazione.
  • Seguite il modello in modo efficiente con le utilità RAG della libreria watsonx.ai Python.
  • Implementare la fase successiva di un'implementazione di RAG includendo funzioni per la raccolta e l'analisi del feedback degli utenti sulle risposte generate.

Provate il progetto di esempio Q&A con RAG Accelerator.

Per ulteriori informazioni, vedere Domande e risposte con RAG Accelerator.

Nota: Se non si riesce a creare il progetto campione, provare a sostituire il testo del campo descrizione.

Esempi

I seguenti esempi dimostrano come applicare lo schema di generazione con recupero e incremento.

Esempi di generazione potenziata dal recupero
Esempio Descrizione Collegamento
Introduzione semplice Utilizza una piccola knowledge base e un componente di ricerca semplice per dimostrare il modello di base. Introduzione alla generazione aumentata dal recupero
Introduzione semplice con Discovery Questo notebook di esempio utilizza brevi articoli in IBM Watson Discovery come knowledge base e l'API Discovery per eseguire query di ricerca. Semplice introduzione alla generazione aumentata dal recupero con watsonx.ai e Discovery
Esempio del mondo reale La documentazione watsonx.ai dispone di una funzione di ricerca e risposta che può rispondere alle domande di base utilizzando gli argomenti nella documentazione come una knowledge base. Rispondere a domande di tipo " watsonx.ai " utilizzando un modello di base
Esempio con LangChain Contiene i passaggi e il codice per dimostrare il supporto della generazione aumentata dal recupero con LangChain in watsonx.ai. Introduce i comandi per il richiamo dei dati, la creazione e la query della knowledge base e il test del modello. Utilizzare watsonx e LangChain per rispondere alle domande utilizzando RAG
Esempio con LangChain e un database vettore Elasticsearch Dimostra come utilizzare LangChain per applicare un modello di incorporazione ai documenti in un database vettore Elasticsearch . Il notebook indicizza e utilizza l'archivio dati per generare risposte alle domande in entrata. Usare watsonx, Elasticsearch e LangChain per rispondere alle domande (RAG)
Esempio con la libreria Python Elasticsearch Dimostra come utilizzare la libreria Elasticsearch Python per applicare un modello di integrazione ai documenti in un database vettoriale Elasticsearch . Il notebook indicizza e utilizza l'archivio dati per generare risposte alle domande in entrata. Usare watsonx e la libreria Elasticsearch Python per rispondere alle domande (RAG)
Esempio con LangChain e un database SingleStoreDB Mostra come applicare la generazione ottimizzata per il reperimento a modelli linguistici di grandi dimensioni in watsonx utilizzando il database SingleStoreDB. RAG con SingleStoreDB e watsonx

Ulteriori informazioni

Prova queste esercitazioni:

Argomento principale: Sviluppo di soluzioni AI generative