你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:在 Azure 容器应用中连接到 Qdrant 矢量数据库(预览版)

Azure 容器应用使用加载项来轻松连接到各种开发级云服务。 你可以使用加载项将容器应用连接到 Qdrant 之类的数据库,而不必提前创建服务实例来建立与复杂配置设置的连接。

有关支持的服务的完整列表,请参阅在 Azure 容器应用中连接到服务

本教程中部署的示例应用程序允许你与基于 Qdrant 矢量数据库的音乐推荐引擎对接。 容器映像托管一个 Jupyter Notebook,其中包含可针对数据库运行的代码,用于执行以下操作:

  • 与歌曲数据对接
  • 为每首歌生成嵌入项
  • 查看歌曲建议

部署后,你有机会在 Jupyter Notebook 中运行代码来与数据库中的歌曲数据对接。

Screenshot of the Jupyter Notebook deployed in the container image.

本教程介绍以下内容:

  • 创建容器应用
  • 使用容器应用加载项连接到 Qdrant 数据库
  • 与 Jupyter Notebook 交互以浏览数据

重要

本教程使用的服务可能会影响 Azure 帐单。 如果你决定逐步执行操作,请确保停用或删除本文中特别推荐的资源,以避免意外计费。

先决条件

若要完成此项目,需要满足以下条件:

要求 说明
Azure 帐户 如果你没有帐户,请免费创建一个。 需要拥有 Azure 订阅的“参与者”或“所有者”权限才能继续操作。

有关详细信息,请参阅使用 Azure 门户分配 Azure 角色
Azure CLI 安装 Azure CLI

安装

在开始使用 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
    
    变量 说明
    SERVICE_NAME 为容器应用创建的加载项服务的名称。 在本例中,你创建 Qdrant 数据库的开发级实例。
    LOCATION 创建容器应用和加载项的 Azure 区域位置。
    ENVIRONMENT 演示应用程序的 Azure 容器应用环境名称。
    WORKLOAD_PROFILE_TYPE 用于容器应用的工作负荷配置文件类型。 此示例使用具有 32 核 128 GiB 内存的通用工作负荷配置文件。
    CPU_SIZE CPU 的分配大小。
    MEMORY_SIZE 分配的内存量。
    IMAGE 本教程中使用的容器映像。 此容器映像包括 Jupyter Notebook,可用于与 Qdrant 数据库中的数据进行交互。
  3. 使用 Azure CLI 登录 Azure。

    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
    

    此命令返回容器应用的完全限定的域名 (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. 打开 Web 浏览器并粘贴在文本编辑器中预留的容器应用的 URL。

    页面加载时,会显示一个用于输入访问令牌的输入框。

  2. 在“令牌密码”标签旁边的输入框中输入令牌,然后选择“登录”

    进行身份验证后,就可以与 Jupyter Notebook 中的代码和数据进行交互了。

    Screenshot of the deployed Jupyter Notebook in the container image.

    启动笔记本后,按照说明与代码和数据进行交互。

清理资源

本教程中创建的资源会影响 Azure 帐单。 如果不打算长期使用这些服务,请运行以下命令来删除本教程中创建的所有内容。

az group delete \
  --resource-group $RESOURCE_GROUP

后续步骤