Azure AI 検索内のクエリにセマンティック ランクを追加する
検索ドキュメントに文字列フィールドが含まれ、検索ドキュメントのベクトル クエリにテキスト表現が含まれている場合、セマンティック ランク付けを、テキスト クエリ、ハイブリッド クエリ、ベクトル クエリに適用できます。
この記事では、クエリでセマンティック ランカーを呼び出す方法について説明します。
前提条件
セマンティック ランカーが有効になっている Basic レベル以上の検索サービス。
セマンティック構成 とリッチ テキスト コンテンツを使用する既存の検索インデックス。
機能の概要情報が必要な場合は、セマンティック ランク付けを確認してください。
Note
キャプションと回答は、検索ドキュメント内のテキストから逐語的に抽出されます。 セマンティック サブシステムは、コンピューター読み取りの理解を使用してキャプションまたは回答の特性を持つコンテンツを認識しますが、新しい文やフレーズは作成されません。 このため、セマンティック ランク付けには、説明または定義を含むコンテンツが最も適しています。 生成された応答とチャット スタイルの対話を行う場合は、取得拡張生成 (RAG) に関する記事を参照してください。
クライアントを選択する
次のツールおよび SDK のいずれかを使用して、セマンティック ランク付けを使用するクエリを作成できます。
- インデックス デザイナーを使用してセマンティック構成を追加する Azure portal。
- REST クライアントを使用した Visual Studio Code
- Azure SDK for .NET
- Azure SDK for Python
- Azure SDK for Java
- Azure SDK for JavaScript
関連性スコアリングをバイパスする機能を回避する
いくつかのクエリ機能は関連性スコアリングをバイパスするため、セマンティック ランク付けと互換性がありません。 使用するクエリ ロジックに以下の機能が含まれている場合、結果を セマンティック ランク付けすることはできません。
クエリに
search=*
を使用した場合や、純粋なフィルターのみクエリのように検索文字列が空の場合に機能しないのは、セマンティック関連性を測定する対象がないために、検索スコアがゼロになるからです。 クエリは、処理中に評価できる用語やフレーズを提供しなければなりません。特定のフィールドで並べ替え (orderBy 句) を実行すると、検索スコアとセマンティック スコアがオーバーライドされます。 セマンティック スコアがランク付けを提供することになっているため、順序付けされた結果にセマンティック ランク付けを適用すると、orderby 句を追加すると HTTP 400 エラーが発生します。
クエリを設定する
この手順では、クエリ要求にパラメーターを追加します。 正常に実行するには、クエリはフルテキスト検索 (search
パラメーターを使用して文字列を渡す) またはベクトル クエリである必要があり、インデックスにはリッチ セマンティック コンテンツとセマンティック構成を含むテキスト フィールドが含まれている必要があります。
検索エクスプローラー には、セマンティックの順位付けのオプションが含まれています。
Azure portal にサインインします。
検索インデックスを開き、[検索エクスプローラー] を選択します。
[クエリ オプション] を選択します。 セマンティック構成を既に定義している場合は、既定で選択されています。 定義していない場合は、インデックスのセマンティック構成を作成します。
クエリ (例: "historic hotel with good food") を入力し、[検索] を選択します。
または、[JSON ビュー] を選択し、クエリ エディターに定義を貼り付けます。
ビューに貼り付けることができる JSON の例を次に示します。
{ "search": "funky or interesting hotel with good food on site", "count": true, "queryType": "semantic", "semanticConfiguration": "my-semantic-config", "captions": "extractive|highlight-true", "answers": "extractive|count-3", "queryLanguage": "en-us", "highlightPreTag": "<strong>", "highlightPostTag": "</strong>", "select": "HotelId,HotelName,Description,Category" }
応答を評価する
最初の結果の上位 50 件の一致のみを意味的にランク付けすることができます。 すべてのクエリと同様に、応答は、取得可能としてマークされているすべてのフィールド、または select
パラメーターに指定されているフィールドのみで構成されます。 応答には、元の関連性スコアが含まれます。また、要求の作成方法に応じて、カウントまたはバッチ結果が含まれる場合もあります。
セマンティック ランカーでは、意味的にランク付けされた新しい関連性スコア、強調表示されたプレーンテキストでの省略可能なキャプション、省略可能な回答という追加の要素が応答に含められます。 結果にこれらの追加の要素が含まれていない場合は、クエリが正しく構成されていない可能性があります。 問題のトラブルシューティングの最初の手順として、セマンティック構成をチェックし、それがインデックス定義とクエリの両方で指定されていることを確認します。
クライアント アプリでは、特定のフィールドの内容全体ではなく、キャプションを一致の説明として含めるように、検索ページを構成することができます。 このアプローチは、検索結果ページにおいて個々のフィールドの密度が高すぎる場合に役立ちます。
上記のクエリ例 ("サイトにレストランがある興味深いホテルと居心地の良いロビーまたは共有エリア") の応答は、3 つの回答 ("answers": "extractive|count-e"
) を返します。 "captions" プロパティがプレーンテキストと強調表示の各バージョンで設定されているため、キャプションが返されます。 回答を特定できない場合は、応答から省略されます。 簡潔にするために、この例では 3 つの回答と、クエリの最もスコア付けの高い結果 3 つのみを示しています。
{
"@odata.count": 29,
"@search.answers": [
{
"key": "24",
"text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"score": 0.9340000152587891
},
{
"key": "40",
"text": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"highlights": "Only 8 miles from Downtown. <strong>On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, </strong>All non-smoking<strong> hotel.</strong> Only 15 miles from airport.",
"score": 0.9210000038146973
},
{
"key": "38",
"text": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
"highlights": "Nature is Home on the beach. Explore the shore by day, and then come home to our<strong> shared living space </strong>to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
"score": 0.9200000166893005
}
],
"value": [
{
"@search.score": 3.2328331,
"@search.rerankerScore": 2.575303316116333,
"@search.captions": [
{
"text": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
"highlights": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our<strong> penthouse </strong>suites offer views for miles and the rooftop<strong> plaza </strong>is open to all guests from sunset to 10 p.m. Enjoy a<strong> complimentary continental breakfast in the lobby, </strong>and free Wi-Fi<strong> throughout </strong>the hotel."
}
],
"HotelId": "50",
"HotelName": "Head Wind Resort",
"Description": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
"Category": "Suite"
},
{
"@search.score": 0.632956,
"@search.rerankerScore": 2.5425150394439697,
"@search.captions": [
{
"text": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
"highlights": "Every stay starts with a warm cookie. Amenities like the<strong> Counting Sheep sleep experience, </strong>our<strong> Wake-up glorious breakfast buffet and spacious workout facilities </strong>await."
}
],
"HotelId": "34",
"HotelName": "Lakefront Captain Inn",
"Description": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
"Category": "Budget"
},
{
"@search.score": 3.7076726,
"@search.rerankerScore": 2.4554927349090576,
"@search.captions": [
{
"text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
}
],
"HotelId": "24",
"HotelName": "Uptown Chic Hotel",
"Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"Category": "Suite"
},
. . .
]
}
予測されるワークロード
セマンティック ランク付けでは、検索サービスがレプリカあたり最大 10 個の同時クエリをサポートすることを想定しておく必要があります。
量が多すぎる場合、サービスによってセマンティック ランク付け要求が調整されます。 エラー メッセージに次の語句が含まれる場合、サービスがセマンティック ランク付けのキャパシティに達していることを示します。
Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded
これに近い、またはそれ以上のレベルの一貫したスループット要件が予想される場合は、私たちが皆さまのワークロードに合わせてプロビジョニングできるように、サポート チケットを提出してください。
次のステップ
セマンティックの順位付けは、キーワード検索とベクトル検索を 1 つの要求と統合された応答に結合するハイブリッド クエリで使用できます。