Introduzione all'esempio di chat aziendale Java con RAG

Questo articolo illustra come distribuire ed eseguire l'esempio di app Di chat aziendale per Java. Questo esempio implementa un'app di chat usando Java, il servizio Azure OpenAI e il recupero della generazione aumentata (RAG) in Ricerca di intelligenza artificiale di Azure per ottenere risposte sui vantaggi dei dipendenti in una società fittizia. L'app viene sottoposto a seeding con file PDF, inclusi il manuale dei dipendenti, un documento sui vantaggi e un elenco di ruoli e aspettative aziendali.

Seguendo le istruzioni riportate in questo articolo, potrai:

  • Distribuire un'app di chat in Azure.
  • Ottenere risposte sui vantaggi dei dipendenti.
  • Modificare le impostazioni per cambiare il comportamento delle risposte.

Dopo aver completato questo articolo, è possibile iniziare a modificare il nuovo progetto con il codice personalizzato.

Questo articolo fa parte di una raccolta di articoli che illustrano come creare un'app di chat usando il servizio Azure OpenAI e Ricerca di intelligenza artificiale di Azure. Altri articoli della raccolta includono:

Panoramica dell'architettura

Un'architettura semplice dell'app di chat è illustrata nel diagramma seguente:

Diagramma che mostra l'architettura dal client all'app back-end.

I componenti chiave dell'architettura includono:

  • Un'applicazione Web per ospitare l'esperienza di chat interattiva.
  • Una risorsa di Ricerca intelligenza artificiale di Azure per ottenere risposte dai propri dati.
  • Un servizio OpenAI di Azure da fornire:
    • Parole chiave per migliorare la ricerca sui tuoi dati.
    • Risposte dal modello OpenAI.
    • Incorporamenti dal modello ada

Costo

La maggior parte delle risorse in questa architettura usa un piano tariffario di base o a consumo. I prezzi a consumo si basano sull'utilizzo, il che significa che si paga solo per ciò che si usa. Per completare questo articolo, ci sarà un addebito, ma sarà minimo. Al termine dell'articolo, puoi eliminare le risorse per interrompere l’addebito.

Altre informazioni sui costi nel repository di esempio.

Prerequisiti

Per completare questo articolo è disponibile un ambiente contenitore di sviluppo con tutte le dipendenze necessarie. Puoi 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:

  1. Una sottoscrizione di Azure: creare un account gratuitamente
  2. Autorizzazioni dell'account Azure: l'account Azure deve avere autorizzazioni Microsoft.Authorization/roleAssignments/write, ad esempio Amministratore accesso utenti o Proprietario.
  3. Accesso concesso ad Azure OpenAI nella sottoscrizione di Azure desiderata. Attualmente, l'accesso a questo servizio viene concesso solo dall'applicazione. È possibile richiedere l'accesso a OpenAI di Azure completando il modulo all'indirizzo https://aka.ms/oai/access. Apri un problema in questo repository per contattare Microsoft in caso di problemi.
  4. Account GitHub

Ambiente di sviluppo aperto

Inizia ora con un ambiente di sviluppo che ha tutte le dipendenze installate per completare questo articolo.

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, usa 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 di core. Per altre informazioni, vedere Spazio di archiviazione e ore core mensili inclusi in GitHub Codespaces.

  1. Avviare il processo per creare un nuovo codespace GitHub nel ramo main del repository GitHub Azure-Samples/azure-search-openai-demo-java.

  2. Fai clic con il pulsante destro del mouse sul pulsante seguente e scegli Apri collegamento in nuove finestre per avere a disposizione allo stesso tempo sia l'ambiente di sviluppo che la documentazione.

  3. Nella pagina Crea codespace esaminare le impostazioni di configurazione del codespace e quindi selezionare Crea nuovo codespace

    Screenshot della schermata di conferma prima di creare un nuovo codespace.

  4. Attendere l'avvio del codespace. Questo processo di avvio può richiedere alcuni minuti.

  5. Nel terminale nella parte inferiore della schermata, accedi ad Azure con Azure Developer CLI.

    azd auth login
    
  6. Copia il codice dal terminale e incollalo in un browser. Segui le istruzioni per eseguire l'autenticazione con l'account Azure.

  7. 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 un'app di chat in Azure. La procedura seguente illustra il processo di distribuzione dell'esempio in Azure.

