WEB問題集
次のデータソースがあります。
-
Finance(財務): オンプレミスの Microsoft SQL Server データベース
-
Sales(販売): Azure Cosmos DB(Core (SQL) API を使用)
-
Logs(ログ): Azure Table ストレージ
-
HR(人事): Azure SQL Database
Azure AI Search (旧 Azure Cognitive Search) の REST API を使用して、これらすべてのデータを検索できるようにする必要があります。 何をするべきですか?
正解:B
この問題の鍵は、Azure AI Search の「インデクサー(Indexer)」が標準でサポートしているデータソースはどれか、という点にあります。
なぜ B が正解なのか?
Azure AI Search のインデクサーは、クラウド上のデータソースを自動的にクロールしてインデックスを作成しますが、オンプレミスの SQL Server に直接接続してプル型のインデックスを作成することはできません。
-
Finance (オンプレミス SQL Server): 直接接続できないため、一度 Azure SQL Database などのクラウドサービスにデータを移行(またはミラーリング)する必要があります。これにより、インデクサーがデータを読み取れるようになります。
-
Sales (Cosmos DB): 標準でサポートされています。
-
Logs (Azure Table ストレージ): 標準でサポートされています。
-
HR (Azure SQL Database): 標準でサポートされています。
正解:A
ワードクラウドを作成するためには、テキストの中から「その文章を象徴する重要な単語やフレーズ」を抽出する必要があります。
-
keyPhrases (キーフレーズ抽出): テキスト内の主要な概念を特定します。例えば、「このカメラは操作が簡単で、画質が素晴らしい」というレビューから、「カメラ」「操作」「画質」といった単語を抜き出します。これらを出現頻度に合わせて並べることで、ワードクラウドが作成できます。
正解:C, D, E
Azure AI Search 自体には、「誰がどのファイルを見てよいか」というファイル単位の権限(ACL)を自動で判別する機能はありません。そのため、「セキュリティ フィルタリング」という手法を自分で構築する必要があります。 その標準的なステップが以下の 3 つです。1. インデックスに権限情報を埋め込む (選択肢 D)
まず、検索対象となる各ドキュメント(インデックスのエントリ)に、「どのグループのユーザーならこれを見ていいか」という情報を保持するフィールド(例:allowed_groups)を作成します。
2. ユーザーの所属情報を取得する (選択肢 C)
ユーザーがアプリにログインした際、そのユーザーがどのセキュリティグループ(Azure AD 等)に属しているかのリストを取得します。3. 検索時にフィルターをかける (選択肢 E)
検索リクエストを投げる際、手順 2 で取得した「ユーザーの所属グループ」を$filter パラメータに含めます。 具体的には、「allowed_groups フィールドに、ユーザーが所属しているグループ ID が含まれているものだけを表示せよ」というクエリを発行します。 Azure portal を使用して、Azure AI Search サービスのインデックスを作成する予定です。この検索サービスは Azure SQL Database に接続します。
Azure SQL Database には UserMessages という名前のテーブルがあります。UserMessages の各行には、ユーザーが送信したソーシャルメディアメッセージのテキストを含む MessageCopy という名前のフィールドがあります。
ユーザーはこの MessageCopy フィールドに対して全文検索(Full Text Search)を実行し、検索結果としてそのフィールドの値がユーザーに表示されるようにする必要があります。
このソリューションをサポートするために、MessageCopy フィールドに対してどの属性を有効にすべきですか?
正解:D
Azure AI Search のインデックスを作成する際、各フィールドが「何に使えるか」を属性で定義します。今回の要件を満たすには、以下の 2 つの属性が必要です。
1. Searchable (検索可能)
問題文にある「全文検索(Full Text Search)を実行する」ために必要です。 この属性を有効にすると、インデクサーがテキストを分析(トークン化)し、キーワード検索ができるようになります。
2. Retrievable (取得可能)
問題文にある「フィールドの値がユーザーに表示される」ために必要です。 この属性が有効でないと、検索にはヒットしても、検索結果のリストにそのメッセージ内容を表示させることができません。
他の選択肢が不適切な理由
-
Sortable (ソート可能): A-Z順や日付順などで並び替えるための属性です。全文検索そのものには不要です。
-
Filterable (フィルタリング可能):
$filterクエリ(例:特定のユーザーIDのみ抽出するなど)で使用するための属性です。完全一致や範囲指定には使いますが、全文検索とは異なります。 -
Facetable (ファセット可能): 検索結果をカテゴリごとにカウントして表示する(例:カテゴリ別の件数など)ための属性です。
カスタムの Azure AI Document Intelligence モデルを使用して契約書を認識する、App1 という名前のアプリがあります。
モデルが追加の契約書フォーマットをサポートするようにする必要があります。また、このソリューションでは開発工数を最小限に抑える必要があります。
何をすべきですか?
正解:C
AI モデルが新しいパターン(今回で言えば新しい契約書のレイアウトや形式)を学習するためには、そのパターンのデータを含めて再学習(Retraining)させるのが最も標準的で効率的な方法です。
なぜ C が正解なのか?
-
データの継続性: 既存のトレーニングセット(以前学習に使ったデータ)を維持しつつ、新しいフォーマットのサンプルを追加して再学習させることで、これまでの精度を保ちながら新しい形式にも対応できるようになります。
-
開発工数の最小化: 新しく一からプロジェクトを作り直す(選択肢 B)よりも、既存のセットを更新して再実行する方が管理の手間が少なくて済みます。
