クイック スタート: Azure ポータルでのベクター検索

メモ

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

このクイック スタートでは、Azure ポータルの Import data ウィザードを使用して、integrated vectorization の使用を開始します。 ウィザードはコンテンツをチャンクし、埋め込みモデルを呼び出して、インデックス作成とクエリ時にチャンクをベクター化します。

このクイック スタートでは、azure-search-sample-data リポジトリのテキスト ベースの PDF と単純なイメージを使用します。 ただし、さまざまなファイルを使用しても、このクイック スタートを完了できます。

ヒント

画像が豊富なドキュメントがありますか? テキストと共に画像を抽出し、保存し、検索するには、「Azure ポータルの Quickstart: Multimodal search」を参照してください。

前提 条件

サポートされているデータ ソース

ウィザードは、いくつかのAzureデータ ソースをサポートします。 ただし、このクイック スタートでは、次の表で説明するファイル全体で動作するデータ ソースについてのみ説明します。

データ ソース 説明
Azure Blob Storage このデータ ソースは、BLOB とテーブルで動作します。 標準パフォーマンス (汎用 v2) アカウントを使用する必要があります。 アクセス層は、ホット、クール、またはコールドにすることができます。
Azure Data Lake Storage (ADLS) Gen2 これは、階層型名前空間が有効になっているAzure Storage アカウントです。 Data Lake Storageがあることを確認するには、Overview ページの Properties タブを確認します。
Microsoft OneLake このデータ ソースは、OneLake ファイルとショートカットに接続します。

サポートされている埋め込みモデル

ポータルでは、統合ベクター化のための次の埋め込みモデルがサポートされています。 デプロイの手順については、 後のセクションで説明します。

プロバイダー サポートされているモデル
Azure AI マルチサービス アカウント1 テキストと画像の場合: Azure Vision multimodal
Microsoft Foundry ハブベースのプロジェクト テキストの場合:
  • text-embedding-ada-002
  • text-embedding-3-small
  • text-embedding-3-large
テキストと画像の場合:
  • Cohere-embed-v3-english 2
  • Cohere-embed-v3-多言語 2
Microsoft Foundry プロジェクト テキストの場合:
  • text-embedding-ada-002
  • text-embedding-3-small
  • text-embedding-3-large
Azure OpenAI リソース3,4 テキストの場合:
  • text-embedding-ada-002
  • text-embedding-3-small
  • text-embedding-3-large

1 課金の目的で、マルチサービス アカウントを Azure AI 検索 スキルセットに関連付ける必要があります。 ウィザードでは、検索サービスとマルチサービス アカウントが、Azure Vision マルチモーダル 埋め込みスキル (プレビュー) でサポートされている同じリージョンに存在する必要があります。

2 ウィザードでは、このモデルのサーバーレス API デプロイのみがサポートされます。 Azure CLIを使用して、サーバーレス展開 (プレビュー) をプロビジョニングできます。

3 Azure OpenAI リソースのエンドポイントには、 などの https://my-unique-name.openai.azure.comが必要です。 Azure ポータルでリソースを作成した場合、このサブドメインはリソースのセットアップ中に自動的に生成されました。

4 Azure Microsoft Foundry ポータルで作成された (埋め込みモデルにアクセスできる) OpenAI リソースはサポートされていません。 Azure ポータルで Azure OpenAI リソースを作成する必要があります。

非推奨を含む最新のモデルのライフサイクルに関するガイダンスについては、モデルの提供終了と非推奨を参照してください。

パブリック エンドポイントの要件

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

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

アクセスの構成

開始する前に、コンテンツと操作にアクセスするためのアクセス許可があることを確認してください。 このクイック スタートでは、認証にMicrosoft Entra IDを使用し、承認にはロールベースのアクセスを使用します。 ロールを割り当てるには、 所有者 または ユーザー アクセス管理者 である必要があります。 ロールが実現できない場合は、代わりに キーベースの認証 を使用します。

このセクションで識別される 必要なロール と 条件付きロール を構成します。

必要なロール

Azure AI 検索ベクター検索パイプラインが提供されます。 データの読み取り、パイプラインの実行、他のAzure リソースとの対話を行うために、自分と検索サービスのアクセスを構成します。

Azure AI 検索 サービスで次の手順を実行します。

  1. ロールベースのアクセスを有効にします。

  2. システム割り当てマネージド ID を構成します。

  3. 次のロールを自分に割り当てます 。

    • サーチサービス 貢献者

    • 検索インデックス データ共同作成者

    • 検索インデックスデータリーダー

条件付きロール

次のタブでは、ベクトル検索用のすべてのウィザード互換リソースについて説明します。 選択した データ ソース と 埋め込みモデルに適用されるタブのみを選択します。