Distribuire l'app di chat in Azure

Importante

Le risorse di Azure create in questa sezione comportano costi immediati, principalmente per la risorsa Azure AI Search. Queste risorse possono accumulare costi anche se si interrompe il comando prima che venga eseguito completamente.

  1. Esegui il seguente comando Azure Developer CLI per effettuare il provisioning delle risorse di Azure e distribuire il codice sorgente:

    azd up
    
  2. Quando ti viene richiesto di immettere un nome ambiente, sceglilo breve e in minuscolo. Ad esempio: myenv. Viene usato come parte del nome del gruppo di risorse.

  3. Quando richiesto, seleziona una sottoscrizione in cui creare le risorse.

  4. Quando ti viene richiesto di selezionare una posizione la prima volta, seleziona una posizione nelle vicinanze. Questa posizione viene usato per la maggior parte delle risorse, incluso l'hosting.

  5. Se viene ti richiesta una posizione per il modello OpenAI, seleziona una posizione vicina. Se la stessa posizione è disponibile come prima posizione, selezionala.

  6. Attendi la distribuzione dell'app. Il completamento della distribuzione potrebbe richiedere da 5 a 10 minuti.

  7. Dopo che l'applicazione è stata distribuita correttamente, viene visualizzato un URL nel terminale.

  8. Seleziona l'URL etichettato Deploying service web per aprire l'applicazione di chat in un browser. Screenshot dell'app chat nel browser che mostra diversi suggerimenti per l'input della chat e la casella di testo della chat per immettere una domanda.

Usa l'app di chat per ottenere risposte dai file PDF

L'app di chat viene precaricata con informazioni sui vantaggi dei dipendenti che provengono da file PDF. Puoi usare l'app di chat per porre domande sui vantaggi. I passaggi seguenti illustrano il processo di utilizzo dell'app di chat.

  1. Nel browser selezionare o immettere "Che cosa è incluso nel piano Northwind Health Plus non standard?" nella casella di testo della chat.

    Screenshot della prima risposta dell'app chat.

  2. Nella risposta selezionare una delle citazioni.

    Screenshot della prima risposta dell'app di chat con la citazione evidenziata in una casella rossa.

  3. Nel riquadro di destra usare le schede per comprendere come è stata generata la risposta.

    Scheda Descrizione
    Processo di pensiero Si tratta di uno script delle interazioni nella chat.
    Contenuto di supporto Sono incluse le informazioni per rispondere alla domanda e il materiale originario.
    Citazione Viene visualizzata la pagina PDF contenente la citazione.
  4. Al termine, selezionare di nuovo la scheda selezionata per chiudere il riquadro.

Usa le impostazioni dell'app di chat per modificare il comportamento delle risposte

L'intelligenza dell'app di chat è determinata dal modello OpenAI e dalle impostazioni usate per interagire con il modello.

Screenshot delle impostazioni per sviluppatori di chat.

Impostazione Descrizione
Esegui l'override del modello di richiesta Questo è il prompt usato per generare la risposta.
Recupera questi numerosi risultati della ricerca Questo è il numero dei risultati della ricerca usati per generare la risposta. Puoi visualizzare queste origini restituite nelle schede Processo di pensiero e Contenuto di supporto della citazione.
Escludi categoria Si tratta della categoria di documenti esclusi dai risultati della ricerca.
Usa il classificatore semantico per il recupero Si tratta di una funzionalità di Azure AI Search che usa l’apprendimento automatico per migliorare la pertinenza dei risultati della ricerca.
Usa riepiloghi contestuali di query anziché documenti interi Quando vengono controllati sia Use semantic ranker che Use query-contextual summaries, l'LLM usa didascalie estratte dai passaggi chiave, anziché da tutti i passaggi, nei documenti con classificazione più alta.
Suggerire domande di follow-up Fare in modo che l'app di chat suggerisca domande di follow-up in base alla risposta.
Modalità di recupero Vettori e testo significa che i risultati della ricerca sono basati sul testo dei documenti e sulle incorporazioni dei documenti. Vettori significa che i risultati della ricerca sono basati sulle incorporazioni dei documenti. Testo significa che i risultati della ricerca sono basati sul testo dei documenti.
Eseguire lo streaming delle risposte di completamento della chat Risposta di flusso invece di attendere fino a quando non è disponibile la risposta completa per una risposta.

