Partager via


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.

Prérequis

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 :

É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

Dans cette étape, ajoutez des paramètres à la demande de requête. Pour réussir, votre requête doit être une recherche en texte intégral (utilisant le paramètre search pour passer une chaîne) ou une requête vectorielle. L’index doit contenir des champs de texte avec un contenu sémantique riche et une configuration sémantique.

L’Explorateur de recherche inclut des options de classement sémantique.

  1. Connectez-vous au portail Azure.

  2. Ouvrez un index de recherche et sélectionnez Explorateur de recherche.

  3. 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.

    Capture d’écran montrant les options de requête dans l’Explorateur de recherche.

  4. Entrez une requête, telle que « hôtel historique avec une bonne nourriture », puis sélectionnez Rechercher.

  5. Vous pouvez également sélectionner Vue JSON et coller des définitions dans l’éditeur de requête :

    Capture d’écran montrant la syntaxe de requête JSON sur le Portail Azure.

    Voici un texte JSON que vous pouvez coller dans la vue :

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

É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 à la requête ci-dessus retourne la correspondance suivante comme premier choix. Les légendes sont retournées, car la propriété « captions » est définie, avec du texte brut et des versions en surbrillance. Les réponses sont omises de l’exemple, car il n’est pas possible de les déterminer pour cette requête et ce corpus.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

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.