Azure Blob StorageとAzure Data Lake Storage Gen2では、ストレージ コンテナーへの読み取りアクセス権を検索サービスに付与する必要があります。

Azure Storage アカウントで次の手順を実行します。

  • ストレージ BLOB データ 閲覧者を検索サービスのマネージド ID に割り当てます。

サンプル データを準備する

このセクションでは、選択したデータ ソースのサンプル データを準備 します。

  1. Azure ポータルでAzure Storage アカウントに移動します。

  2. 左側のウィンドウで、[ データ ストレージ>Containers] を選択します。

  3. コンテナーを作成し、このクイック スタートで使用する health-plan PDF ドキュメントをアップロードします。

  4. (省略可能)コンテナー内の削除を検索インデックスの削除と同期します。 削除検出用にインデクサーを構成するには:

    1. ストレージ アカウントで論理的な削除を有効にします。 ネイティブの論理的な削除を使用している場合、次の手順は必要ありません。

    2. インデクサーがスキャンできるカスタム メタデータを追加して、削除対象としてマークされている BLOB を決定します。 カスタム プロパティにわかりやすい名前を付けます。 たとえば、プロパティに "IsDeleted" という名前を付け、false に設定します。 コンテナー内のすべての BLOB に対してこの手順を繰り返します。 BLOB を削除する場合は、プロパティを true に変更します。 詳細については、「Azure Storageを参照してください。

埋め込みモデルを準備する

メモ

Azure Vision を使用している場合は、この手順をスキップします。 マルチモーダル埋め込み機能はマルチサービス アカウントに組み込まれており、モデルのデプロイは必要ありません。

ウィザードでは、Azure OpenAI と Microsoft Foundry モデル カタログからの複数の埋め込みモデルがサポートされています。 選択したembedding モデルに必要なモデルを展開するには、Foundry ポータルでMicrosoft Foundry Models を展開するを参照してください。

