Esercitazione: Connessione a un database vettoriale Qdrant in App Azure Container (anteprima)
App Azure Container usa componenti aggiuntivi per semplificare la connessione a vari servizi cloud di livello di sviluppo. Invece di creare istanze di servizi in anticipo per stabilire connessioni con impostazioni di configurazione complesse, è possibile usare un componente aggiuntivo per connettere l'app contenitore a un database come Qdrant.
Per un elenco completo dei servizi supportati, vedere Connessione ai servizi in App Azure Container.
L'applicazione di esempio distribuita in questa esercitazione consente di interfacciarsi con un motore di raccomandazione musicale basato sul database vettoriale Qdrant. L'immagine del contenitore ospita un notebook di Jupyter che contiene il codice che è possibile eseguire sul database per:
- Interfaccia con i dati dei brani
- Generare incorporamenti per ogni brano
- Visualizzare le raccomandazioni sui brani
Dopo la distribuzione, è possibile eseguire il codice in Jupyter Notebook per interfacciarsi con i dati del brano nel database.
In questa esercitazione:
- Creare un'app contenitore
- Usare un componente aggiuntivo App contenitore per connettersi a un database Qdrant
- Interagire con un notebook di Jupyter per esplorare i dati
Importante
Questa esercitazione usa servizi che possono influire sulla fattura di Azure. Se si decide di seguire la procedura dettagliata, assicurarsi di disattivare o eliminare le risorse in primo piano in questo articolo per evitare la fatturazione imprevista.
Prerequisiti
Per completare questo progetto, sono necessari gli elementi seguenti:
Requisito | Istruzioni |
---|---|
Account Azure | Se non si dispone di un account, crearne uno gratuitamente. Per continuare, è necessaria l'autorizzazione Collaboratore o Proprietario per la sottoscrizione di Azure. Per informazioni dettagliate, vedere Assegnare ruoli di Azure usando il portale di Azure. |
Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Configurazione
Prima di iniziare a usare il database Qdrant, è prima necessario creare l'app contenitore e le risorse necessarie.
Eseguire i comandi seguenti per creare il gruppo di risorse, l'ambiente delle app contenitore e il profilo del carico di lavoro.
Configurare il nome dell'applicazione e le variabili del gruppo di risorse. È possibile modificare questi valori in base alle preferenze.
export APP_NAME=music-recommendations-demo-app export RESOURCE_GROUP=playground
Creare variabili per supportare la configurazione dell'applicazione. Questi valori vengono forniti ai fini di questa lezione. Non modificare questi valori.
export SERVICE_NAME=qdrantdb export LOCATION=southcentralus export ENVIRONMENT=music-recommendations-demo-environment export WORKLOAD_PROFILE_TYPE=D32 export CPU_SIZE=8.0 export MEMORY_SIZE=16.0Gi export IMAGE=simonj.azurecr.io/aca-ephemeral-music-recommendation-image
Variabile Descrizione SERVICE_NAME
Nome del servizio aggiuntivo creato per l'app contenitore. In questo caso, si crea un'istanza di livello di sviluppo di un database Qdrant. LOCATION
Posizione dell'area di Azure in cui si crea l'app contenitore e il componente aggiuntivo. ENVIRONMENT
Nome dell'ambiente app Azure Container per l'applicazione demo. WORKLOAD_PROFILE_TYPE
Tipo di profilo del carico di lavoro usato per l'app contenitore. Questo esempio usa un profilo di carico di lavoro per utilizzo generico con 32 core 128 GiB di memoria. CPU_SIZE
Dimensioni allocate della CPU. MEMORY_SIZE
Quantità di memoria allocata. IMAGE
Immagine del contenitore usata in questa esercitazione. Questa immagine del contenitore include Jupyter Notebook che consente di interagire con i dati nel database Qdrant. Accedere ad Azure con l'interfaccia della riga di comando di Azure.
az login
Crea un gruppo di risorse.
az group create --name $RESOURCE_GROUP --location $LOCATION
Creare l'ambiente delle app contenitore.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --enable-workload-profiles
Creare un profilo di carico di lavoro dedicato con risorse sufficienti per lavorare con un database vettoriale.
az containerapp env workload-profile add \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --workload-profile-type $WORKLOAD_PROFILE_TYPE \ --workload-profile-name bigProfile \ --min-nodes 0 \ --max-nodes 2
Usare il componente aggiuntivo Qdrant
Ora che si dispone di un ambiente esistente e di un profilo del carico di lavoro, è possibile creare l'app contenitore e associarla a un'istanza del componente aggiuntivo di Qdrant.
Creare il servizio aggiuntivo Qdrant.
az containerapp add-on qdrant create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $SERVICE_NAME
Creare l'app contenitore.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --workload-profile-name bigProfile \ --cpu $CPU_SIZE \ --memory $MEMORY_SIZE \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --env-vars RESTARTABLE=yes \ --ingress external \ --target-port 8888 \ --transport auto \ --query properties.outputs.fqdn
Questo comando restituisce il nome di dominio completo (FQDN) dell'app contenitore. Copiare questo percorso in un editor di testo in quanto necessario in un passaggio successivo.
Un passaggio successivo indica di richiedere un token di accesso per accedere all'applicazione ospitata dall'app contenitore. Assicurarsi di attendere tre-cinque minuti prima di tentare di eseguire la richiesta per il token di accesso dopo aver creato l'app contenitore per dare tempo sufficiente per configurare tutte le risorse necessarie.
Associare il servizio aggiuntivo Qdrant all'app contenitore.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind qdrantdb
Configurare l'app contenitore
Ora che l'app contenitore è in esecuzione e connessa a Qdrant, è possibile configurare l'app contenitore per accettare le richieste in ingresso.
Configurare le impostazioni CORS nell'app contenitore.
az containerapp ingress cors enable \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --allowed-origins "*" \ --allow-credentials true
Dopo aver aspettato da tre a cinque minuti per completare le operazioni di installazione, richiedere un token di accesso per il notebook di Jupyter ospitato.
echo Your access token is: `az containerapp logs show -g $RESOURCE_GROUP --name $APP_NAME --tail 300 | \ grep token | cut -d= -f 2 | cut -d\" -f 1 | uniq`
Quando si esegue questo comando, il token viene stampato nel terminale. Il messaggio dovrebbe essere simile all'esempio seguente.
Your access token is: 348c8aed080b44f3aaab646287624c70aed080b44f
Copiare il valore del token nell'editor di testo da usare per accedere a Jupyter Notebook.
Usare Jupyter Notebook
Aprire un Web browser e incollare l'URL dell'app contenitore da riservare in un editor di testo.
Quando la pagina viene caricata, viene visualizzata una casella di input per immettere il token di accesso.
Accanto all'etichetta Password to token (Password da token a token ), immettere il token nella casella di input e selezionare Login (Accedi).
Dopo l'autenticazione, è possibile interagire con il codice e i dati in Jupyter Notebook.
Dopo l'avvio del notebook, seguire le istruzioni per interagire con il codice e i dati.
Pulire le risorse
Le risorse create in questa esercitazione hanno effetto sulla fattura di Azure. Se non si intende usare questi servizi a lungo termine, eseguire il comando seguente per rimuovere tutti gli elementi creati in questa esercitazione.
az group delete \
--resource-group $RESOURCE_GROUP