你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:在 Azure 容器应用中连接到 Qdrant 矢量数据库(预览版)
Azure 容器应用使用加载项来轻松连接到各种开发级云服务。 你可以使用加载项将容器应用连接到 Qdrant 之类的数据库,而不必提前创建服务实例来建立与复杂配置设置的连接。
有关支持的服务的完整列表,请参阅在 Azure 容器应用中连接到服务。
本教程中部署的示例应用程序允许你与基于 Qdrant 矢量数据库的音乐推荐引擎对接。 容器映像托管一个 Jupyter Notebook,其中包含可针对数据库运行的代码,用于执行以下操作:
- 与歌曲数据对接
- 为每首歌生成嵌入项
- 查看歌曲建议
部署后,你有机会在 Jupyter Notebook 中运行代码来与数据库中的歌曲数据对接。
本教程介绍以下内容:
- 创建容器应用
- 使用容器应用加载项连接到 Qdrant 数据库
- 与 Jupyter Notebook 交互以浏览数据
重要
本教程使用的服务可能会影响 Azure 帐单。 如果你决定逐步执行操作,请确保停用或删除本文中特别推荐的资源,以避免意外计费。
先决条件
若要完成此项目,需要满足以下条件:
要求 | 说明 |
---|---|
Azure 帐户 | 如果你没有帐户,请免费创建一个。 需要拥有 Azure 订阅的“参与者”或“所有者”权限才能继续操作。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色。 |
Azure CLI | 安装 Azure CLI。 |
安装
在开始使用 Qdrant 数据库之前,首先需要创建容器应用和所需的资源。
执行以下命令来创建资源组、容器应用环境和工作负荷配置文件。
设置应用程序名称和资源组变量。 可以根据自己的喜好更改这些值。
export APP_NAME=music-recommendations-demo-app export RESOURCE_GROUP=playground
创建变量来支持应用程序配置。 这些值是为了本课程的目的而向你提供的。 请勿更改这些值。
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 数据库中的数据进行交互。 使用 Azure CLI 登录 Azure。
az login
创建资源组。
az group create --name $RESOURCE_GROUP --location $LOCATION
创建容器应用环境。
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --enable-workload-profiles
创建一个具有足够资源的专用工作负荷配置文件来使用矢量数据库。
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 的加载项实例了。
创建 Qdrant 加载项服务。
az containerapp add-on qdrant create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $SERVICE_NAME
创建容器应用。
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)。 将此位置复制到文本编辑器(在后续步骤中需要它时)。
后续步骤会指示你请求访问令牌以登录容器应用托管的应用程序。 创建容器应用后,请务必等待三到五分钟,然后再尝试执行访问令牌请求,以便有足够的时间来设置所有必需的资源。
将 Qdrant 加载项服务绑定到容器应用。
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind qdrantdb
配置容器应用
容器应用正在运行并已连接到 Qdrant,可以将容器应用配置为接受传入请求了。
在容器应用上配置 CORS 设置。
az containerapp ingress cors enable \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --allowed-origins "*" \ --allow-credentials true
等待三到五分钟以让应用完成设置操作后,请求托管的 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
打开 Web 浏览器并粘贴在文本编辑器中预留的容器应用的 URL。
页面加载时,会显示一个用于输入访问令牌的输入框。
在“令牌密码”标签旁边的输入框中输入令牌,然后选择“登录”。
进行身份验证后,就可以与 Jupyter Notebook 中的代码和数据进行交互了。
启动笔记本后,按照说明与代码和数据进行交互。
清理资源
本教程中创建的资源会影响 Azure 帐单。 如果不打算长期使用这些服务,请运行以下命令来删除本教程中创建的所有内容。
az group delete \
--resource-group $RESOURCE_GROUP