Azure Cognitive Search でのセマンティック検索

重要

セマンティック検索はパブリック プレビュー段階にあり、追加使用条件の下で提供されます。 Azure portal、プレビュー REST API、ベータ版 SDK から利用できます。 これらの機能は課金対象です (「可用性と料金」を参照)。

セマンティック検索は、検索結果にセマンティックの関連性と言語理解を取り込むクエリ関連機能のコレクションです。 この記事は、セマンティック検索の概要です。 埋め込まれている動画では、このテクノロジについて説明しています。終わりのセクションでは販売状況と価格について説明しています。

セマンティック検索はプレミアム機能です。 最初にこの記事を読んで基礎知識を得ることをお勧めしますが、それはかまわないのですぐに使いたいという方は、これらの手順を実行してください。

セマンティック検索は、検索結果の品質を向上させる機能のコレクションです。 検索サービスで有効にすると、クエリの実行パイプラインに 2 つの機能が追加されます。 1 つ目として、最初の結果セットに対する二次ランク付けが追加され、セマンティック的に最も関連性の高い結果が一覧の先頭にレベル上げされます。 2 つ目として、キャプションと回答が抽出されて応答で返されます。これを検索ページにレンダリングして、ユーザーの検索エクスペリエンスを向上させることができます。

機能 説明
セマンティックの再ランク付け クエリのコンテキストまたはセマンティックの意味を利用して、既存の結果に対して新しい関連スコアを計算します。
セマンティック キャプションとハイライト コンテンツを最もよく要約している文やフレーズをドキュメントから抽出し、スキャンを簡単にするために重要な部分を強調表示します。 結果を要約するキャプションは、個々のコンテンツ フィールドが結果ページに対して高密度である場合に便利です。 強調表示されたテキストにより、最も関連性の高い用語とフレーズが目立つため、ユーザーはその一致が関連していると見なされた理由を迅速に判断できます。
セマンティック回答 セマンティック クエリから返される省略可能な追加のサブ構造体。 これにより、質問のようなクエリに直接回答することができます。 これには、回答の特性を持つテキストがドキュメントに含まれている必要があります。

セマンティック ランク付けのしくみ

"セマンティックの順位付け" では、用語のコンテキストと関連性が検索され、クエリにとってより意味のある一致が昇格されます。 言語理解では、コンテンツを解析して概要、または "キャプション" と "回答" を用意し、それを応答に含めます。これを検索結果ページに反映させれば検索の生産性を高めることができます。

概要作成と順位付けには、最先端の事前トレーニング済みモデルが使用されます。 ユーザーが検索に期待する高速なパフォーマンスを維持するために、セマンティック ベースの概要作成とランク付けは、 既定の類似性スコアリング アルゴリズムのスコアに従って上位 50 件の結果にのみ適用されます。 セマンティック ランク付けでは、これらの結果をドキュメントのコーパスとして使用して、一致のセマンティック強度に基づいて結果を再スコアリングします。

テクノロジは Bing と Microsoft Research が基になっており、Cognitive Search インフラストラクチャにアドオン機能として統合されます。 研究と AI 投資でバックアップされるセマンティック検索に関する詳細については、「Bing の AI が Azure Cognitive Search にパワーを与えるしくみ (Microsoft Research ブログ)」を参照してください。

次の動画では、機能の概要について説明しています。

演算の順序

セマンティック検索のコンポーネントでは、既存のクエリ実行パイプラインが双方向に拡張されます。 スペル修正を有効にすると、用語が検索エンジンに到達する前に、スペル チェックによってクエリ開始時の入力ミスが修正されます。

Semantic components in query execution

クエリ実行は通常どおりに進行し、逆インデックスに関する用語の解析、分析、スキャンが行われます。 エンジンでは、トークン照合を使用してドキュメントを取得し、 既定の類似性スコアリング アルゴリズムを使用して結果をスコア付けします。 スコアは、クエリ用語とインデックス内の一致する用語との言語的類似性の度合いに基づいて計算されます。 定義されている場合、この段階で、スコアリング プロファイルも適用されます。 その後、結果はセマンティック検索サブシステムに渡されます。

準備ステップでは、最初の結果セットから返されたドキュメント コーパスが文と段落のレベルで分析され、各ドキュメントを要約する節が検索されます。 キーワード検索とは対照的に、このステップでは機械読解を使用して内容を評価します。 コンテンツ処理のこの段階全体で、セマンティック クエリによってキャプション回答が返されます。 それらを作成するために、セマンティック検索では言語表現を利用し、結果を最もよくまとめる重要な節が抽出され、強調表示されます。 検索クエリが質問であり、回答が要求されると、検索クエリで表された質問に最適な回答を与えるテキスト節も応答に含まれます。

キャプションと回答の両方について、作成には既存のテキストが使用されます。 セマンティック モデルでは、使用可能な内容から新しい文やフレーズを作成したり、新しい結論に達するロジックを適用したりすることはありません。 つまり、存在していない内容が返されることはありません。

次に、クエリ用語の概念的類似性 に基づいて結果が再スコアリングされます。

