クイックスタート: Azure portal を使用してテキストと画像をベクトル化する

重要

[データのインポートとベクトル化] ウィザードは、追加使用条件の下でのパブリック プレビュー段階です。 既定の対象は、2024-05-01-Preview REST API です。

このクイックスタートは、Azure portal の [データのインポートとベクトル化] ウィザードを使用して、垂直統合 (プレビュー) の利用を開始するのに役立ちます。 このウィザードは、インデックス作成中とクエリのためにコンテンツをベクトル化するために、ユーザー指定の埋め込みモデルを呼び出します。

プレビューの制限事項

  • ソース データは、既定の解析モード (BLOB またはファイルごとに 1 つの検索ドキュメント) を使用する Azure Blob Storage または OneLake のファイルとショートカットのいずれかです。

  • インデックス スキーマは構成できません。 ソース フィールドには、(チャンクおよびベクトル化された) content、タイトルの metadata_storage_name、ドキュメント キーの metadata_storage_path が含まれます。 このキーは、インデックス内で parent_id として表されます。

  • チャンクは構成できません。 有効な設定は次のとおりです。

    textSplitMode: "pages",
    maximumPageLength: 2000,
    pageOverlapLength: 500
    

制限の数を減らす、またはデータ ソース オプションを増やすには、コードベースの方法を検討します。 詳細については、「垂直統合のサンプル」を参照してください。

前提条件

  • Azure サブスクリプション。 無料で作成できます。

  • データ用の Azure Blob Storage または OneLake レイクハウス

    Azure Storage は標準パフォーマンス (汎用 v2) アカウントである必要があります。 アクセス層は、ホット、クール、コールドにすることができます。

    Azure Data Lake Storage Gen2 (階層型名前空間を持つストレージ アカウント) は使用しないでください。 このバージョンのウィザードでは、Data Lake Storage Gen2 はサポートされていません。

  • ベクトル化用のデプロイを含む Azure AI サービス マルチサービス アカウントまたは Azure OpenAI Service エンドポイント。

    Azure AI Vision を使用したマルチモーダルのためには、Azure AI サービスを SwedenCentral、EastUS、NorthEurope、WestEurope、WestUS、SoutheastAsia、KoreaCentral、FranceCentral、AustraliaEast、WestUS2、SwitzerlandNorth、JapanEast のいずれかに作成します。 更新された一覧については、こちらのドキュメントを確認してください。

    モデル デプロイでは Azure AI Studio モデルカタログ (およびハブとプロジェクト) を使用することもできます。

  • インデックス作成とクエリのための Azure AI 検索。 これは Azure AI サービスと同じリージョン内に存在する必要があります。 Basic レベル以上をお勧めします。

  • 埋め込みモデルとデータ ソースへの接続用のロール割り当てまたは API キー。 この記事では、ロールベースのアクセス制御 (RBAC) 用の手順について説明します。

上記のすべてのリソースでは、ポータル ノードがそれらにアクセスできるように、パブリック アクセスが有効になっている必要があります。 そうでないと、ウィザードは失敗します。 ウィザードの実行後、セキュリティのために統合コンポーネントでファイアウォールとプライベート エンドポイントを有効にすることができます。 詳細については、インポート ウィザードでの安全な接続に関するページを参照してください。

プライベート エンドポイントが既に存在しており、それらを無効にすることができない場合、代替手段は仮想マシン上でスクリプトまたはプログラムからそれぞれのエンドツーエンド フローを実行することです。 仮想マシンはプライベート エンドポイントと同じ仮想ネットワーク上にある必要があります。 垂直統合用の Python コード サンプルを次に示します。 同じ GitHub リポジトリ上に、他のプログラミング言語のサンプルも存在します。

無料検索サービスでは、Azure AI 検索への接続での RBAC がサポートされていますが、Azure Storage または Azure AI Vision への送信接続でのマネージド ID はサポートされていません。 このレベルのサポートは、無料の検索サービスと他の Azure サービス間の接続でキーベースの認証を使用する必要があることを意味します。 より安全な接続のためには:

Note

オプションが利用できないためにウィザードを進めることができない場合は (たとえば、データ ソースや埋め込みモデルを選択できない場合など)、ロールの割り当てを見直します。 実際には検索サービスがモデルまたはデプロイにアクセスするためのアクセス許可を持っていないことが本質的な問題であっても、エラー メッセージにはそれらが存在しないと表示されます。

領域の確認

Free サービスで始める場合は、3 つのインデックス、3 つのデータ ソース、3 つのスキルセット、3 つのインデクサーに制限されます。 十分な空き領域があることを確認してから開始してください。 このクイックスタートでは、各オブジェクトを 1 つずつ作成します。

サービス ID を確認する

他のリソースへの検索サービス接続には、ロールの割り当てを行うことをお勧めします。

  1. Azure AI 検索で、RBAC を有効にします

  2. システムまたはユーザー割り当てマネージド ID を使用するように検索サービスを構成します。

