Share via


チュートリアル: Azure Container Apps で Qdrant ベクトル データベースに接続する (プレビュー)

Azure Container Apps では、アドオン を使用して、さまざまな開発グレードのクラウド サービスに簡単に接続できます。 サービスのインスタンスを事前に作成し、複雑な構成設定で接続を確立しなくても、アドオンを使用してコンテナー アプリを Qdrant などのデータベースに接続できます。

サポートされるサービスの一覧については、「Azure Container Apps でサービスに接続する」を参照してください。

このチュートリアルでデプロイしたサンプル アプリケーションを使用すると、Qdrant ベクトル データベースに基づく楽曲レコメンデーション エンジンとインターフェイスを取ることができます。 コンテナー イメージは、データベースに対して実行できる、次のコードを含む Jupyter Notebook をホストします。

  • 楽曲データとのインターフェイス
  • 各楽曲の埋め込みを生成する
  • 楽曲レコメンデーションの表示

デプロイしたら、Jupyter Notebook でコードを実行して、データベース内の楽曲データとインターフェイスを取ることができます。

Screenshot of the Jupyter Notebook deployed in the container image.

このチュートリアルでは、次のことを行います。

  • コンテナー アプリの作成
  • Container Apps アドオンを使用して Qdrant データベースに接続する
  • Jupyter Notebook と対話してデータを探索する

重要

このチュートリアルでは、Azure の請求書に影響する可能性のあるサービスを使用します。 手順に従う場合は、予期しない課金を回避するために、この記事で紹介されているリソースを必ず非アクティブ化または削除してください。

前提条件

このプロジェクトを完了するには、次の項目が必要です:

要件 手順
Azure アカウント お持ちでない場合は、無料のアカウントを作成してください。 続行するには、Azure サブスクリプションの "共同作成者" または "所有者" のアクセス許可が必要です。

詳細については、「Azure portal を使用して 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 Container Apps 環境名。
    WORKLOAD_PROFILE_TYPE コンテナー アプリに使用されるワークロード プロファイルの種類。 この例では、32 コア 128 GiB のメモリを持つ汎用ワークロード プロファイルを使用します。
    CPU_SIZE CPU の割り当てサイズ。
    MEMORY_SIZE 割り当てられたメモリ量。
    IMAGE このチュートリアルで使用するコンテナー イメージ。 このコンテナー イメージには、Qdrant データベース内のデータを操作するために使用できる Jupyter Notebook が含まれています。
  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 分から 5 分待ってからアクセス トークンの要求を実行してください。必要なすべてのリソースがセットアップされるよう、十分な時間を取るためです。

  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. アプリのセットアップ操作が完了するまで 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 を使用する

  1. Web ブラウザーを開き、テキスト エディターに保存したコンテナー アプリの URL を貼り付けます。

    ページが読み込まれると、アクセス トークンを入力するための入力ボックスが表示されます。

  2. [Password to token] (トークンへのパスワード) ラベルの横にある入力ボックスにトークンを入力し、[Login] (ログイン) を選択します。

    認証が完了すると、Jupyter Notebook のコードとデータを操作できます。

    Screenshot of the deployed Jupyter Notebook in the container image.

    ノートブックが起動されたら、指示に従ってコードとデータを操作します。

リソースをクリーンアップする

このチュートリアルで作成したリソースは、Azure の請求書に影響します。 これらのサービスを長期間使用しない場合は、次のコマンドを実行して、このチュートリアルで作成したすべてのものを削除してください。

az group delete \
  --resource-group $RESOURCE_GROUP

次のステップ