Il modello Retrieval-Augmented Generation (RAG) è un approccio standard del settore alla creazione di applicazioni che usano modelli linguistici per elaborare dati specifici o proprietari che il modello non conosce già. L'architettura è semplice, ma la progettazione, l'esperimento e la valutazione di soluzioni RAG che rientrano in questa architettura comportano molte considerazioni complesse che traggono vantaggio da un approccio rigoroso e scientifico.
Questo articolo è l'introduzione di una serie. Ogni articolo della serie illustra una fase specifica della progettazione di soluzioni RAG.
Gli altri articoli di questa serie illustrano le considerazioni seguenti:
- Come determinare i documenti di test e le query da usare durante la valutazione
- Come scegliere una strategia di suddivisione in blocchi
- Come determinare quali blocchi è necessario arricchire e come arricchire
- Come scegliere il modello di incorporamento corretto
- Come configurare l'indice di ricerca
- Come determinare quali ricerche, ad esempio vector, full-text, hybrid e manual multiple ricerche, è necessario eseguire
- Come valutare ogni passaggio
Architettura rag
Flusso dell'applicazione RAG
Il flusso di lavoro seguente descrive un flusso generale per un'applicazione RAG.
- L'utente invia una query in un'interfaccia utente dell'applicazione intelligente.
- L'applicazione intelligente effettua una chiamata API a un agente di orchestrazione. È possibile implementare l'agente di orchestrazione con strumenti o piattaforme come il kernel semantico, il flusso dei prompt di Azure Machine Learning o LangChain.
- L'agente di orchestrazione determina la ricerca da eseguire in Ricerca di intelligenza artificiale di Azure ed esegue la query.
- L'agente di orchestrazione inserisce i primi N risultati dalla query. Inserisce i risultati principali e la query come contesto all'interno di una richiesta e invia la richiesta al modello linguistico. L'agente di orchestrazione restituisce la risposta all'applicazione intelligente per consentire all'utente di leggere.
Flusso della pipeline di dati RAG
Il flusso di lavoro seguente descrive un flusso generale per una pipeline di dati che fornisce dati di base per un'applicazione RAG.
- I documenti vengono inseriti o estratti in una pipeline di dati.
- La pipeline di dati elabora singolarmente ogni documento completando i passaggi seguenti:
- Blocco documento: suddivide il documento in parti semanticamente rilevanti che idealmente hanno una singola idea o concetto.
- Arricchire i blocchi: aggiunge campi di metadati creati dalla pipeline in base al contenuto nei blocchi. La pipeline di dati classifica i metadati in campi discreti, ad esempio titolo, riepilogo e parole chiave.
- Incorpora blocchi: usa un modello di incorporamento per vettorizzare il blocco e tutti gli altri campi di metadati usati per le ricerche vettoriali.
- Mantieni blocchi: archivia i blocchi nell'indice di ricerca.
Considerazioni sulla progettazione e la valutazione rag
È necessario prendere varie decisioni di implementazione durante la progettazione della soluzione RAG. Il diagramma seguente illustra alcune delle domande che è necessario porre quando si effettuano queste decisioni.
L'elenco seguente fornisce una breve descrizione delle operazioni da eseguire durante ogni fase dello sviluppo di soluzioni RAG.
Durante la fase di preparazione , è necessario:
- Determinare il dominio della soluzione. Definire chiaramente i requisiti aziendali per la soluzione RAG.
- Raccogliere documenti di test rappresentativi. Raccogliere documenti di test per la soluzione RAG rappresentativa della raccolta documenti.
- Raccogliere query di test. Raccogliere informazioni e testare query e generare query e query sintetiche che i documenti non coprono.
Durante la fase di suddivisione in blocchi , è necessario:
- Comprendere l'economia della suddivisione in blocchi. Comprendere quali fattori considerare quando si valuta il costo complessivo della soluzione di suddivisione in blocchi per la raccolta di testo.
- Eseguire l'analisi dei documenti. Porre le domande seguenti per prendere decisioni quando si analizza un tipo di documento:
- Quale contenuto del documento si vuole ignorare o escludere?
- Quale contenuto si vuole acquisire in blocchi?
- Come si vuole suddividere il contenuto?
- Comprendere gli approcci di suddivisione in blocchi. Comprendere i diversi approcci alla suddivisione in blocchi, tra cui approcci basati su frasi, a dimensione fissa e personalizzati o usando l'aumento del modello linguistico, l'analisi del layout dei documenti e i modelli di Machine Learning.
- Comprendere in che modo la struttura del documento influisce sulla suddivisione in blocchi. Scegliere un approccio di suddivisione in blocchi in base al grado di struttura del documento.
Durante la fase di arricchimento dei blocchi , è necessario:
- Pulisci blocchi. Implementare approcci di pulizia per eliminare le differenze che non influiscono sul significato del testo. Questo metodo supporta le corrispondenze di prossimità.
- Aumentare i blocchi. Prendere in considerazione l'aumento dei dati dei blocchi con campi di metadati comuni e comprendere i potenziali usi nella ricerca. Informazioni sugli strumenti o le tecniche di uso comune per la generazione di contenuto di metadati.
Durante la fase di incorporamento , è necessario:
- Comprendere l'importanza del modello di incorporamento. Un modello di incorporamento può influire significativamente sulla pertinenza dei risultati della ricerca vettoriale.
- Scegliere il modello di incorporamento corretto per il caso d'uso.
- Valutare i modelli di incorporamento. Valutare l'incorporamento dei modelli visualizzando incorporamenti e calcolando le distanze di incorporamento.
Durante la fase di recupero delle informazioni , è necessario:
- Creare un indice di ricerca. Applicare le configurazioni di ricerca vettoriali appropriate ai campi vettoriali.
- Informazioni sulle opzioni di ricerca. Considerare i diversi tipi di ricerche, tra cui vettori, full-text, ibridi e più ricerche manuali. Informazioni su come suddividere una query in sottoquery e filtrare le query.
- Valutare le ricerche. Usare i metodi di valutazione del recupero per valutare la soluzione di ricerca.
Durante la fase di valutazione end-to-end del modello linguistico
, è necessario: - Informazioni sulle metriche di valutazione del modello linguistico. Esistono diverse metriche, tra cui terra, completezza, utilizzo e pertinenza, che è possibile usare per valutare la risposta del modello linguistico.
- Comprendere la somiglianza e le metriche di valutazione. È possibile usare metriche di somiglianza e valutazione per valutare la soluzione RAG.
- Comprendere l'importanza della documentazione, della creazione di report e dell'aggregazione. Documentare gli iperparametri e i risultati della valutazione. Aggregare i risultati da più query e visualizzare i risultati.
- Usare l'acceleratore dell'esperimento RAG. È possibile usare il repository GitHub RAG Experiment Accelerator per aiutare il team a trovare le strategie migliori per l'implementazione rag eseguendo più esperimenti, persistenza e valutazione dei risultati.
Approccio strutturato
A causa del numero di passaggi e variabili, è importante seguire un processo di valutazione strutturato per la soluzione RAG. Valutare i risultati di ogni passaggio e apportare modifiche in base ai requisiti. È consigliabile valutare ogni passaggio in modo indipendente per l'ottimizzazione, ma tenere presente che il risultato finale è l'esperienza dei clienti. Assicurarsi di comprendere tutti i passaggi di questo processo prima di determinare i propri criteri di accettazione per ogni passaggio.
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai collaboratori seguenti.
Autori principali:
- Raouf Aliouat | Software Engineer II
- Rob Bagby | Responsabile contenuto del Centro architetture principale
- Prabal Deb | Principal Software Engineer
- Chad Kittel | Principal Software Engineer
- Ritesh Modi | Ingegnere principale
- Ryan Pfalz | Senior Technical Program Manager
- Randy Bernman | Principal AI Cloud Solution Architect
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Generazione aumentata di recupero (RAG) in Azure AI Search
- Generazione e indici ottimizzati per il recupero