Ajouter un classement sémantique aux requêtes dans Recherche Azure AI
Vous pouvez appliquer le classement sémantique aux requêtes textuelles, aux requêtes hybrides et aux requêtes vectorielles si vos documents de recherche contiennent des champs de chaîne, et si la requête vectorielle a une représentation textuelle dans le document de recherche.
Cet article explique comment appeler le classeur sémantique sur les requêtes. Il part du principe que vous utilisez les API stables ou d’aperçu les plus récentes. Pour obtenir de l’aide sur les versions antérieures, consultez Migrer le code de classement sémantique.
Prérequis
Un service de recherche, de niveau Essentiel ou supérieur, disposant du classeur sémantique activé.
Un index de recherche existant avec une configuration sémantique et du contenu de texte enrichi.
Passez en revue Classement sémantique si vous avez besoin d’une introduction à la fonctionnalité.
Remarque
Les légendes et réponses sont extraites du texte littéral du document de recherche. Le sous-système sémantique utilise la compréhension de la lecture automatique pour reconnaître le contenu ayant les caractéristiques d’une légende ou d’une réponse, mais il ne compose pas de nouvelles phrases ou expressions. Pour cette raison, le contenu qui comprend des explications ou des définitions est le mieux adapté au classement sémantique. Si vous voulez une interaction de type conversation avec des réponses générées, consultez RAG (Génération Augmentée de Récupération).
Choisissez un client
Vous pouvez utiliser l’un des outils et SDK suivants pour créer une requête qui utilise le classement sémantique :
- Portail Azure, avec le concepteur d’index pour ajouter une configuration sémantique
- Visual Studio Code avec un client REST
- Kit de développement logiciel (SDK) Azure pour .NET
- Kit de développement logiciel (SDK) Azure pour Python
- Kit de développement logiciel (SDK) Azure pour Java
- Kit de développement logiciel (SDK) pour JavaScript
Éviter les fonctionnalités qui ignorent le score de pertinence
Quelques interrogations des données par requête contournent le scoring de pertinence, ce qui les rend incompatibles avec le classement sémantique. Si la logique de votre requête comprend les fonctionnalités suivantes, vous ne pouvez pas classer sémantiquement vos résultats :
Une requête avec
search=*
ou une chaîne de recherche vide, comme une requête de filtrage uniquement, ne va pas fonctionner, car il n’y a rien à quoi mesurer la pertinence sémantique. Les scores de la recherche ont ainsi la valeur zéro. La requête doit contenir des expressions ou des termes pouvant être évalués au cours du traitement.Le tri (clauses orderBy) sur des champs spécifiques l’emporte sur les scores de recherche et un score sémantique. Comme le score sémantique est censé fournir le classement, l’ajout d’une clause orderby entraîne une erreur HTTP 400 si vous appliquez le classement sémantique sur des résultats ordonnés.
Configurer la requête
Par défaut, les requêtes n’utilisent pas le classement sémantique. Pour utiliser le classement sémantique, deux paramètres différents peuvent être utilisés. Chaque paramètre prend en charge un ensemble différent de scénarios.
Les requêtes sémantiques, qu’elles soient spécifiées via search
plus queryType
ou semanticQuery
, doivent être du texte brut et ne peuvent pas être vides. Les requêtes vides n’entraînent pas d’application de classement sémantique aux résultats.
Paramètre de l’éditeur de classement sémantique | Recherche en texte brut | Syntaxe de recherche de texte simple | Syntaxe de recherche en texte intégral | Recherche vectorielle | Recherche hybride | Réponses sémantiques et légendes |
---|---|---|---|---|---|---|
queryType-semantic 1 |
✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
semanticQuery="<your plain text query>" 2 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
1 queryType=semantic
ne peut pas prendre en charge les valeurs de simple
ou de full
explicites, car le paramètre queryType
est utilisé pour semantic
. Les comportements de requête efficaces sont les valeurs par défaut de l’analyseur simple.
2 Le paramètre semanticQuery
peut être utilisé pour tous les types de requêtes. Toutefois, il n’est pas pris en charge dans le portail Azure Explorateur de recherche.
Quel que soit le paramètre choisi, l’index doit contenir des champs de texte avec du contenu sémantique enrichi et une configuration sémantique.
L’Explorateur de recherche inclut des options de classement sémantique. Rappelez-vous que vous ne pouvez pas définir le paramètre semanticQuery
dans le portail Azure.
Connectez-vous au portail Azure.
Ouvrez un index de recherche et sélectionnez Explorateur de recherche.
Sélectionnez Options de requête. Si vous avez déjà défini une configuration sémantique, elle est sélectionnée par défaut. Si vous n’en avez pas, créez une configuration sémantique pour votre index.
Entrez une requête, telle que « hôtel historique avec une bonne nourriture », puis sélectionnez Rechercher.
Vous pouvez également sélectionner vue JSON et coller des définitions dans l’éditeur de requête. Le portail Azure ne prend pas en charge l’utilisation de
semanticQuery
. Par conséquent, la définition dequeryType
sur"semantic"
est requise :Exemple JSON pour définir le type de requête sur sémantique que vous pouvez coller dans la vue :
{ "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", "highlightPreTag": "<strong>", "highlightPostTag": "</strong>", "select": "HotelId,HotelName,Description,Category" }
Évaluer la réponse
Seules les 50 premières correspondances des résultats initiaux peuvent être classées de façon sémantique. Comme pour toutes les requêtes, une réponse est composée de tous les champs marqués comme étant récupérables, ou uniquement des champs listés dans le paramètre select
. Une réponse inclut le score de pertinence d’origine et peut également inclure un nombre, ou des résultats par lot, en fonction de la façon dont vous avez formulé la demande.
Dans le classement sémantique, la réponse comporte plus d’éléments : un nouveau score de pertinence classé sémantiquement, une légende facultative en texte brut et mise en évidence ainsi qu’une réponse facultative. Si vos résultats n’incluent pas ces éléments supplémentaires, votre requête peut être mal configurée. Pour résoudre le problème dans un premier temps, vérifiez la configuration sémantique pour vous assurer qu’elle est spécifiée dans la définition d’index et la requête.
Dans une application cliente, vous pouvez structurer la page de recherche pour inclure une légende comme description de la correspondance, plutôt que l’intégralité du contenu d’un champ spécifique. Cette approche est utile lorsque les champs individuels sont trop denses pour la page des résultats de la recherche.
La réponse pour l’exemple de requête ci-dessus (« interesting hotel with restaurant on site and cozy lobby or shared area » (hôtel intéressant avec restaurant sur place et hall d’entrée ou espace commun confortable)) retourne trois réponses ("answers": "extractive|count-e"
). Les légendes sont retournées, car la propriété « captions » est définie, avec du texte brut et des versions en surbrillance. Si une réponse ne peut pas être déterminée, elle est omise de la réponse. Pour des raisons de concision, cet exemple montre seulement les trois réponses et les trois résultats de scoring les plus élevés de la requête.
{
"@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"
},
. . .
]
}
Charges de travail attendues
Pour le classement sémantique, vous devez vous attendre à ce qu’un service de recherche prenne en charge jusqu’à 10 requêtes simultanées par réplica.
Le service limite les requêtes de classement sémantique si les volumes sont trop élevés. Un message d’erreur qui inclut ces expressions indique que le service a atteint sa capacité pour le classement sémantique :
Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded
Si vous prévoyez des exigences de débit cohérentes proches de ce niveau, à ce niveau ou supérieures à ce niveau, envoyez un ticket de support afin que nous puissions approvisionner votre charge de travail.
Étapes suivantes
Le classement sémantique peut être utilisé dans des requêtes hybrides qui combinent la recherche par mot clé et la recherche vectorielle dans une seule requête et une réponse unifiée.