ウィザードを開始する

  1. Azure ポータルで検索サービスに移動します。

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

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

  3. データ ソース (Azure Blob Storage、ADLS Gen2、または OneLake を選択します。

  4. RAG を選択します。

    ウィザードの RAG タイルのスクリーンショット。

ウィザードを実行する

ウィザードでは、いくつかの構成手順について説明します。 このセクションでは、各手順を順番に説明します。

データに接続する

この手順では、選択した data ソースにAzure AI 検索を接続して、コンテンツインジェストとインデックス作成を行います。

  1. データへの接続 ページで、Azure サブスクリプションを選択します。

  2. サンプル データを提供するストレージ アカウントとコンテナーを選択します。

  3. [ サンプル データの準備] で論理的な削除を有効にし、カスタム メタデータを追加した場合は、[ 削除の追跡を有効にする ] チェック ボックスをオンにします。

    • 後続のインデックス作成の実行時に、検索インデックスを更新し、Azure Storage 上で論理削除された BLOB に基づいて、関連する検索ドキュメントを削除します。

    • BLOB では、ネイティブ BLOB の論理的な削除またはカスタム メタデータを使用した論理的な削除がサポートされます。

    • 論理的な削除用に BLOB を構成した場合は、メタデータ プロパティの名前と値のペアを指定します。 IsDeleted をお勧めします。 BLOB で IsDeleted が true に設定されている場合、インデクサーは次のインデクサーの実行時に対応する検索ドキュメントを削除します。

    • ウィザードでは、Azure Storage の有効な設定がチェックされないか、要件が満たされていない場合はエラーがスローされます。 削除の検出が機能せず、時間が経つと、検索インデックスに孤立したドキュメントが集まる可能性があります。

  4. [ マネージド ID を使用して認証 する] チェック ボックスをオンにします。 ID の種類は システム割り当てのままにします。

    削除検出オプションを含むデータ ソース ページのスクリーンショット。

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

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

この手順では、選択した 埋め込みモデル を使用して分割データをベクター化します。 チャンクは組み込まれており、設定可能ではありません。 有効な設定は次のとおりです。

"textSplitMode": "pages",
"maximumPageLength": 2000,
"pageOverlapLength": 500,
"maximumPagesToTake": 0, #unlimited
"unit": "characters"
  1. テキストのベクトル化 ページで、種類として Azure OpenAI を選択します。

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

  3. Azure OpenAI リソースを選択し、Prepare 埋め込みモデルにデプロイしたモデルを選択します。

  4. 認証の種類として、[ システム割り当て ID] を選択します。

  5. これらのリソースの使用による課金効果を確認するチェック ボックスをオンにします。

    Azure OpenAI のウィザードでテキストをベクトル化するページのスクリーンショット

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

画像をベクター化してエンリッチする

健康保険プランのPDFには企業のロゴが含まれていますが、それ以外には画像はありません。 サンプル ドキュメントを使用している場合は、この手順をスキップできます。

ただし、コンテンツに有用な画像が含まれている場合は、次のいずれかまたは両方の方法で AI を適用できます。

  • Microsoft Foundry モデル カタログまたは Azure Vision マルチモーダル 埋め込み API (マルチサービス アカウント経由) からサポートされている画像埋め込みモデルを使用して、画像をベクター化します。

  • 光学式文字認識 (OCR) を使用して画像からテキストを抽出します。 このオプションは、 OCR スキルを呼び出します。

  1. [ Vectorize and enrich your images]\(イメージのベクター化とエンリッチメント \) ページで、[ Vectorize images]\(イメージのベクター化 \) チェックボックスをオンにします。

  2. 種類として、 Microsoft Foundry または Azure Vision in Foundry Tools のモデル プロバイダーを選択します。

  3. Azure サブスクリプション、リソース、埋め込みモデルのデプロイ (該当する場合) を選択します。

  4. 認証の種類として、ハブベースのプロジェクトを使用していない場合は、[ システム割り当て ID ] を選択します。 それ以外の場合は、 API キーのままにします。

  5. これらのリソースの使用による課金効果を確認するチェック ボックスをオンにします。

    ウィザードの [Vectorize and enrich your images]\(イメージのベクター化とエンリッチメント\) ページのスクリーンショット。

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

セマンティック ランク付けを追加する

[ 詳細設定] ページでは、必要に応じて セマンティック ランク付けを 追加して、クエリの実行終了時に結果を再ランク付けできます。 再ランキングは、意味的に関連性の高い結果を上位に昇格させます。

新しいフィールドのマップ

[ 詳細設定] ページでは、データ ソースが最初のパスで取得されないメタデータまたはフィールドを提供すると仮定して、必要に応じて新しいフィールドを追加できます。 既定では、ウィザードは次の表で説明するフィールドを生成します。

フィールド 適用対象 説明
chunk_id テキストと画像ベクトル 生成された文字列フィールド。 検索可能、取得可能、並べ替え可能。 これはインデックスのドキュメント キーです。
parent_id テキスト ベクター 生成された文字列フィールド。 取得可能でフィルター可能。 チャンクのソースとなる親ドキュメントを識別します。
チャンク テキストと画像ベクトル 文字列フィールド。 人間が判読できるデータ チャンクのバージョン。 検索可能で取得可能ですが、フィルター可能、ファセット可能、または並べ替え可能ではありません。
タイトル テキストと画像ベクトル 文字列フィールド。 人間が判読できるドキュメントタイトルまたはページタイトルまたはページ番号。 検索可能で取得可能ですが、フィルター可能、ファセット可能、または並べ替え可能ではありません。
text_vector テキスト ベクター Collection(Edm.single)。 チャンクのベクター表現。 検索可能で取得可能ですが、フィルター可能、ファセット可能、または並べ替え可能ではありません。

生成されたフィールドやその属性は変更できませんが、データ ソースで新しいフィールドが提供される場合は、新しいフィールドを追加できます。 たとえば、Azure Blob Storageはメタデータ フィールドのコレクションを提供します。

インデックス スキーマにフィールドを追加するには:

  1. [ 詳細設定 ] ページの [ インデックス] フィールドで、[ プレビューと編集] を選択します。

  2. [ フィールドの追加] を選択します。

  3. 使用可能なフィールドからソース フィールドを選択し、インデックスのフィールド名を入力して、既定のデータ型をそのまま使用 (またはオーバーライド) します。

  4. スキーマを元のバージョンに復元する場合は、[リセット] を選択 します。

この手順に関する重要なポイント:

  • インデックス スキーマは、チャンク されたデータのベクター フィールドと非ベクトル フィールドを提供します。

  • ドキュメント解析モードでは、チャンク (チャンクごとに 1 つの検索ドキュメント) が作成されます。

インデックス作成のスケジュール設定

基になるデータが揮発性のデータ ソースの場合は、 インデックス作成をスケジュール して、特定の間隔または特定の日時の変更をキャプチャできます。

インデックス作成をスケジュールするには:

  1. [ 詳細設定] ページの [ インデックス作成のスケジュール] で、インデクサーの実行スケジュールを指定します。 このクイックスタートでは「Once」をお勧めします。

    インデックス作成をスケジュールするためのウィザード ページのスクリーンショット。

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

ウィザードを完了する

最後の手順では、構成を確認し、ベクター検索に必要なオブジェクトを作成します。 必要に応じて、ウィザードの前のページに戻り、構成を調整します。

ウィザードを完了するには:

  1. [ 確認と作成 ] ページで、ウィザードで作成するオブジェクトのプレフィックスを指定します。 共通のプレフィックスは、整理を維持するのに役立ちます。

    構成を確認して完了するためのウィザード ページのスクリーンショット。

  2. 作成 を選択します。

ウィザードで作成されたオブジェクト

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

オブジェクト 説明
データ ソース 選択したデータ ソースへの接続を表します。
インデックス ベクター フィールド、ベクター ライザー、ベクター プロファイル、およびベクター アルゴリズムが含まれます。 ウィザードのワークフロー中に既定のインデックスを変更することはできません。 インデックスは 最新のプレビュー REST API に準拠しているため、プレビュー機能を使用できます。
スキル 次のスキルと構成が含まれています。
インデクサー フィールド マッピングと出力フィールド マッピング (該当する場合) を使用して、インデックス作成パイプラインを駆動します。

ヒント

ウィザードで作成されたオブジェクトには、構成可能な JSON 定義があります。 これらの定義を表示または変更するには、左側のウィンドウから [検索管理 ] を選択します。ここでは、インデックス、インデクサー、データ ソース、スキルセットを表示できます。

結果を確認する

Search Explorer は、テキスト文字列を入力として受け入れ、ベクター クエリの実行のためにテキストをベクター化します。

ベクター インデックスに対してクエリを実行するには:

  1. Azure ポータルで、Search Management>Indexes に移動し、インデックスを選択します。

  2. [ クエリ オプション] を選択し、[ 検索結果のベクター値を非表示にする] を選択します。 この手順により、結果が読みやすくなります。

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

  3. [表示] メニューから JSON ビューを選択し、ベクター クエリのテキストを text ベクター クエリ パラメーターに入力できるようにします。

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

    既定のクエリは空の検索 ("*") ですが、一致する数を返すパラメーターが含まれています。 これは、テキスト クエリとベクター クエリを並列で実行するハイブリッド クエリです。 また、セマンティック ランク付けも含まれ、 select ステートメントを使用して結果に返すフィールドを指定します。

     {
       "search": "*",
       "count": true,
       "vectorQueries": [
         {
           "kind": "text",
           "text": "*",
           "fields": "text_vector,image_vector"
         }
       ],
       "queryType": "semantic",
       "semanticConfiguration": "my-demo-semantic-configuration",
       "captions": "extractive",
       "answers": "extractive|count-3",
       "queryLanguage": "en-us",
       "select": "chunk_id,text_parent_id,chunk,title,image_parent_id"
     }
    
  4. 両方のアスタリスク (*) プレースホルダーを、Which plan has the lowest deductible?などの健康プランに関する質問に置き換えてください。

     {
       "search": "Which plan has the lowest deductible?",
       "count": true,
       "vectorQueries": [
         {
           "kind": "text",
           "text": "Which plan has the lowest deductible?",
           "fields": "text_vector,image_vector"
         }
       ],
       "queryType": "semantic",
       "semanticConfiguration": "my-demo-semantic-configuration",
       "captions": "extractive",
       "answers": "extractive|count-3",
       "queryLanguage": "en-us",
       "select": "chunk_id,text_parent_id,chunk,title"
     }
    
  5. クエリを実行するには、[検索] を選択 します。

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

    各ドキュメントは、元の PDF の一部です。 title フィールドには、チャンクの元の PDF が表示されます。 各 chunk は長いです。 1 つをコピーしてテキスト エディターに貼り付けて、値全体を読み取ることができます。

  6. 特定のドキュメントのすべてのチャンクを表示するには、特定の PDF の title_parent_id フィールドのフィルターを追加します。 インデックスの [ フィールド] タブをチェックして、フィールドがフィルター可能であることを確認できます。

    {
       "select": "chunk_id,text_parent_id,chunk,title",
       "filter": "text_parent_id eq 'aHR0cHM6Ly9oZWlkaXN0c3RvcmFnZWRlbW9lYXN0dXMuYmxvYi5jb3JlLndpbmRvd3MubmV0L2hlYWx0aC1wbGFuLXBkZnMvTm9ydGh3aW5kX1N0YW5kYXJkX0JlbmVmaXRzX0RldGFpbHMucGRm0'",
       "count": true,
       "vectorQueries": [
           {
              "kind": "text",
              "text": "*",
              "k": 5,
              "fields": "text_vector"
           }
        ]
    }
    

リソースのクリーンアップ

自分のサブスクリプションで作業する場合は、不要になったリソースを削除してプロジェクトを完了することをお勧めします。 リソースの実行が残っている場合は、コストが発生する可能性があります。

Azure ポータルで、左側のウィンドウから [すべてのリソース] または [リソース グループ を選択して、リソースを検索および管理します。 リソースを個別に削除することも、リソース グループを削除してすべてのリソースを一度に削除することもできます。

次の手順

このクイック スタートでは、統合ベクター化に必要なすべてのオブジェクトを作成する データのインポート ウィザードについて説明しました。 各手順の詳細については、「 Azure AI 検索を参照してください。