0 / 0
Torna alla versione inglese della documentazione
RAG (Retrieval - augmented generation)
Ultimo aggiornamento: 28 nov 2024
RAG (Retrieval - augmented generation)

È possibile utilizzare i modelli di base in IBM watsonx.ai per generare un output accurato basato sulle informazioni in una knowledge base applicando il pattern di generazione incrementato dal richiamo.

 

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 citato in molti articoli online che sono inclusi nei comuni set di dati di pretraining, senza il contesto all'inizio del prompt, nessun foundation model 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 pattern di generazione aumentata di richiamo

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

Il seguente diagramma illustra il modello di creazione aumentato del richiamo. 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 incrementato dal richiamo implica 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 foundation model che si sta utilizzando non è tarato sulle istruzioni: Aggiungere alcuni esempi che dimostrino il formato di input e output previsto.
  4. Inviare il testo combinato del prompt (istruzione + risultati della ricerca + domanda) al foundation model.
  5. Il foundation model utilizza le informazioni contestuali del prompt per generare una risposta fattuale.

L'origine della generazione aumentata di recupero

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 seq2seq pre - addestrato, e la memoria non parametrica è un indice vettoriale denso di Wikipedia, a cui si accede con un retriever neurale pre - addestrato."

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. IL quaderni di esempio illustrare i passaggi per la connessione ai database vettoriali più diffusi, come Chroma e Elasticsearch.

Per aiutarti a implementare un modello RAG in cui il retriever utilizza testo vettorizzato, watsonx.ai offre un'API di incorporamento e modelli di incorporamento che puoi utilizzare per convertire frasi e passaggi in vettori. Per ulteriori informazioni su questo tipo di implementazione RAG, consultare Utilizzo del testo vettorizzato con attività di generazione incrementate dal recupero.

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

Importare un progetto di esempio con notebook e altri asset che implementano una soluzione di domande e risposte utilizzando la generazione aumentata di 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 Python che interroghi l'indice vettoriale per cercare informazioni relative a una domanda, quindi dedurre un foundation model e verificare che la risposta generata non abbia contenuti allucinati.
  • Utilizzate i modelli di prompt che vi aiutano a formattare prompt efficaci per i modelli di fondazione IBM granite-7b-lab e Meta Llama 3.1.
  • 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.

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 il modello di generazione incrementato dal richiamo.

Esempi di generazione aumentata di richiamo
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 reperimento 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 alle domande di watsonx.ai utilizzando un foundation model
Esempio con LangChain Contiene i passi e il codice per dimostrare il supporto della generazione di richiamo di agosto 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 recupero 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

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni