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