セマンティック ランカーを構成して検索結果でキャプションを返す
セマンティック ランク付けは、最初の結果セットを反復処理し、意味的に最も関連性の高い結果をスタックの最上位に昇格させる L2 ランク付け手法を適用します。 また、最も関連性の高い用語と語句を強調表示したセマンティック キャプションと、セマンティック回答を取得することもできます。
この記事では、セマンティック再ランク付けの検索インデックスを構成する方法について説明します。
前提条件
Basic レベル以上の検索サービスは、リージョンの可用性に応じて異なります。
検索サービスで有効になっているセマンティック ランカー。
リッチ テキスト コンテンツを含む既存の検索インデックス。 セマンティック ランク付けは、文字列 (ベクトル以外) フィールドに適用され、情報または説明であるコンテンツに最適です。
クライアントを選択する
次のツールおよび SDK のいずれかを使用して、セマンティック構成を追加できます。
- インデックス デザイナーを使用してセマンティック構成を追加する Azure portal。
- REST クライアントを使用する Visual Studio Code
- Azure SDK for .NET
- Azure SDK for Python
- Azure SDK for Java
- Azure SDK for JavaScript
セマンティック構成を追加する
"セマンティック構成" は、セマンティック ランク付けのフィールド入力を設定する、インデックス内のセクションです。 再構築することなく、セマンティック構成をいつでも追加または更新できます。 複数の構成を作成すると、既定値を指定できます。 クエリ時に、クエリ要求のセマンティック構成を指定するか、空白のままにして既定値を使用します。
セマンティック構成には、名前と次のプロパティがあります。
プロパティ | 特性 |
---|---|
[タイトル] フィールド | 短い文字列 (理想的には 25 語以下)。 このフィールドは、ドキュメントのタイトル、製品の名前、または一意の ID である場合があります。 適切なフィールドがない場合は、空白のままにします。 |
コンテンツ フィールド | 自然言語形式のテキストのより長いチャンク。機械学習モデルで最大トークン入力制限が適用されます。 一般的な例としては、ドキュメントの本文、製品の説明、またはその他の自由形式のテキストがあります。 |
キーワード フィールド | ドキュメントのタグなどのキーワードのリスト、または項目のカテゴリなどの記述用語。 |
指定できるタイトル フィールドは 1 つだけですが、コンテンツおよびキーワード フィールドはいくつあっても構いません。 コンテンツおよびキーワード フィールドについては、優先順位の低いフィールドが切り捨てられる可能性があるため、優先順位の順に一覧表示します。
すべてのセマンティック構成プロパティで、割り当てるフィールドは次のようにする必要があります。
searchable
およびretrievable
として属性付けるEdm.String
、Collection(Edm.String)
型の文字列、Edm.ComplexType
の文字列サブフィールド
Azure portal にサインインし、セマンティック ランク付けが有効になっている検索サービスに移動します。
左側のナビゲーション ウィンドウの [インデックス] から、インデックスを開きます。
[セマンティック構成] を選んでから、[セマンティック構成の追加] を選択します。
[新しいセマンティック構成] ページが開き、タイトル フィールド、コンテンツ フィールド、およびキーワード フィールドを選択するためのオプションが表示されます。 検索可能および取得可能な文字列フィールドのみが対象です。 コンテンツ フィールドとキーワード フィールドを優先順位に従って一覧表示するようにしてください。
[OK] を選択して変更を保存します。
プレビュー バージョンからの移行
セマンティック ランク付けコードがプレビュー API を使用している場合、このセクションでは安定バージョンに移行する方法について説明します。 一般提供を確認するには、変更ログを確認してください。
- 2024-07-01 (REST)
- Azure SDK for .NET (11.5) の変更ログ
- Azure SDK for Python (11.4) の変更ログ
- Azure SDK for Java (11.6) の変更ログ
- Azure SDK for JavaScript (12.0) の変更ログ
動作の変更:
2023 年 7 月 14 日の時点で、セマンティック ランカーは言語に依存しません。 多言語コンテンツで構成された結果を再ランク付けでき、特定の言語に対するバイアスがありません。 プレビュー バージョンでは、セマンティック ランク付けによってフィールド アナライザーで指定された言語とは異なる結果の優先度が下がります。
2021-04-30-Preview 以降のすべてのバージョンでは、REST API および同じバージョンを対象とするすべての SDK パッケージで、
semanticConfiguration
(インデックス定義内) でどの検索フィールドがセマンティック ランク付けで使用されるかが定義されています。 以前の 2020-06-30-Preview REST API では、searchFields
(クエリ要求内) がフィールドの指定と優先順位付けで使用されました。 このアプローチは 2020-06-30-Preview でのみ機能し、他のすべてのバージョンでは廃止されています。
手順 1: queryLanguage を削除する
セマンティック ランク付けエンジンは、現在は言語に依存しません。 queryLanguage
はクエリ ロジックで指定されていても、セマンティック ランク付けでは使用されなくなりましたが、スペル修正にはまだ適用されます。
スペル チェックを使用している場合、および言語の値がスペル チェックでサポートされている場合は、queryLanguage
を保持します。 スペル チェックの可用性は、言語間で制限されています。
それ以外の場合は、queryLanguage
を削除します。
ステップ 2: searchFields
を semanticConfiguration
で置き換える
コードが 2020-06-30-Preview REST API、あるいはその REST API バージョンを対象としたベータ版 SDK パッケージを呼び出す場合、searchFields
をクエリ文字列で使用してセマンティックのフィールドと優先度を指定することができます。 初期ベータ版では、searchFields
には 2 つの目的があり、初期クエリを searchFields
に示されているフィールドに制限し、セマンティック ランク付けが使用された場合はフィールドの優先順位も設定していました。 以降のバージョンでは、searchFields
の元の目的は維持されていますが、セマンティック ランク付けには使用されなくなりました。
フル テキスト検索の対象を指定したフィールドの一覧に制限するために使用する場合は、クエリ要求で searchFields
を保持します。
この記事の手順に従って、フィールドの優先順位付けを指定するインデックス スキーマに semanticConfiguration
を追加します。
次のステップ
セマンティック クエリを実行して、セマンティック構成をテストします。