È 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.
Il modello di generazione incrementato dal richiamo implica le seguenti fasi:
- Ricercare nella knowledge base il contenuto correlato alla domanda di un utente.
- 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".
- 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.
- Inviare il testo combinato del prompt (istruzione + risultati della ricerca + domanda) al foundation model.
- 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.
Esempi
I seguenti esempi dimostrano come applicare il modello di generazione incrementato dal 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:
- Prompt di un foundation model utilizzando il Prompt Lab
- Promuovere un foundation model con il modello di generazione aumentata dal reperimento
Argomento principale: Sviluppo di soluzioni AI generative