Azure Cognitive Search における AI エンリッチメント

"AI エンリッチメント" とは、そのままの形式ではフルテキスト検索できないコンテンツに対して機械学習モデルを適用することです。 エンリッチメントにより、分析と推論を使用して、以前は存在しなかった検索可能なコンテンツや構造を作成します。

このAzure Cognitive Search はフルテキスト検索ソリューションなので、AI エンリッチメントの目的は、検索関連のシナリオでコンテンツの実用性を向上させることです。

  • 多言語検索の場合の翻訳と言語検出
  • エンティティ認識は、大量のテキストから人、場所、その他のエンティティを抽出します
  • キー フレーズ抽出では、重要な用語を特定して出力します
  • 光学式文字認識 (OCR) は、バイナリ ファイルの印刷されたテキストや手書きテキストを認識します
  • 画像分析では、画像の内容が記述され、説明が検索可能なテキスト フィールドとして出力されます

AI エンリッチメントは、インデクサー パイプラインの拡張機能です。 エンリッチメント パイプラインには、インデクサー パイプラインのすべてのコンポーネント (インデクサー、データ ソース、インデックス) に加えて、アトミック エンリッチメント ステップを指定するスキルセットが含まれます。

次の図に、AI エンリッチメントの進行を示します。

エンリッチメント パイプラインの図。

インポートは最初の手順です。 ここで、インデクサーがデータ ソースに接続し、コンテンツ (ドキュメント) を検索サービスにプルします。 AI エンリッチメント シナリオで使用される最も一般的なリソースは Azure Blob Storage ですが、サポートされている任意のデータ ソースがコンテンツを提供できます。

エンリッチとインデックスが、AI エンリッチメント パイプラインの大部分を占めています。

  • エンリッチメントは、インデクサーが "ドキュメントを解読" し、画像とテキストを抽出したときに開始されます。 次に発生する処理の種類は、データと、スキルセットに追加したスキルによって異なります。 画像がある場合は、画像処理を実行するスキルに転送できます。 テキスト コンテンツは、テキストと自然言語の処理のためにキューに入れられます。 内部的には、スキルによって、変換が発生したときにそれを収集する "エンリッチされたドキュメント" が作成されます。

  • エンリッチ済みコンテンツは、スキルセットの実行の間に生成され、ユーザーが保存しない限り一時的なものです。 後でスキルセットを実行するときに再利用するため、エンリッチメント キャッシュで解読されたドキュメントとスキル出力を保持できます。

  • 検索インデックスにコンテンツを取り込むため、インデクサーはエンリッチされたコンテンツをターゲット フィールドに送信するためのマッピング情報を保持している必要があります。 フィールド マッピング (明示的または暗黙的) は、ソース データから検索インデックスへのデータ パスを設定します。 出力フィールド マッピングは、エンリッチされたドキュメントからインデックスへのデータ パスを設定します。

  • インデックス作成は、生のコンテンツとエンリッチされたコンテンツが検索インデックス (そのファイルとフォルダー) の物理データ構造に取り込まれるプロセスです。 このステップで、字句解析とトークン化が行われます。

探索は最後の手順です。 出力は常に、クライアント アプリからクエリを実行できる検索インデックスです。 必要に応じて出力を、データ探索ツールまたはダウンストリーム プロセスを介してアクセスされる Azure Storage 内の BLOB とテーブルで構成されるナレッジ ストアにすることができます。 ナレッジ ストアを作成している場合は、エンリッチされたコンテンツのデータ パスがプロジェクションによって決定されます。 インデックスとナレッジ ストアの両方に、同じエンリッチされたコンテンツを含めることができます。

どのような場合に AI エンリッチメントを使用するか

生コンテンツが、非構造化テキスト、画像コンテンツ、または言語検出と翻訳を必要とするコンテンツの場合は、エンリッチメントが有用です。 "組み込みのコグニティブ スキル" を通じて AI を適用すると、フルテキスト検索とデータ サイエンス アプリケーションに対してこのコンテンツのロックが解除されます。

