Share via


Tutorial: Conexión a una base de datos de vectores de Qdrant en Azure Container Apps (versión preliminar)

Azure Container Apps usa complementos para facilitar la conexión a varios servicios en la nube de nivel de desarrollo. En lugar de crear instancias de servicios con antelación para establecer conexiones con opciones de configuración complejas, puede usar un complemento para conectar la aplicación contenedora a una base de datos como Qdrant.

Para obtener una lista completa de los servicios admitidos, consulte Conexión a servicios en Azure Container Apps.

La aplicación de ejemplo implementada en este tutorial le permite interactuar con un motor de recomendaciones de música basado en la base de datos de vectores de Qdrant. La imagen de contenedor hospeda un cuaderno de Jupyter Notebook que contiene el código que puede ejecutar en la base de datos para:

  • Interactuar con datos de canciones
  • Generar incrustaciones para cada canción
  • Ver recomendaciones de canciones

Una vez implementado, tiene la oportunidad de ejecutar código en jupyter Notebook para interactuar con los datos de canción de la base de datos.

Screenshot of the Jupyter Notebook deployed in the container image.

En este tutorial, hará lo siguiente:

  • Crear una aplicación de contenedor
  • Uso de un complemento de Container Apps para conectarse a una base de datos de Qdrant
  • Interacción con un cuaderno de Jupyter Notebook para explorar los datos

Importante

En este tutorial se usan servicios que pueden afectar a la factura de Azure. Si decide seguir paso a paso, asegúrese de desactivar o eliminar los recursos destacados en este artículo para evitar una facturación inesperada.

Requisitos previos

Para completar este proyecto, necesita los siguientes elementos:

Requisito Instructions
Cuenta de Azure Si no tiene ninguna cuenta, cree una gratuita. Necesita el permiso Colaborador o Propietario en la suscripción de Azure para continuar.

Consulte Asignación de roles de Azure mediante Azure Portal para obtener más información.
CLI de Azure Instale la CLI de Azure.

Instalación

Antes de empezar a trabajar con la base de datos de Qdrant, primero debe crear la aplicación de contenedor y los recursos necesarios.

Ejecute los siguientes comandos para crear el grupo de recursos, el entorno de aplicaciones de contenedor y el perfil de carga de trabajo.

  1. Configure las variables de nombre de aplicación y grupo de recursos. Puede cambiar estos valores según sus preferencias.

    export APP_NAME=music-recommendations-demo-app
    export RESOURCE_GROUP=playground
    
  2. Cree variables para admitir la configuración de la aplicación. Estos valores se proporcionan para usted con fines de esta lección. No cambie estos valores.

    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
    
    Variable Descripción
    SERVICE_NAME Nombre del servicio de complemento creado para la aplicación contenedora. En este caso, creará una instancia de nivel de desarrollo de una base de datos Qdrant.
    LOCATION Ubicación de la región de Azure donde se crea la aplicación de contenedor y el complemento.
    ENVIRONMENT El nombre del entorno de Azure Container Apps para la aplicación de demostración.
    WORKLOAD_PROFILE_TYPE Tipo de perfil de carga de trabajo que se usa para la aplicación contenedora. En este ejemplo se usa un perfil de carga de trabajo de uso general con 32 núcleos 128 GiB de memoria.
    CPU_SIZE Tamaño asignado de la CPU.
    MEMORY_SIZE Cantidad de memoria asignada.
    IMAGE Imagen del contenedor que se usa en este tutorial. Esta imagen de contenedor incluye el Jupyter Notebook que permite interactuar con los datos de la base de datos de Qdrant.
  3. Inicie sesión en Azure con la CLI de Azure.

    az login
    
  4. Cree un grupo de recursos.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  5. Cree el entorno de aplicaciones de contenedor.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --enable-workload-profiles
    
  6. Cree un perfil de carga de trabajo dedicado con suficientes recursos para trabajar con una base de datos vectorial.

    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
    

Uso del complemento Qdrant

Ahora que tiene un perfil de entorno y carga de trabajo existente, puede crear la aplicación de contenedor y enlazarla a una instancia de complemento de Qdrant.

  1. Cree el servicio de complemento Qdrant.

    az containerapp add-on qdrant create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $SERVICE_NAME
    
  2. Cree la aplicación de contenedor.

    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
    

    Este comando devuelve el nombre de dominio completo (FQDN) de la aplicación contenedora. Copie esta ubicación en un editor de texto según lo necesite en un próximo paso.

    Un próximo paso le indica que solicite un token de acceso para iniciar sesión en la aplicación hospedada por la aplicación contenedora. Asegúrese de esperar tres a cinco minutos antes de intentar ejecutar la solicitud del token de acceso después de crear la aplicación contenedora para dar tiempo suficiente para configurar todos los recursos necesarios.

  3. Enlace el servicio de complemento Qdrant a la aplicación contenedora.

    az containerapp update \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --bind qdrantdb
    

Configuración de la aplicación contenedora

Ahora que la aplicación contenedora se está ejecutando y conectada a Qdrant, puede configurar la aplicación contenedora para aceptar solicitudes entrantes.

  1. Configure los valores de CORS en la aplicación contenedora.

    az containerapp ingress cors enable \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --allowed-origins "*" \
      --allow-credentials true
    
  2. Una vez que espere tres a cinco minutos para que la aplicación complete las operaciones de configuración, solicite un token de acceso para el cuaderno de Jupyter Notebook hospedado.

    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`
    

    Al ejecutar este comando, el token se imprime en el terminal. El mensaje debe tener un aspecto similar al del ejemplo siguiente.

    Your access token is: 348c8aed080b44f3aaab646287624c70aed080b44f
    

    Copie el valor del token en el editor de texto para usarlo para iniciar sesión en Jupyter Notebookupyter Notebook.

Uso de Jupyter Notebook

  1. Abra un explorador web y pegue la dirección URL de la aplicación contenedora que ha reservado en un editor de texto.

    Cuando se cargue la página, aparecerá un cuadro de entrada para escribir el token de acceso.

  2. Junto a la etiqueta Contraseña para token, escriba el token en el cuadro de entrada y seleccione Inicio de sesión.

    Una vez autenticado, puede interactuar con el código y los datos en Jupyter Notebook.

    Screenshot of the deployed Jupyter Notebook in the container image.

    Con el cuaderno iniciado, siga las instrucciones para interactuar con el código y los datos.

Limpieza de recursos

Los recursos creados en este tutorial tienen un efecto en la factura de Azure. Si no va a usar estos servicios a largo plazo, ejecute el siguiente comando para quitar todo lo creado en este tutorial.

az group delete \
  --resource-group $RESOURCE_GROUP

Pasos siguientes