I passaggi seguenti illustrano il processo di modifica delle impostazioni.

  1. Nel browser selezionare la scheda Sviluppo Impostazioni.

  2. Seleziona la casella di controllo Suggerisci domande di follow-up e poni nuovamente la stessa domanda.

    What is my deductible?
    

    La chat ha restituito domande di follow-up suggerite, ad esempio le seguenti:

    1. What is the cost sharing for out-of-network services?
    2. Are preventive care services subject to the deductible?
    3. How does the prescription drug deductible work?
    
  3. Nella scheda Impostazioni deseleziona Usa classificatore semantico per il recupero.

  4. Porre di nuovo la stessa domanda?

    What is my deductible?
    
  5. Qual è la differenza nelle risposte?

    Ad esempio, la risposta, che ha usato il ranker semantico ha fornito una singola risposta: The deductible for the Northwind Health Plus plan is $2,000 per year.

    Il repository senza classificazione semantica ha restituito una risposta, che richiedeva più lavoro per ottenere la risposta: Based on the information provided, it is unclear what your specific deductible is. The Northwind Health Plus plan has different deductible amounts for in-network and out-of-network services, and there is also a separate prescription drug deductible. I would recommend checking with your provider or referring to the specific benefits details for your plan to determine your deductible amount.

Pulire le risorse

Pulire le risorse di Azure

Le risorse di Azure create in questo articolo vengono fatturate alla sottoscrizione di Azure. Se prevedi che queste risorse non ti servano in futuro, eliminale per evitare di incorrere in costi aggiuntivi.

Esegui il seguente comando Azure Developer CLI per eliminare le risorse di Azure e rimuovere il codice sorgente:

azd down --purge

Pulire GitHub Codespaces

L'eliminazione dell'ambiente GitHub Codespaces offre la possibilità di aumentare le ore gratuite per core a cui si ha diritto per l'account.

Importante

Per altre informazioni sui diritti dell'account GitHub, vedere Ore di archiviazione e di core mensili incluse in GitHub Codespaces.

  1. Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).
  2. Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub Azure-Samples/azure-search-openai-demo-java. Screenshot di tutti i codespace in esecuzione, inclusi lo stato e i modelli.
  3. Aprire il menu di scelta rapida per il codespace e selezionare Elimina. Screenshot del menu di scelta rapida per un singolo codespace con l'opzione di eliminazione evidenziata.

Come risponde la domanda?

L'app è separata in 2 app:

  • Un'applicazione JavaScript front-end che usa il framework React con lo strumento di compilazione Vite.
  • Un'applicazione Java back-end risponde alla domanda.

L'API back-end /chat illustra il processo di recupero della risposta:

  • Opzioni di compilazione rag: creare un set di opzioni che verranno usate per generare una risposta.
  • Creare un approccio usando le opzioni RAG: usare una combinazione di modelli basati sul recupero e basati su generative per creare un approccio per generare una risposta accurata e naturale.
  • Eseguire l'approccio con le opzioni RAG e la conversazione precedente: usare l'approccio e le opzioni rag per generare una risposta in base alla conversazione precedente. La risposta include informazioni sui documenti usati per generare la risposta.

Come ottenere assistenza

Questo repository di esempio offre informazioni sulla risoluzione dei problemi.

Se il rilascio non viene risolto, registrare il problema in Problemi del repository.

Passaggi successivi