Inizia con la Chat di intelligenza artificiale serverless utilizzando RAG e LlamaIndex
Semplifica lo sviluppo di app di intelligenza artificiale con RAG usando i propri dati gestiti da LlamaIndex, Funzioni di Azure e tecnologie *serverless*. Questi strumenti gestiscono automaticamente l'infrastruttura e il ridimensionamento, consentendo di concentrarsi sulle funzionalità del chatbot. LlamaIndex gestisce la pipeline di dati dall'ingestione fino alla risposta in streaming.
Panoramica dell'architettura
Il flusso dell'applicazione include:
- Utilizzare l'interfaccia della chat per inserire un prompt.
- Invio della richiesta dell'utente all'API serverless tramite chiamate HTTP.
- Ricevere il prompt dell'utente usando quindi il framework LlamaIndex per elaborare e trasmettere la risposta. L'API serverless usa un motore per creare una connessione al modello LLM (Large Language Model) di Azure OpenAI e all'indice vettoriale di LlamaIndex.
Un'architettura semplice dell'app di chat è illustrata nel diagramma seguente:
Questo esempio usa LlamaIndex per generare incorporamenti e archiviarli nel proprio archivio vettoriale. LlamaIndex offre anche integrazione con altri archivi vettoriali, tra cui Ricerca di intelligenza artificiale di Azure. Questa integrazione non è illustrata in questo esempio.
Dove si trova Azure in questa architettura?
L'architettura dell'applicazione si basa sui servizi e sui componenti seguenti:
- OpenAI di Azure rappresenta il provider di intelligenza artificiale a cui viene inviata la query dell'utente.
- LlamaIndex è il framework che consente di inserire, trasformare e vettorizzare il contenuto (file PDF) e creare un indice di ricerca dai dati.
- azure Container Apps è l'ambiente contenitore in cui è ospitata l'applicazione.
- l'identità gestita di Azure aiuta a garantire una sicurezza di altissimo livello ed elimina la necessità per te, in qualità di sviluppatore, di gestire le credenziali e le chiavi API.
LlamaIndex gestisce i dati dall'inserimento al recupero
Per implementare un sistema RAG (Retrieval-Augmented Generation) con LlamaIndex, i passaggi chiave seguenti corrispondono alla funzionalità LlamaIndex:
Processo | Descrizione | LlamaIndex |
---|---|---|
Inserimento dati | Importare dati da origini come PDF, API o database. | SimpleDirectoryReader |
Blocchi di documenti | Suddividere i documenti di grandi dimensioni in blocchi più piccoli. | SentenceSplitter |
Creazione dell'indice vettoriale | Creare un indice vettoriale per ricerche di somiglianza efficienti. | VectorStoreIndex |
Recupero ricorsivo (facoltativo) dall'indice | Gestire set di dati complessi con recupero gerarchico. | |
Converti in motore per interrogazioni | Convertire l'indice vettoriale in un motore di query. | asQueryEngine |
Configurazione avanzata delle query (facoltativo) | Usare gli agenti per un sistema multiagente. | |
Implementare la pipeline RAG | Definire una funzione obiettivo che prenda le query dell'utente e recuperi blocchi di documenti correlati. | |
Eseguire il recupero | Elaborare le query e riordinare i documenti. | RetrieverQueryEngine, CohereRerank |
Prerequisiti
Per completare questo articolo, è disponibile un ambiente contenitore di sviluppo con tutte le dipendenze necessarie. È possibile eseguire il contenitore di sviluppo in GitHub Codespaces (in un browser) o in locale usando Visual Studio Code.
Per usare questo articolo, sono necessari i prerequisiti seguenti:
- Codespaces (Scelta consigliata)
- di Visual Studio Code
- Una sottoscrizione di Azure - Crearne una gratuitamente
- Autorizzazioni dell'account Azure: l'account Azure deve avere autorizzazioni Microsoft.Authorization/roleAssignments/write, ad esempio amministratore accesso utenti o proprietario.
- Un account GitHub.
Ambiente di sviluppo aperto
Usare le istruzioni seguenti per distribuire un ambiente di sviluppo preconfigurato contenente tutte le dipendenze necessarie per completare questo articolo.
- gitHub Codespaces (scelta consigliata)
- di Visual Studio Code
GitHub Codespaces esegue un contenitore di sviluppo gestito da GitHub con Visual Studio Code per il Web come interfaccia utente. Per l'ambiente di sviluppo più semplice, usare GitHub Codespaces per avere gli strumenti di sviluppo e le dipendenze corretti preinstallati per completare questo articolo.
Importante
Tutti gli account GitHub possono usare Codespaces per un massimo di 60 ore gratuite ogni mese con 2 istanze core. Per altre informazioni, vedere GitHub Codespaces mensile incluso archiviazione e ore di base.
Apri nello spazio di codice.
Attendere l'avvio dello spazio di codice. Questo processo di avvio può richiedere alcuni minuti.
Nel terminale nella parte inferiore della schermata, accedi ad Azure con la CLI per sviluppatori di Azure.
azd auth login
Completare il processo di autenticazione.
Le attività rimanenti in questo articolo vengono eseguite nel contesto di questo contenitore di sviluppo.
Distribuire ed eseguire
Il repository di esempio contiene tutti i file di codice e configurazione necessari per distribuire l'app chat serverless in Azure. La procedura seguente illustra il processo di distribuzione dell'esempio in Azure.
Distribuire l'applicazione di chat su Azure
Importante
Le risorse di Azure create in questa sezione comportano costi immediati, principalmente a causa della risorsa Ricerca Intelligenza Artificiale di Azure. Queste risorse possono accumulare costi anche se si interrompe il comando prima che venga eseguito completamente.
Per effettuare il provisioning delle risorse di Azure e distribuire il codice sorgente, eseguire il comando seguente dell'interfaccia della riga di comando per sviluppatori di Azure:
azd up
Usare la tabella seguente per rispondere alle richieste:
Sollecito Risposta Nome ambiente Tienila breve e minuscola. Aggiungere il nome o l'alias. Ad esempio, john-chat
. Viene usato come parte del nome del gruppo di risorse.Abbonamento Selezionare la sottoscrizione in cui creare le risorse. Località (per l'hosting) Seleziona una località vicino a te dall'elenco. Posizione del modello OpenAI Seleziona una località vicina dall'elenco. Se la stessa località è disponibile come prima località, selezionare questa posizione. Attendere la distribuzione dell'app. Il completamento della distribuzione potrebbe richiedere da 5 a 10 minuti.
Dopo aver distribuito correttamente l'applicazione, vengono visualizzati due URL nel terminale.
Selezionare l'URL con etichetta
Deploying service webapp
per aprire l'applicazione di chat in un browser.
Usare l'app chat per ottenere risposte dai file PDF
L'app chat viene precaricata con informazioni sugli standard fisici per la posta postale domestica da un catalogo di file PDF . È possibile usare l'app di chat per porre domande sulla lettera di posta elettronica e i pacchetti. I passaggi seguenti illustrano il processo di utilizzo dell'app di chat.
Nel browser selezionare o immettere Quanto costa inviare un pacchetto di grandi dimensioni alla Francia?.
LlamaIndex deriva la risposta usa il file PDF e trasmette la risposta.
La risposta deriva da Azure OpenAI con influenza dai dati PDF inseriti nell'archivio vettoriale LlamaIndex.
Pulire le risorse
Per pulire le risorse, è necessario risolvere due aspetti:
- Risorse di Azure, è possibile pulire le risorse con l'interfaccia della riga di comando per sviluppatori di Azure, azd.
- L'ambiente di sviluppo; GitHub Codespaces o DevContainers tramite Visual Studio Code.
Pulire le risorse di Azure
Le risorse di Azure create in questo articolo vengono fatturate al tuo abbonamento Azure. Se non si prevede che queste risorse siano necessarie in futuro, eliminarle per evitare di incorrere in costi aggiuntivi.
Eseguire il comando seguente dell'interfaccia della riga di comando per sviluppatori di Azure per eliminare le risorse di Azure e rimuovere il codice sorgente:
azd down --purge
Pulire gli ambienti di sviluppo
L'eliminazione dell'ambiente GitHub Codespaces assicura che tu possa massimizzare il diritto di ore gratuite per core disponibili per il tuo account.
Importante
Per ulteriori informazioni sui diritti dell'account GitHub, consulta la capacità di archiviazione e le ore di base mensili incluse di GitHub Codespaces.
Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).
Individuare i Codespaces attualmente in esecuzione originati dal repository GitHub
Azure-Samples/llama-index-javascript
.Apri il menu contestuale,
...
, per il codespace e quindi seleziona Elimina.
Ottenere assistenza
Questo repository di esempio offre informazioni sulla risoluzione dei problemi.
Se il problema non viene risolto, segnalare il problema nella sezione Problemi del repository.