チュートリアル: Azure Container Apps で Qdrant ベクトル データベースに接続する (プレビュー)
Azure Container Apps では、アドオン を使用して、さまざまな開発グレードのクラウド サービスに簡単に接続できます。 サービスのインスタンスを事前に作成し、複雑な構成設定で接続を確立しなくても、アドオンを使用してコンテナー アプリを Qdrant などのデータベースに接続できます。
サポートされるサービスの一覧については、「Azure Container Apps でサービスに接続する」を参照してください。
このチュートリアルでデプロイしたサンプル アプリケーションを使用すると、Qdrant ベクトル データベースに基づく楽曲レコメンデーション エンジンとインターフェイスを取ることができます。 コンテナー イメージは、データベースに対して実行できる、次のコードを含む Jupyter Notebook をホストします。
- 楽曲データとのインターフェイス
- 各楽曲の埋め込みを生成する
- 楽曲レコメンデーションの表示
デプロイしたら、Jupyter Notebook でコードを実行して、データベース内の楽曲データとインターフェイスを取ることができます。
このチュートリアルでは、次のことを行います。
- コンテナー アプリの作成
- Container Apps アドオンを使用して Qdrant データベースに接続する
- Jupyter Notebook と対話してデータを探索する
重要
このチュートリアルでは、Azure の請求書に影響する可能性のあるサービスを使用します。 手順に従う場合は、予期しない課金を回避するために、この記事で紹介されているリソースを必ず非アクティブ化または削除してください。
前提条件
このプロジェクトを完了するには、次の項目が必要です:
要件 | 手順 |
---|---|
Azure アカウント | お持ちでない場合は、無料のアカウントを作成してください。 続行するには、Azure サブスクリプションの "共同作成者" または "所有者" のアクセス許可が必要です。 詳細については、「Azure portal を使用して 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 Container Apps 環境名。 WORKLOAD_PROFILE_TYPE
コンテナー アプリに使用されるワークロード プロファイルの種類。 この例では、32 コア 128 GiB のメモリを持つ汎用ワークロード プロファイルを使用します。 CPU_SIZE
CPU の割り当てサイズ。 MEMORY_SIZE
割り当てられたメモリ量。 IMAGE
このチュートリアルで使用するコンテナー イメージ。 このコンテナー イメージには、Qdrant データベース内のデータを操作するために使用できる Jupyter Notebook が含まれています。 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) を返します。 次の手順で必要になるため、この場所をテキスト エディターにコピーしてください。
次の手順では、コンテナー アプリによってホストされているアプリケーションにログインするためのアクセス トークンを要求するように指示されます。 コンテナー アプリの作成後、3 分から 5 分待ってからアクセス トークンの要求を実行してください。必要なすべてのリソースがセットアップされるよう、十分な時間を取るためです。
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
アプリのセットアップ操作が完了するまで 3 分から 5 分待ってから、ホストされている 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 を貼り付けます。
ページが読み込まれると、アクセス トークンを入力するための入力ボックスが表示されます。
[Password to token] (トークンへのパスワード) ラベルの横にある入力ボックスにトークンを入力し、[Login] (ログイン) を選択します。
認証が完了すると、Jupyter Notebook のコードとデータを操作できます。
ノートブックが起動されたら、指示に従ってコードとデータを操作します。
リソースをクリーンアップする
このチュートリアルで作成したリソースは、Azure の請求書に影響します。 これらのサービスを長期間使用しない場合は、次のコマンドを実行して、このチュートリアルで作成したすべてのものを削除してください。
az group delete \
--resource-group $RESOURCE_GROUP