Condividi tramite


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.

Screenshot of the Jupyter Notebook deployed in the container image.

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.

  1. 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
    
  2. 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.
  3. Accedere ad Azure con l'interfaccia della riga di comando di Azure.

    az login
    
  4. Crea un gruppo di risorse.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  5. Creare l'ambiente delle app contenitore.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --enable-workload-profiles
    
  6. 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.

  1. Creare il servizio aggiuntivo Qdrant.

    az containerapp add-on qdrant create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $SERVICE_NAME
    
  2. 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.

  3. 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.

  1. Configurare le impostazioni CORS nell'app contenitore.

    az containerapp ingress cors enable \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --allowed-origins "*" \
      --allow-credentials true
    
  2. 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

  1. 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.

  2. 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.

    Screenshot of the deployed Jupyter Notebook in the container image.

    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

Passaggi successivi