Créer une requête sémantique dans Recherche Azure AI

Dans cet article, vous découvrez comment appeler un classement sémantique sur un jeu de résultats, en promouvant les résultats les plus pertinents sur le plan sémantique en haut de la pile. Vous pouvez également obtenir des légendes sémantiques, avec des mises en surbrillance sur les termes et expressions les plus pertinents, ainsi que des réponses sémantiques.

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

Choisissez un client de recherche qui prend en charge le classement sémantique. Voici quelques options possibles :

Éviter les fonctionnalités qui ignorent le score de pertinence

Plusieurs fonctionnalités de requête dans Recherche Azure AI ne tiennent pas compte des scores de pertinence ou sont 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. La requête doit contenir des termes ou des expressions qui peuvent être évalués au cours du traitement.

  • Une requête composée dans la syntaxe complète de Lucene (queryType=full) est incompatible avec le classement sémantique (queryType=semantic). Le modèle sémantique ne prend pas en charge l’intégralité de la syntaxe de Lucene.

  • 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), et l’index doit contenir des champs texte avec un contenu sémantique varié 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.

    Screenshot showing query options in Search explorer.

  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 :

    Screenshot showing JSON query syntax in the Azure portal.

    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 se compose de tous les champs marqués comme récupérables, ou seulement des champs listés dans le paramètre de sélection. 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 clair et avec des mises en évidence, et 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"
    },
  ...
]

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