カスタム スキルを作成して、外部処理を提供することもできます。 オープンソース、サードパーティ、またはファーストパーティのコードは、カスタム スキルとしてパイプラインに統合できます。 さまざまなドキュメントの種類の顕著な特徴を識別する分類モデルはこのカテゴリに分類されますが、コンテンツの価値を高める任意の外部パッケージを使用できます。

組み込みスキルのユース ケース

組み込みのスキルは、Cognitive Services APIs: Computer Vision および 言語サービス 基づいて作成されます。 コンテンツの入力が少ない場合を除いて、より大きなワークロードを実行するために、 Cognitive Services リソース をアタッチする必要があります。

組み込みのスキルを使用して作られたスキルセットは、次のアプリケーション シナリオに適しています。

  • 画像処理スキルには、光学式文字認識 (OCR) と、視覚的特徴の識別が含まれます。後者は、顔検出、画像の解釈、画像の認識 (有名な人物やランドマーク)、画像の向きのような属性などの識別です。 これらのスキルによって、Azure Cognitive Search でのフルテキスト検索のために、画像コンテンツのテキスト表現が作成されます。

  • 機械翻訳 は、多くの場合、多言語ソリューション用の 言語検出 と組み合わせて、テキスト翻訳 スキルによって提供されます。

  • 自然言語処理では、テキストのチャンクが分析されます。 このカテゴリのスキルには、エンティティ認識センチメント検出 (オピニオン マイニングを含む)個人を特定できる情報の検出などがあります。 これらのスキルによって、構造化されていないテキストが、インデックスで検索可能およびフィルター可能なフィールドとしてマップされます。

カスタム スキルのユース ケース

カスタム スキルは、指定した外部コードを実行します。 カスタム スキルは、フォームの認識や、カスタム スキル Web インターフェイスで指定してラップするモデルを使用するカスタム エンティティ検出などの、より複雑なシナリオに対応できます。 カスタム スキルの例を次に示します。

カスタム スキルは常に複雑とは限りません。 たとえば、パターン マッチングまたはドキュメント分類モデルを提供する既存のパッケージがある場合は、カスタム スキルで完成させることができます。

出力を格納する

Azure Cognitive Search では、インデクサーによって作成された出力が保存されます。 1 回のインデクサー実行で、エンリッチされてインデックス付けされた出力を含む最大 3 つのデータ構造を作成できます。

データ ストア 必須 場所 説明
検索可能なインデックス 必須 検索サービス フルテキスト検索やその他のクエリ フォームに使用されます。 インデックスの指定はインデクサーの要件です。 インデックスの内容は、スキルの出力に加えて、インデックス内のフィールドに直接マップされるすべてのソース フィールドから設定されます。
ナレッジ ストア 省略可能 Azure Storage ナレッジ マイニングやデータ サイエンスなどのダウンストリーム アプリに使用されます。 ナレッジ ストアは、スキルセット内で定義されています。 その定義により、エンリッチされたドキュメントが Azure Storage でテーブルとオブジェクト (ファイルと BLOB) のどちらとして投影されるかが決まります。
エンリッチメント キャッシュ: 省略可能 Azure Storage 後続のスキルセットの実行で再利用するためのエンリッチメントのキャッシュに使用されます。 キャッシュには、インポートされた未処理のコンテンツ (解読されたドキュメント) が格納されます。 スキルセットの実行中に作成されたエンリッチされたドキュメントも格納されます。 キャッシュは、画像分析や OCR を使用し、画像ファイルの再処理にかかる時間と費用を避けたい場合に特に便利です。

インデックスとナレッジ ストアは相互に完全に独立しています。 インデクサーの要件を満たすにはインデックスをアタッチする必要がありますが、ナレッジ ストアだけが目的の場合は、作成された後でインデックスを無視してかまいません。 ただし、削除しないようにしてください。 インデクサーとスキルセットを再実行する場合、インデクサーを実行するにはインデックスが必要になります。