以降のセクションで、検索サービスのマネージド ID を他のサービス内でのロールに割り当てることができます。 これらのセクションでは、必要に応じてロールの割り当ての手順が示されます。

セマンティック ランク付けを確認する

ウィザードがセマンティック ランク付けをサポートするのは、Basic レベル以上かつセマンティック ランク付けが既に検索サービスで有効である場合だけです。 課金対象レベルを使用している場合は、セマンティック ランク付けが有効かどうかを確認します。

サンプル データの準備

このセクションでは、このクイックスタートで機能するデータについて説明します。

  1. Azure アカウントを使用して Azure portal にサインインし、Azure Storage アカウントに移動します。

  2. 左側のペインの [データ ストレージ] で、[コンテナー] を選択します。

  3. 新しいコンテナーを作成し、このクイックスタートで使用する正常性プラン PDF ドキュメントをアップロードします。

  4. [アクセスの制御] で、コンテナー上のストレージ BLOB データ閲覧者ロールを検索サービス ID に割り当てます。 または、[アクセス キー] ページからストレージ アカウントへの接続文字列を取得します。

埋め込みモデルを設定する

垂直統合と [データのインポートとベクトル化] ウィザードでは、インデックス作成中にデプロイされた埋め込みモデルを利用して、テキストと画像をベクトルに変換します。

Azure OpenAI、マルチモーダル埋め込み用の Azure AI Vision、または Azure AI Studio 内のモデル カタログにデプロイされた埋め込みモデルを使用できます。

[データのインポートとベクトル化] では、text-embedding-ada-002text-embedding-3-largetext-embedding-3-small がサポートされています。 内部的には、ウィザードは AzureOpenAIEmbedding スキルを使用して Azure OpenAI に接続します。

次の手順を使用して、アクセス許可を割り当てるか、Azure OpenAI への検索サービス接続用の API キーを取得します。 ウィザードを実行する前に、アクセス許可を設定するか、接続情報を使用できるようにする必要があります。

  1. Azure アカウントを使用して Azure portal にサインインし、Azure OpenAI リソースに移動します。

  2. アクセス許可を設定します。

    1. 左側のメニューで、[アクセスの制御] を選択します。

    2. 追加を選択し、ロール割り当ての追加を選択します。

    3. [職務権限ロール] で、[Cognitive Services OpenAI ユーザー] を選択した後、[次へ] を選択します。

    4. [メンバー] で、[マネージド ID] を選択した後、[メンバー] を選択します。

    5. サブスクリプションとリソースの種類 (検索サービス) でフィルター処理を行った後、検索サービスのマネージド ID を選択します。

    6. [レビューと割り当て] を選択します。

  3. エンドポイントまたは API キーをコピーする必要がある場合は、[概要] ページで、[エンドポイントを表示するにはここをクリック][キーを管理するにはここをクリック] を選択します。 キーベースの認証で Azure OpenAI リソースを使用している場合は、これらの値をウィザードに貼り付けることができます。

  4. [リソース管理][モデル デプロイ] で、[デプロイの管理] を選択して Azure AI Studio を開きます。

  5. text-embedding-ada-002 またはサポートされている別の埋め込みモデルのデプロイ名をコピーします。 埋め込みモデルがない場合は、今すぐデプロイします。

ウィザードを起動する

  1. Azure アカウントを使用して Azure portal にサインインし、Azure AI Search サービスに移動します。

  2. [概要] ページで、[データのインポートとベクトル化] を選択します。

    データをインポートしてベクトル化するためのウィザードを開くコマンドのスクリーンショット。

データへの接続

次の手順では、検索インデックスに使用するデータ ソースに接続します。

  1. [データのインポートとベクトル化] ウィザードの [データ接続の設定] ページで、[Azure Blob Storage] または [OneLake] を選択します。

  2. Azure サブスクリプションを指定します。

  3. OneLake の場合は、レイクハウス URL を指定するか、ワークスペースとレイクハウス ID を指定します。

    Azure Storage の場合は、データを提供するアカウントとコンテナーを選択します。

  4. 削除の検出をするかどうかを指定します。

  5. [次へ] を選択します。

テキストをベクター化する

この手順では、チャンクされたデータをベクトル化するための埋め込みモデルを指定します。

  1. [テキストのベクトル化] ページで、デプロイされたモデルが Azure OpenAI、Azure AI Studio モデル カタログ、Azure AI 検索と同じリージョン内の既存の Azure AI Vision マルチモーダル リソースの内のどこに存在するかを指定します。

  2. Azure サブスクリプションを指定します。

  3. リソースに応じて以下のように選択を行います。

    1. Azure OpenAI の場合は、サービス、モデル デプロイ、認証の種類を選択します。

    2. AI Studio カタログの場合は、プロジェクト、モデル デプロイ、認証の種類を選択します。

    3. AI Vision のベクトル化の場合は、アカウントを選択します。

    詳細については、この記事の前の方の「埋め込みモデルの設定」を参照してください。

  4. これらのリソースの使用による課金への影響を認めるチェックボックスを選択します。

  5. [次へ] を選択します。

画像のベクトル化とエンリッチ

コンテンツに画像が含まれている場合は、次の 2 つの方法で AI を適用できます。

  • カタログからサポートされている画像埋め込みモデルを使用するか、Azure AI Vision マルチモーダル埋め込み API を選んで画像をベクトル化します。
  • 光学式文字認識 (OCR) を使用して、画像内のテキストを認識する。

Azure AI Search と Azure AI リソースは、同じリージョンに存在する必要があります。

  1. [画像のベクトル化] ページで、ウィザードで作成する必要がある接続の種類を指定します。 画像のベクトル化では、ウィザードは Azure AI Studio または Azure AI Vision 内の埋め込みモデルに接続できます。

  2. サブスクリプションを指定します。

  3. Azure AI Studio モデル カタログの場合は、プロジェクトとデプロイを指定します。 詳細については、この記事の前の方の「埋め込みモデルの設定」を参照してください。

  4. 必要に応じて、バイナリ画像 (スキャンしたドキュメント ファイルなど) を使用したり、OCR を使用してテキストを認識したりできます。

  5. これらのリソースの使用による課金への影響を認めるチェックボックスを選択します。

  6. [次へ] を選択します。

詳細設定を選択する

  1. [詳細設定] ページで、クエリ実行の終了時に結果を再ランク付けするためのセマンティック ランク付けをオプションで追加することができます。 再ランク付けによって、最も意味的な関連性が高いマッチが上位にきます。

  2. 必要に応じて、インデクサーの実行スケジュールを指定します。

  3. [次へ] を選択します。

ウィザードを終了する

  1. [構成の確認] ページで、ウィザードによって作成されるオブジェクトのプレフィックスを指定します。 共通のプレフィックスは、整理された状態を保つのに役立ちます。

  2. [作成] を選択します

ウィザードによる構成が完了すると、以下のオブジェクトが作成されます。

  • データ ソース接続

  • ベクトル フィールド、ベクトライザー、ベクトル プロファイル、ベクトル アルゴリズムを含むインデックス。 ウィザードのワークフロー中に既定のインデックスを設計したり、変更したりすることはできません。 インデックスは 2024-05-01-preview REST API に適合しています。

  • チャンク用のテキスト分割スキルとベクトル化用の埋め込みスキルを含むスキルセット。 埋め込みスキルは、Azure OpenAI 用の AzureOpenAIEmbeddingModel スキルか、Azure AI Studio モデル カタログ用の AML スキルのいずれかです。

  • フィールド マッピングおよび出力フィールド マッピングを備えたインデクサー (該当する場合)。

結果をチェックする

検索エクスプローラーは、テキスト文字列を入力として受け取った後、ベクトル クエリの実行のためにテキストをベクトル化します。

  1. Azure portal で [検索管理]>[インデックス] に移動した後、作成したインデックスを選択します。

  2. 必要に応じて [クエリ オプション] を選び、検索結果のベクトル値を非表示にします。 この手順により、検索結果が読みやすくなります。

    クエリ オプションのボタンのスクリーンショット。

  3. [ビュー] メニューで [JSON ビュー] を選択することで、text ベクトル クエリ パラメーターにベクトル クエリ用のテキストを入力できます。

    JSON ビューを開くメニュー コマンドのスクリーンショット。

    ウィザードによって、vector フィールド上にベクトル クエリを発行し、5 個の最近傍を返す既定のクエリが提供されます。 ベクトル値を非表示にすることを選択した場合、既定のクエリには、検索結果から vector フィールドを除外する select ステートメントが含まれます。

    {
       "select": "chunk_id,parent_id,chunk,title",
       "vectorQueries": [
           {
              "kind": "text",
              "text": "*",
              "k": 5,
              "fields": "vector"
           }
        ]
    }
    
  4. text 値に関しては、アスタリスク (*) を Which plan has the lowest deductible? などの健康保険プランに関連する質問に置き換えます。

  5. [検索] を選んでクエリを実行します。

    検索結果のスクリーンショット。

    5 つのマッチが表示されるはずです。 各ドキュメントは、元の PDF のチャンクです。 title フィールドは、チャンクがどの PDF からのものであるかを示します。

  6. 特定のドキュメントからのチャンクをすべて表示するには、以下のように特定の PDF 用の title フィールドのフィルターを追加します。

    {
       "select": "chunk_id,parent_id,chunk,title",
       "filter": "title eq 'Benefit_Options.pdf'",
       "count": true,
       "vectorQueries": [
           {
              "kind": "text",
              "text": "*",
              "k": 5,
              "fields": "vector"
           }
        ]
    }
    
    

クリーンアップ

Azure AI Search は課金対象のリソースです。 今後これが必要ない場合は、課金を防ぐためにサブスクリプションからこれを削除してください。

次のステップ

このクイックスタートでは、垂直統合に必要なすべてのオブジェクトを作成する [データのインポートとベクトル化] ウィザードを紹介しました。 各手順について詳しく確認するには、垂直統合サンプルを試してください。