メモ
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
Azure AI 検索では、semantic ranker は、Microsoftの言語理解モデルを使用して検索結果を再ランク付けすることで、検索の関連性を測定的に向上させる機能です。 セマンティック ランカーも エージェント検索に組み込まれています。 この記事は、セマンティック ランカーの動作と利点を理解するのに役立つ概要です。
セマンティック ランカーは、使用量によって課金されるプレミアム機能ですが、Free レベルの サービス制限 に従って無料で使用できます。 バックグラウンドでこの記事をお勧めしますが、作業を開始する場合は、 次の手順に従ってください。
セマンティック ランク付けとは
セマンティック ランカーは、テキスト ベースのクエリ、ベクター クエリのテキスト部分、ハイブリッド クエリの最初の BM25 ランク または RRF ランク付け 検索結果の品質を向上させるクエリ側機能のコレクションです。 セマンティック ランク付けでは、次の 3 つの方法でクエリ実行パイプラインが拡張されます。
最初に、BM25 または逆ランク融合 (RRF) を使用してスコア付けされた初期の結果セットに対して、常にセカンダリランキングを追加します。 このセカンダリ ランク付けでは、Microsoft Bingから適応した多言語のディープ ラーニング モデルを使用して、最も意味的に関連性の高い結果を促進します。
次に、キャプションを返し、必要に応じて応答で回答を抽出します。これは、ユーザーの検索エクスペリエンスを向上させるために検索ページにレンダリングできます。
3 番目に、クエリの書き換えを有効にすると、最初のクエリ文字列が複数のセマンティックに似たクエリ文字列に展開されます。
セカンダリ ランク付けと "回答" はクエリ応答に適用されます。 クエリの書き換えは、クエリ要求の一部です。
セマンティック ランカーには、次の機能があります。
| 能力 | 説明 |
|---|---|
| L2 ランキング | クエリのコンテキストまたはセマンティックの意味を使用して、事前にランク付けされた結果に対する新しい関連性スコアを計算します。 |
| セマンティック キャプションと強調表示 | 内容を最もよく要約するフィールドから逐語的な文とフレーズを抽出し、重要な箇所を強調表示して簡単にスキャンします。 結果を要約するキャプションは、個々のコンテンツ フィールドが検索結果ページに対して密度が高すぎる場合に便利です。 強調表示されたテキストは、最も関連性の高い用語と語句を昇格させ、ユーザーが一致が関連性があると見なされた理由をすばやく判断できるようにします。 |
| セマンティック回答 | セマンティック クエリから返される省略可能で追加のサブ構造。 これは、質問のように見えるクエリに対する直接的な答えを提供します。 ドキュメントに回答の特性を含むテキストが含まれている必要があります。 |
| クエリの書き換え | テキスト クエリまたはベクター クエリのテキスト部分を使用して、セマンティック ランカーはクエリの最大 10 個のバリアントを作成します。たとえば、入力ミスやスペル ミスを修正したり、生成されたシノニムを使用してクエリを言い換えたりします。 書き換えられたクエリは、検索エンジンで実行されます。 結果は BM25 または RRF スコアリングを使用してスコア付けされ、セマンティック ランカーによって再スコア付けされます。 |
セマンティック ランカーのしくみ
セマンティック ランカーはクエリと結果を受け取り、Microsoftによってホストされる言語理解モデルに送信します。 より良い一致を探すためにスキャンします。
次の図では、概念について説明します。 "capital" という用語について考えてみましょう。 コンテキストが財務、法律、地理、文法のいずれであるかによって意味が異なります。 セマンティック ランカーは、言語の理解を通じてコンテキストを検出し、クエリの意図に合った結果を昇格させます。
セマンティック ランク付けでは、多くのリソースと時間が使用されます。 クエリ操作の予想される待機時間内で処理を完了するために、システムはセマンティック ランカーへの入力を統合して減らします。 このアプローチは、可能な限り迅速に再ランク付け手順を完了するのに役立ちます。
セマンティック ランク付けには、次の 3 つの手順があります。
- 入力の収集と集計
- セマンティック ランカーを使用して結果をスコア付けする
- 修正された結果、キャプション、回答を出力する
システムが入力を収集して集計する方法
セマンティック ランク付けでは、クエリ サブシステムは、集計モデルとランク付けモデルへの入力として検索結果を渡します。 ランク付けモデルには入力サイズの制約があり、処理が多いため、効率的な処理を行うには、検索結果のサイズと構造化 (要約) を行う必要があります。
セマンティック ランカーは、テキスト クエリからの BM25 ランクの結果 、またはベクターまたはハイブリッド クエリの RRF ランク付けされた結果 から始まります。 再ランク付け演習では、テキストのみを使用します。 結果に 50 を超える結果が含まれている場合でも、上位 50 件の結果のみがセマンティック ランク付けに進みます。 通常、セマンティック ランク付けでは、情報フィールドと説明フィールドが使用されます。
検索結果のドキュメントごとに、要約モデルは最大 2,000 個のトークンを受け入れます。トークンは約 10 文字です。 このモデルは、 セマンティック構成にリストされている "title"、"keywords"、および "content" フィールドからの入力をアセンブルします。
システムは、全体の長さが集計ステップの入力要件を満たすように、過度に長い文字列をトリミングします。 このトリミングの演習は、セマンティック構成に優先順位を付けてフィールドを追加することが重要な理由です。 テキストが多いフィールドを持つ非常に大きなドキュメントがある場合、システムは上限を超える内容を無視します。
セマンティック フィールド トークンの制限 タイトル 128 トークン "keywords" 128 トークン コンテンツ 残りのトークン 集計出力は、各フィールドの最も関連性の高い情報で構成される、各ドキュメントの概要文字列です。 システムは、スコア付けのためにランカーに要約文字列を送信し、キャプションと回答の機械読解モデルに送信します。
2024 年 11 月の時点で、セマンティック ランカーに渡される生成された各要約文字列の最大長は 2,048 トークンです。 以前は、256 個のトークンでした。
結果のスコア付け方法
システムは、キャプションと、2,048 トークンの長さを入力する概要文字列のその他のコンテンツに基づいて結果をスコア付けします。
システムは、指定したクエリを基準にして、概念とセマンティックの関連性のキャプションを評価します。
システムは、指定されたクエリに対するドキュメントのセマンティック関連性に基づいて、各ドキュメントに @search.rerankerScore を割り当てます。 スコアの範囲は 4 ~ 0 (高から低) です。スコアが高いほど関連性が高いことを示します。
スコア 意味 4.0 ドキュメントは非常に関連性が高く、質問に完全に回答しますが、一節には質問とは無関係の余分なテキストが含まれている可能性があります。 3.0 ドキュメントは関連しますが、完了させる詳細が不足しています。 2.0 ドキュメントはやや関連性があります。これは、質問に部分的に回答するか、質問の一部の側面にのみ対処します。 1.0 ドキュメントは質問に関連しており、そのごく一部に回答します。 0.0 ドキュメントは関係ありません。 システムは、スコア別に降順に一致を一覧表示し、クエリ応答ペイロードに含めます。 ペイロードには、回答、プレーン テキスト、強調表示されたキャプション、および select 句で取得可能または指定済みとしてマークしたフィールドが含まれます。
メモ
特定のクエリに対して、 @search.rerankerScore の分布は、インフラストラクチャ レベルの条件により若干の変動を示す可能性があります。 ランク付けモデルの更新は、ディストリビューションにも影響を与える可能性があります。 これらの理由から、最小しきい値のカスタム コードを記述する場合や、ベクター クエリとハイブリッド クエリ のしきい値プロパティを設定 する場合は、制限を細かくしすぎないでください。
セマンティック ランカーの出力
各要約文字列から、機械読解モデルは最も代表的な箇所を見つけます。
出力は次のとおりです。
ドキュメントの セマンティック キャプション 。 各キャプションはプレーン テキスト バージョンと強調表示バージョンで使用でき、ドキュメントあたり 200 語未満の場合が多いです。
オプションの セマンティック回答 (
answersパラメーターを指定した場合)、クエリは質問として設定され、質問に対する回答を提供する長い文字列に一節が見つかりました。
キャプションと回答は、インデックスから常に逐語的なテキストです。 このワークフローには、新しいコンテンツを作成または構成する生成AIモデルは含まれていません。
セマンティック機能と制限事項
セマンティック ランカー でできること :
意味的に元のクエリの意図に近い一致を優先します。
キャプションと回答として使用する文字列を検索します。 応答はキャプションと回答を返し、検索結果ページに表示できます。
セマンティック ランカー で実行できない のは、コーパス全体に対してクエリを再実行して、セマンティックに関連する結果を見つけることです。 セマンティック ランク付けでは、既定のランク付けアルゴリズムによってスコア付けされた上位 50 件の結果で構成される、既存の結果セットが再ランク付けされます。 さらに、セマンティック ランカーは新しい情報や文字列を作成できません。 言語モデルは、コンテンツからキャプションと回答を逐語的に抽出するため、結果に回答のようなテキストが含まれていない場合は生成されません。
セマンティック ランク付けはすべてのシナリオで役に立つわけではありませんが、特定のコンテンツはその機能から大きなメリットを得ることができます。 セマンティック ランカーの言語モデルは、情報が豊富で散文として構造化された検索可能なコンテンツに最適です。 説明的なコンテンツを含むナレッジ ベース、オンライン ドキュメント、またはドキュメントでは、セマンティック ランカー機能の利点を最大限に活用できます。
基になるテクノロジは、BingおよびMicrosoft Research から取得され、アドオン機能としてAzure AI 検索 インフラストラクチャに統合されています。 セマンティック ランカーを支援する研究および AI 投資の詳細については、「 Bing からの AI がAzure AI 検索に電力を供給する方法 (Microsoft Research Blog)を参照してください。
次のビデオでは、機能の概要について説明します。
セマンティック ランカーがシノニム マップを使用する方法
検索インデックス内の フィールドに関連付けられているシノニム マップ のサポートを有効にし、そのフィールドを セマンティック ランカー構成に含める場合、セマンティック ランカーは、再ランク処理中に構成されたシノニムを自動的に適用します。
可用性と価格
セマンティック ランカーは、 一部のリージョンで使用できます。 スタンドアロン機能として、または エージェント検索の組み込みコンポーネントとして使用できます。 各機能は個別に課金されます。
セマンティック ランカーは、無料プラン (既定) を提供し、毎月の無料要求許容量と、無料の許容量が消費された後の従量課金制の標準プランを提供します。 詳細については、「 セマンティック ランカーの課金を有効または無効にする」を参照してください。
セマンティック ランカーの料金は、クエリ要求に queryType=semantic が含まれており、検索文字列が空でない場合 (たとえば、 search=pet friendly hotels in New York) に発生します。 検索文字列が空 (search=*) の場合、queryType がセマンティックに設定されていても課金されません。
作業を開始する方法
(省略可能)無料の毎月のクォータを超えて使用する場合は、 標準の課金プランに切り替えます 。
(省略可能) セマンティック回答を返します。