次の方法で共有


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

このクイックスタートは、Azure portal の [データのインポートとベクトル化] ウィザードを使って垂直統合を使い始めるのに役立ちます。 ウィザードでは、コンテンツをチャンクし、埋め込みモデルを呼び出して、インデックス作成中およびクエリ時にコンテンツをベクトル化します。

ウィザードに関する重要なポイント:

  • ソース データは、Azure Blob Storage、Azure Data Lake Storage (ADLS) Gen2、または OneLake のファイルとショートカットです。

  • ドキュメント解析モードが既定 (BLOB またはファイルごとに 1 つの検索ドキュメント) です。

  • インデックス スキーマは構成できません。 チャンク データにベクトル フィールドと非ベクトル フィールドを提供します。

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

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

前提条件

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

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

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

ロールベースのアクセス制御要件

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

  1. Azure AI 検索で、ロールを有効にします

  2. マネージド ID を使用するように検索サービスを構成します。

  3. データ ソース プラットフォームと埋め込みモデル プロバイダーで、検索サービスがデータとモデルにアクセスできるようにするロールの割り当てを作成します。 「サンプル データの準備」で、ロールを設定する手順を示します。

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

セキュリティで保護された接続の場合:

Note

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

領域の確認

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

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

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

サンプル データの準備

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

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

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

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

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

  5. 必要に応じて、コンテナー内の削除と検索インデックスの削除を同期します。 次の手順では、削除検出用にインデクサーを構成できます。

    1. ストレージ アカウントで論理的な削除を有効にします

    2. ネイティブの論理的な削除を使っている場合は、Azure Storage でさらに行う必要がある手順はありません。

    3. そうでない場合は、削除対象としてマークされている BLOB を特定するためにインデクサーがスキャンできるカスタム メタデータを追加します。 カスタム プロパティにわかりやすい名前を付けます。 たとえば、プロパティに "IsDeleted" という名前を指定し、それを false に設定できます。 コンテナー内のすべての BLOB に対してこれを行います。 後で BLOB を削除するときは、このプロパティを true に変更します。 詳しくは、Azure Storage からインデックスを作成するときの変更と削除の検出に関する記事をご覧ください

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

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

ウィザードは、text-embedding-ada-002、text-embedding-3-large、text-embedding-3-small をサポートします。 内部的には、ウィザードは AzureOpenAIEmbedding スキルを呼び出して Azure OpenAI に接続します。

  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] を選択します。

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

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

  4. 削除の検出をサポートするかどうかを指定します。 その後のインデックス作成の実行では、検索インデックスが更新され、Azure Storage で論理的に削除された BLOB に基づく検索ドキュメントが削除されます。

    • BLOB は、ネイティブ BLOB の論理的な削除またはカスタムデータを使用した論理的な削除のいずれかをサポートします。
    • 以前に、Azure Storage で論理的な削除を有効にし、必要に応じて、インデックス作成で削除フラグとして認識できるカスタム メタデータ を追加してある必要があります。 これらの手順について詳しくは、「サンプル データの準備」をご覧ください。
    • カスタム データを使用した論理的な削除用に BLOB を構成した場合は、このステップでメタデータ プロパティの名前と値の組を指定します。 "IsDeleted" をお勧めします。 BLOB で "IsDeleted" が true に設定されている場合、インデクサーは次の実行時に対応する検索ドキュメントを削除します。

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

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

  5. 検索サービスをそのマネージド ID を使用して Azure Storage に接続するかどうかを指定します。

    • システム マネージド ID またはユーザーマネージド ID を選択するよう求められます。
    • この ID には、Azure Storage の [ストレージ BLOB データ閲覧者] ロールが必要です。
    • この手順は省略しないでください。 ウィザードを Azure Storage に接続できない場合、インデックス作成中に接続エラーが発生します。
  6. [次へ] を選択します。

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

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

  1. [テキストをベクター化する] ページで、埋め込みモデルのソースを選択します。

    • Azure OpenAI
    • Azure AI Studio モデル カタログ
    • Azure AI Search と同じリージョンにある既存の Azure AI Vision マルチモーダル リソース。 同じリージョンに Azure AI サービス マルチサービス アカウントがない場合、このオプションは使用できません。
  2. Azure サブスクリプションを選択します。

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

    • Azure OpenAI の場合は、text-embedding-ada-002、text-embedding-3-large、または text-embedding-3-small の既存のデプロイを選択します。

    • AI Studio カタログの場合は、Azure、Cohere、Facebook 埋め込みモデルの既存のデプロイを選択します。

    • AI Vision マルチモーダル埋め込みの場合は、アカウントを選択します。

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

  4. 検索サービスの認証に API キーを使用するか、マネージド ID を使用するかを指定します。

    • ID は、Azure AI マルチサービス アカウントの [Cognitive Services OpenAI ユーザー] ロールを持つ必要があります。
  5. これらのリソースの使用による課金への影響を認めるチェックボックスを選択します。

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

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

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

  • カタログからサポートされている画像埋め込みモデルを使用するか、Azure AI Vision マルチモーダル埋め込み API を選んで画像をベクトル化します。

  • 光学式文字認識 (OCR) を使用して、画像内のテキストを認識する。 このオプションは画像からテキストを読み取るための 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 つのドキュメントから "子" インデックス内の対応するチャンクにデータをマップできます。

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

結果をチェックする

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

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

次のステップ

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