クエリでセマンティック機能を使用するには、検索要求を少し変更する必要がありますが、追加の構成やインデックスの再作成は不要です。

セマンティック機能と制限

セマンティック検索は新しいテクノロジなので、実行できることとできないことについての期待値を設定することが重要です。 できるのは、検索の品質を向上させることです。そのために次のことが行われます。

  • セマンティック的に元のクエリの意図に近い一致がレベル上げされます。

  • それぞれの結果の中から、キャプションや場合によっては回答として使用でき、検索結果ページに表示できる文字列が検出されます。

できないのは、コーパス全体に対してクエリを再実行して、セマンティックな関連がある結果を検出することです。 セマンティック検索では、既定のランク付けアルゴリズムによってスコア付けされた上位 50 の結果で構成される "既存の" 結果セットが再ランク付けされます。 さらに、セマンティック検索で新しい情報や文字列を作成することはできません。 キャプションと回答は、コンテンツから逐語的に抽出されるので、結果に回答のようなテキストが含まれていない場合、その言語モデルではキャプションや回答は生成されません。

セマンティック検索はすべてのシナリオで有益なわけではありませんが、特定のコンテンツではその機能から多くのメリットが得られます。 セマンティック検索の言語モデルは、情報が豊富で、散文として構造化された検索可能なコンテンツに最適です。 ナレッジ ベース、オンライン ドキュメント、説明的なコンテンツを含むドキュメントでは、セマンティック検索機能から最も多くのメリットが得られます。

可用性と料金

セマンティック検索とスペルチェックは、次の表の条件を満たすサービスで利用できます。 セマンティック検索を使用するには、最初に検索サービスの機能を有効にする必要があります。

機能 レベル リージョン サインアップ 価格
セマンティック検索 スタンダード レベル (S1、S2、S3) 利用可能なリージョン 必須 価格1
スペル チェック Basic 2 以上 All なし なし (無料)

1 クエリ ボリュームが低い場合 (月間 1000 件未満)、セマンティック検索は無料です。 この制限を超える場合は、セマンティック検索標準価格プランにオプトインできます。 価格ページでは、異なる通貨とサイクル間隔でのセマンティック クエリの課金レートが表示されます。

2 共有 (無料) 検索サービスのプロビジョニングの仕組みや有効期間により、少数のサービスで無料のスペルチェックが発生します。 ただし、無料のサービスでスペル チェックを使用できるかどうかは保証および予想されるわけではありません。

セマンティック検索の料金は、"queryType=semantic" を含む、検索文字列が空でないクエリ要求 (たとえば "search=pet friendly hotels in New York") を使用した場合に発生します。 検索文字が空の場合 ("search=*")、queryType が "semantic" に設定されていても課金されません。

既定では、セマンティック検索はすべてのサービスで無効になっています。 検索サービスのセマンティック検索を有効にするには、次のようにします。

  1. Azure Portalを開きます。
  2. Standard レベルの検索サービスに移動します。
  3. サービス リージョンがセマンティック検索をサポートしているかどうかを確認します。 検索サービスのリージョンは概要ページに表示されます。 セマンティック検索のリージョンは、「リージョン別の利用可能な製品」ページに表示されます。
  4. 左側のナビゲーション ウィンドウで、セマンティック検索 (プレビュー) を選択します。
  5. [無料プラン]または [Standard プラン] を選択します。 無料プランと Standard プランは、いつでも切り替えて使用できます。

Screenshot of enabling semantic search in the Azure portal

セマンティック検索の無料プランは、1 か月あたり 1,000 クエリに制限されています。 無料プランの最初の 1,000 件のクエリの後に、セマンティック クエリを発行するたびにクォータが使い果たされたことを通知するエラー メッセージが表示されます。 このような場合は、セマンティック検索を引き続き使用するには、標準プランにアップグレードする必要があります。

または、次のセクションで説明するサービス API の作成または更新を使用してセマンティック検索を有効にすることもできます。

機能の有効化を無効にする、または偶発的な使用と課金から完全に守るため、検索サービスでは Create または Update Service API を使ってセマンティック検索を無効にできます。 この機能を無効にすると、セマンティック クエリ タイプが含まれるあらゆる要求が拒否されます。

  • Management REST API バージョン 2021-04-01-Preview でこのオプションが提供されています

  • 機能を無効にするには、所有者か共同作成者のアクセス許可が必要です

PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "semanticSearch": "disabled"
      }
    }

セマンティック検索を再び有効にするには、上記の要求を再実行し、"semanticSearch" を "free" (既定値) か "standard" に設定します。

ヒント

Management REST API 呼び出しは、Azure Active Directory を介して認証されます。 セキュリティの原則と要求の設定に関するガイダンスについては、ブログ記事「Postman を使用した Azure REST API (2021)」を参照してください。 前の例は、このブログ記事に記載されている命令と Postman コレクションを使用してテストされています。

次のステップ

検索サービスのセマンティック検索を有効にし、セマンティック クエリを作成する方法に関するドキュメントに従って、コンテンツのセマンティック検索をテストできます。