Een semantische query maken in Azure AI Search

In dit artikel leert u hoe u een semantische rangschikking aanroept boven een resultatenset, waardoor de meest semantisch relevante resultaten boven aan de stapel worden gepromoot. U kunt ook semantische onderschrift s krijgen, met hoogtepunten over de meest relevante termen en woordgroepen en semantische antwoorden.

Vereisten

Notitie

Bijschriften en antwoorden worden letterlijk geëxtraheerd uit tekst in het zoekdocument. Het semantische subsysteem maakt gebruik van leesbegrip van machines om inhoud te herkennen die de kenmerken van een onderschrift of antwoord heeft, maar geen nieuwe zinnen of woordgroepen opstelt. Daarom werkt inhoud met uitleg of definities het beste voor semantische rangschikking. Zie Rag (Retrieval Augmented Generation) als u interactie in chatstijl met gegenereerde antwoorden wilt.

Een client kiezen

Kies een zoekclient die ondersteuning biedt voor semantische classificatie. Hieronder volgen een aantal opties:

Vermijd functies die relevantiescores omzeilen

Verschillende querymogelijkheden in Azure AI Search omzeilen relevantiescores of zijn anders niet compatibel met semantische classificatie. Als uw querylogica de volgende functies bevat, kunt u uw resultaten niet semantisch rangschikken:

  • Een query met search=* of een lege zoekreeks, zoals een pure filterquery, werkt niet omdat er niets is om de semantische relevantie te meten. De query moet termen of woordgroepen bevatten die tijdens de verwerking kunnen worden beoordeeld.

  • Een query die is samengesteld in de volledige Lucene-syntaxis (queryType=full) is niet compatibel met semantische rangschikking (queryType=semantic). Het semantische model biedt geen ondersteuning voor de volledige Lucene-syntaxis.

  • Als u sorteert (orderBy-componenten) voor specifieke velden, worden zoekscores en een semantische score overschreven. Aangezien de semantische score de classificatie moet leveren, resulteert het toevoegen van een orderby-component in een HTTP 400-fout als u semantische classificatie toepast op geordende resultaten.

De query instellen

Voeg in deze stap parameters toe aan de queryaanvraag. Als u wilt slagen, moet uw query zoeken in volledige tekst (met behulp van de search parameter om een tekenreeks door te geven) en moet de index tekstvelden bevatten met uitgebreide semantische inhoud en een semantische configuratie.

Search Explorer bevat opties voor semantische rangschikking.

  1. Meld u aan bij het Azure-portaal.

  2. Open een zoekindex en selecteer Search Explorer.

  3. Selecteer Queryopties. Als u al een semantische configuratie hebt gedefinieerd, wordt deze standaard geselecteerd. Als u er nog geen hebt, maakt u een semantische configuratie voor uw index.

    Screenshot showing query options in Search explorer.

  4. Voer een query in, zoals 'historisch hotel met goed eten' en selecteer Zoeken.

  5. U kunt ook JSON-weergave selecteren en definities in de query-editor plakken:

    Screenshot showing JSON query syntax in the Azure portal.

    Hier volgt een aantal JSON-tekst die u in de weergave kunt plakken:

     {
         "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
     }
    

Het antwoord evalueren

Alleen de top 50 overeenkomsten uit de eerste resultaten kunnen semantisch worden gerangschikt. Net als bij alle query's bestaat een antwoord uit alle velden die zijn gemarkeerd als ophaalbaar of alleen die velden die worden vermeld in de selectieparameter. Een antwoord bevat de oorspronkelijke relevantiescore en kan ook een telling of batchresultaten bevatten, afhankelijk van de wijze waarop u de aanvraag hebt geformuleerd.

In semantische rangschikking heeft het antwoord meer elementen: een nieuwe semantisch gerangschikte relevantiescore, een optionele onderschrift in tekst zonder opmaak en met markeringen en een optioneel antwoord. Als uw resultaten deze extra elementen niet bevatten, is uw query mogelijk onjuist geconfigureerd. Als eerste stap voor het oplossen van het probleem controleert u de semantische configuratie om ervoor te zorgen dat deze is opgegeven in zowel de indexdefinitie als de query.

In een client-app kunt u de zoekpagina structuren om een onderschrift op te nemen als de beschrijving van de overeenkomst, in plaats van de volledige inhoud van een specifiek veld. Deze methode is handig wanneer afzonderlijke velden te dicht zijn voor de pagina met zoekresultaten.

Het antwoord voor de bovenstaande voorbeeldquery retourneert de volgende overeenkomst als de bovenste selectie. Bijschriften worden geretourneerd omdat de eigenschap 'onderschrift s' is ingesteld, met tekst zonder opmaak en gemarkeerde versies. Antwoorden worden weggelaten uit het voorbeeld, omdat er geen kan worden bepaald voor deze specifieke query en 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"
    },
  ...
]

Volgende stappen

Semantische classificatie kan worden gebruikt in hybride query's die trefwoordzoekopdrachten en vectorzoekopdrachten combineren in één aanvraag en een uniform antwoord.