スコアリング プロファイルを追加して結果の関連性を向上させる
Azure AI Search では、BM25 類似性ランク付けアルゴリズムが使われます。 このアルゴリズムでは、使われる検索語句に基づいてドキュメントがスコア付けされます。
ここでは、スコアリング プロファイルを追加して、独自の条件に基づいてドキュメントのスコアを変更する方法について説明します。
検索スコアの計算方法
スコアリングは、検索クエリの処理の最後のフェーズです。
検索エンジンは、最初の 3 つのフェーズから返されたドキュメントにスコアを付けます。 スコアは、特定された検索語句がドキュメントに出現する回数、ドキュメントのサイズ、各用語の希少性の関数です。 既定では、検索結果は、検索スコアの高い順に並べ替えられます。 2 つのドキュメントの検索スコアが同じである場合は、$orderby
句を追加することで同スコアを解決できます。
より関連性の高いドキュメントのスコアを高くする
既定のスコアリングは用語と希少性の頻度で行われるため、最終的に計算されたスコアで、最も関連性の高いドキュメントに最高スコアが返されない場合があります。 データセットはそれぞれ異なるため、AI Search ではスコアリング プロファイルを使ってドキュメントのスコアに影響を与えることができます。
最も簡単なスコアリング プロファイルでは、インデックス内のフィールドに異なる重みを定義します。 上の例の Hotel インデックスにはスコアリング プロファイルがあり、Description フィールドは Location や Rooms フィールドのデータの 5 倍の関連性を持ちます。 Category フィールドは、HotelName の 2 倍の関連性があります。
スコアリング プロファイルには、距離や新しさなどの関数を含めることもできます。 関数を使うと、単純な重み付けより細かく制御できます。たとえば、古いドキュメントと同じスコアを付ける前に新しいドキュメントに適用されるブースト期間を定義できます。
スコアリング プロファイルの長所は、検索要求で特定の語句をブーストする代わりに、スコアリング プロファイルをインデックスに適用して、すべてのクエリでフィールドが自動的にブーストされるようにできることです。
加重スコアリング プロファイルを追加する
1 つの検索インデックスに最大 100 個のスコアリング プロファイルを追加できます。 スコアリング プロファイルを作成する最も簡単な方法は Azure portal です。
- お使いの検索サービスに移動します。
- [インデックス] を選んでから、スコアリング プロファイルを追加するインデックスを選びます。
- [スコアリング プロファイル] を選びます。
- [+ スコアリング プロファイルの追加] を選択します。
- [プロファイル名] に一意の名前を入力します。
- すべての検索に適用される既定値としてスコアリング プロファイルを設定するには、[既定のプロファイルとして設定] を選びます。
- [フィールド名] でフィールドを選びます。 次に、[重み付け] に重みの値を入力します。
- [保存] を選択します。
上の例では、boost-category
スコアリング プロファイルが hotels-sample-index
に追加されています。 Category の重みは 5 です。
このプロファイルは既定のプロファイルとしても設定されています。 その後、次の検索クエリを使用できます。
search=luxury AND Tags:'air con'*&$select=HotelId, HotelName, Category, Tags, Description&$count=true&queryType=full
結果は、用語がブーストされた同じクエリと一致するようになりました。
search=(Description:luxury OR Category:luxury^5) AND Tags:'air con'*&$select=HotelId, HotelName, Category, Tags, Description&$count=true&queryType=full
&scoringProfile=PROFILE NAME
パラメーターを追加することで、検索クエリに適用されるスコアリング プロファイルを制御できます。
Update Index REST API または Azure SDK (Azure SDK for .NET の ScoringProfile クラスなど) を使って、プログラムでスコアリング プロファイルを追加することもできます。
スコアリング プロファイルで関数を使用する
スコアリング プロファイルに追加できる関数は次のとおりです。
機能 | 説明 |
---|---|
規模 | 数値フィールドの値の範囲に応じてスコアを修正します |
鮮度 | DateTimeOffset フィールドで指定されているドキュメントの新しさに応じてスコアを修正します |
距離 | 参照場所と GeographyPoint フィールドの間の距離に応じてスコアを修正します |
タグ | ドキュメントとクエリの中の共通タグ値に応じてスコアを修正します |
たとえば、ホテル インデックスを使うと、Rating フィールドに規模関数を適用できます。 Azure portal では、各関数のパラメーターの設定方法がガイドされます。