コンテンツを探索する

検索インデックスまたはナレッジ ストアを定義して読み込んだら、そのデータを探索できます。

検索インデックスに対してクエリを実行する

クエリを実行して、パイプラインによって生成されたエンリッチされたコンテンツにアクセスします。 インデックスは、Azure Cognitive Search 用に作成する他のものと同様に、カスタム アナライザーでテキスト分析を補完したり、ファジー検索クエリを呼び出したり、フィルターを追加したり、スコアリング プロファイルを使用して実験して検索の関連性を調整したりすることができます。

ナレッジ ストアに対してデータ探索ツールを使用する

この Azure Storage ナレッジ ストア では、JSON ドキュメントの BLOB コンテナー、イメージ オブジェクトの BLOB コンテナー、または Table Storage のテーブルの形式を想定できます。 Storage ExplorerPower BI、または Azure Storage に接続する任意のアプリを使用して、コンテンツにアクセスできます。

  • BLOB コンテナーは、エンリッチされたドキュメント全体をキャプチャします。これは、他のプロセスにフィードを作成する場合に便利です。

  • テーブルは、エンリッチされたドキュメントのスライスが必要な場合、または出力の特定の部分を含めるか除外する場合に便利です。 Power BI での分析には、表がデータの探索や可視化に推奨されるデータソースです。

可用性と料金

エンリッチメントは、Azure Cognitive Services が利用できるリージョンで利用できます。 エンリッチメントをご利用いただけるかどうかは、「リージョン別の利用可能な Azure 製品」ページでご確認いただけます。 エンリッチメントは、次のリージョンを除き、すべてのリージョンでご利用いただけます。

  • オーストラリア南東部
  • 中国北部 2
  • ドイツ中西部

課金は、従量課金制モデルに従います。 スキルセットで複数リージョンのAzure Cognitive Services が指定されている場合、組み込みスキルを使用するためのコストが転嫁されます。 また、Azure Cognitive Search で計測された画像の抽出に関連するコストも存在します。 ただし、テキスト抽出とユーティリティのスキルは請求されません。 詳細については、「Azure Cognitive Searchの請求方法」を参照してください

チェックリスト:一般的なワークフロー

エンリッチメント パイプラインは、"スキルセット" を含む "インデクサー" で構成されます。 インデックス作成の後で、インデックスのクエリを実行して結果を検証できます。

サポートされるデータ ソース内のデータのサブセットから始めます。 インデクサーとスキルセットの設計は、反復的なプロセスです。 代表的なデータ セットが小さいと作業が速くなります。

  1. データへの接続が指定されているデータ ソースを作成します。

  2. スキルセットを作成します。 プロジェクトが小さい場合を除き、Cognitive Services リソースをアタッチする必要があります。 ナレッジ ストアを作成する場合は、スキルセット内でそれを定義します。

  3. 検索インデックスを定義するインデックス スキーマを作成します。

  4. インデクサーを作成して実行し、上記のすべてのコンポーネントをまとめます。 この手順では、データの取得、スキルセットの実行、インデックスの読み込みを行います。

    インデクサーでは、検索インデックスへのデータ パスを設定するフィールド マッピングと出力フィールド マッピングも指定します。

    必要に応じて、インデクサーの構成でエンリッチメント キャッシュを有効にします。 この手順により、後で既存のエンリッチメントを再利用できるようになります。

  5. クエリを実行して結果を評価するか、デバッグ セッションを開始してスキルセットの問題を解決します。

上記の手順を繰り返す場合は、インデクサーを実行する前に リセット します。 または、実行ごとにオブジェクトを削除して再作成します (Free レベルを使用している場合は推奨)。 キャッシュを有効にした場合、ソースで変更されていなくて、かつパイプラインに対する編集によってキャッシュが無効になっていない場合は、インデクサーによってデータがキャッシュからプルされます。

次のステップ