Руководство по Подключение к базе данных вектора Qdrant в приложениях контейнеров Azure (предварительная версия)

Приложения контейнеров Azure используют надстройки , чтобы упростить подключение к различным облачным службам уровня разработки. Вместо того чтобы заранее создавать экземпляры служб для установления подключений с сложными параметрами конфигурации, можно использовать надстройку для подключения приложения-контейнера к базе данных, такой как Qdrant.

Полный список поддерживаемых служб см. в статье Подключение службам в приложениях контейнеров Azure.

Пример приложения, развернутого в этом руководстве, позволяет интерфейсировать с подсистемой рекомендаций по музыке на основе векторной базы данных Qdrant. Образ контейнера содержит Записную книжку Jupyter, содержащую код, который можно запустить в базе данных:

  • Интерфейс с данными песни
  • Создание внедрения для каждой песни
  • Просмотр рекомендаций по песням

После развертывания вы сможете запустить код в Jupyter Notebook для взаимодействия с данными песни в базе данных.

Screenshot of the Jupyter Notebook deployed in the container image.

Изучив этот учебник, вы:

  • Создание приложения-контейнера
  • Подключение к базе данных Qdrant с помощью надстройки "Приложения-контейнеры"
  • Взаимодействие с Записной книжкой Jupyter для изучения данных

Важно!

В этом руководстве используются службы, которые могут повлиять на счет Azure. Если вы решите выполнить пошаговые инструкции, убедитесь, что вы деактивируете или удалите ресурсы, описанные в этой статье, чтобы избежать непредвиденных выставления счетов.

Необходимые компоненты

Чтобы завершить этот проект, вам потребуется следующее:

Требование Instructions
Учетная запись Azure Если у вас нет учетной записи, создайте бесплатную учетную запись. Чтобы продолжить, вам потребуется разрешение участника или владельца подписки Azure.

Дополнительные сведения см. в статье "Назначение ролей Azure" с помощью портал Azure.
Azure CLI Установите интерфейс командной строки Azure.

Настройка

Прежде чем приступить к работе с базой данных Qdrant, сначала необходимо создать приложение-контейнер и необходимые ресурсы.

Выполните следующие команды, чтобы создать группу ресурсов, среду приложений контейнеров и профиль рабочей нагрузки.

  1. Настройте переменные имени приложения и группы ресурсов. Эти значения можно изменить на ваши предпочтения.

    export APP_NAME=music-recommendations-demo-app
    export RESOURCE_GROUP=playground
    
  2. Создайте переменные для поддержки конфигурации приложения. Эти значения предоставляются для вас в целях этого урока. Не изменяйте эти значения.

    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
    
    Переменная Description
    SERVICE_NAME Имя службы надстройки, созданной для приложения контейнера. В этом случае создается экземпляр уровня разработки базы данных Qdrant.
    LOCATION Расположение региона Azure, в котором создается приложение контейнера и надстройка.
    ENVIRONMENT Имя среды "Приложения контейнеров Azure" для демонстрационного приложения.
    WORKLOAD_PROFILE_TYPE Тип профиля рабочей нагрузки, используемый для приложения контейнера. В этом примере используется профиль рабочей нагрузки общего назначения с 32 ядрами 128 ГиБ памяти.
    CPU_SIZE Выделенный размер ЦП.
    MEMORY_SIZE Выделенный объем памяти.
    IMAGE Образ контейнера, используемый в этом руководстве. Этот образ контейнера включает Jupyter Notebook, который позволяет взаимодействовать с данными в базе данных Qdrant.
  3. Войдите в Azure с помощью Azure CLI.

    az login
    
  4. Создать группу ресурсов.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  5. Создайте среду приложений контейнеров.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --enable-workload-profiles
    
  6. Создайте профиль выделенной рабочей нагрузки с достаточным количеством ресурсов для работы с векторной базой данных.

    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
    

Использование надстройки Qdrant

Теперь, когда у вас есть существующая среда и профиль рабочей нагрузки, вы можете создать приложение-контейнер и привязать его к экземпляру Qdrant надстройки.

  1. Создайте службу надстройки Qdrant.

    az containerapp add-on qdrant create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $SERVICE_NAME
    
  2. Создайте приложение-контейнер.

    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
    

    Эта команда возвращает полное доменное имя приложения контейнера. Скопируйте это расположение в текстовый редактор по мере необходимости в предстоящем шаге.

    Предстоящий шаг указывает вам запросить маркер доступа для входа в приложение, размещенное приложением контейнера. Перед попыткой выполнить запрос маркера доступа после создания приложения-контейнера обязательно подождите три–пять минут, чтобы предоставить достаточно времени для настройки всех необходимых ресурсов.

  3. Привязать службу надстройки Qdrant к приложению-контейнеру.

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

Настройка приложения-контейнера

Теперь, когда приложение-контейнер запущено и подключено к Qdrant, вы можете настроить приложение контейнера для принятия входящих запросов.

  1. Настройте параметры CORS в приложении контейнера.

    az containerapp ingress cors enable \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --allowed-origins "*" \
      --allow-credentials true
    
  2. Подождите три–пять минут, пока приложение завершит операции установки, запросите маркер доступа для размещенной записной книжки Jupyter Notebook.

    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`
    

    При выполнении этой команды маркер выводится в терминал. Сообщение должно выглядеть следующим образом.

    Your access token is: 348c8aed080b44f3aaab646287624c70aed080b44f
    

    Скопируйте значение маркера в текстовый редактор, чтобы использовать для входа в Jupyter Notebook.

Использование Jupyter Notebook

  1. Откройте веб-браузер и вставьте URL-адрес приложения контейнера, которое вы задали в текстовом редакторе.

    При загрузке страницы появится поле ввода для ввода маркера доступа.

  2. Рядом с меткой "Пароль для маркера " введите маркер в поле ввода и выберите "Войти".

    После проверки подлинности вы сможете взаимодействовать с кодом и данными в Jupyter Notebook.

    Screenshot of the deployed Jupyter Notebook in the container image.

    После запуска записной книжки следуйте инструкциям по взаимодействию с кодом и данными.

Очистка ресурсов

Ресурсы, созданные в этом руководстве, влияют на счет Azure. Если вы не собираетесь использовать эти службы в долгосрочной перспективе, выполните следующую команду, чтобы удалить все, созданное в этом руководстве.

az group delete \
  --resource-group $RESOURCE_GROUP

Следующие шаги