Semantische rangschikking configureren en bijschriften retourneren in zoekresultaten

Belangrijk

Semantisch zoeken is in openbare preview onder aanvullende gebruiksvoorwaarden. Het is beschikbaar via Azure Portal, preview-REST API's en bèta-SDK's. Deze functie is factureerbaar. Zie Beschikbaarheid en prijzen.

In dit artikel leert u hoe u een semantisch classificatie-algoritme voor een resultatenset aanroept, waarbij de meest semantisch relevante resultaten boven aan de stack worden gepromoot. U kunt ook semantische bijschriften krijgen, met markeringen op de meest relevante termen en woordgroepen en semantische antwoorden.

Er zijn twee hoofdactiviteiten om uit te voeren:

  • Een semantische configuratie toevoegen aan een index
  • Parameters toevoegen aan een queryaanvraag

Vereisten

  • Een zoekservice op de Standard-laag (S1, S2, S3) of de laag Geoptimaliseerd voor opslag (L1, L2), in deze regio's: Australië - oost, VS - oost, VS - oost 2, VS - noord-centraal, VS - zuid-centraal, VS - west, VS - west 2, Europa - noord, VK - zuid, Europa - west.

    Als u een bestaande S1- of hogere service in een van deze regio's hebt, kunt u semantisch zoeken inschakelen zonder dat u een nieuwe service hoeft te maken.

  • Semantisch zoeken ingeschakeld in uw zoekservice.

  • Een bestaande zoekindex met uitgebreide inhoud in een ondersteunde querytaal. Semantisch zoeken werkt het beste voor inhoud die informatief of beschrijvend is.

  • Bekijk het overzicht van Semantisch zoeken als u een inleiding tot de functie nodig hebt.

Notitie

Bijschriften en antwoorden worden letterlijk geëxtraheerd uit tekst in het zoekdocument. Het semantische subsysteem bepaalt welk deel van uw inhoud de kenmerken van een bijschrift of antwoord heeft, maar er worden geen nieuwe zinnen of woordgroepen samengesteld. Daarom werkt inhoud met uitleg of definities het beste voor semantisch zoeken.

1 - Kies een client

U hebt een zoekclient nodig die ondersteuning biedt voor preview-API's voor de queryaanvraag. Hier volgen een paar opties:

2 - Een semantische configuratie maken

Belangrijk

Er is een semantische configuratie vereist voor de 2021-04-30-Preview REST API's, Search Explorer en sommige versies van de bèta-SDK's. Als u de REST API 2020-06-30-preview gebruikt, slaat u deze stap over en gebruikt u in plaats daarvan de benadering 'searchFields' voor het prioriteren van velden .

Een semantische configuratie geeft aan hoe velden worden gebruikt in semantische rangschikking. Het geeft de onderliggende modellen hints over welke indexvelden het belangrijkst zijn voor semantische rangschikking, bijschriften, markeringen en antwoorden.

U voegt een semantische configuratie toe aan uw indexdefinitie. De secties met tabbladen hieronder bevatten instructies voor de REST API's, Azure Portal en de .NET SDK Preview.

U kunt op elk gewenst moment een semantische configuratie toevoegen of bijwerken zonder de index opnieuw te bouwen. Wanneer u een query uitvoert, voegt u de semantische configuratie (één per query) toe die aangeeft welke semantische configuratie voor de query moet worden gebruikt.

  1. Controleer de eigenschappen die u moet opgeven. Een semantische configuratie heeft een naam en ten minste één van de volgende eigenschappen:

    • Titelveld : een titelveld moet een beknopte beschrijving van het document zijn, idealiter een tekenreeks van minder dan 25 woorden. Dit veld kan de titel van het document, de naam van het product of het item in de zoekindex zijn. Als u geen titel in de zoekindex hebt, laat u dit veld leeg.
    • Inhoudsvelden : inhoudsvelden moeten tekst in natuurlijke taal bevatten. Veelvoorkomende voorbeelden van inhoud zijn de hoofdtekst van een document, de beschrijving van een product of andere vrije tekst.
    • Trefwoordvelden : trefwoordvelden moeten een lijst met trefwoorden zijn, zoals de tags in een document of een beschrijvende term, zoals de categorie van een item.

    U kunt slechts één titelveld opgeven, maar u kunt zoveel inhouds- en trefwoordvelden opgeven als u wilt. Geef voor inhouds- en trefwoordvelden de velden weer in volgorde van prioriteit, omdat velden met een lagere prioriteit mogelijk worden afgekapt.

  2. Bepaal voor de bovenstaande eigenschappen welke velden u wilt toewijzen.

    Een veld moet een ondersteund gegevenstype zijn en moet tekenreeksen bevatten. Als u toevallig een ongeldig veld opneemt, is er geen fout, maar worden deze velden niet gebruikt in de semantische rangschikking.

    Gegevenstype Voorbeeld van hotels-sample-index
    Edm.String HotelName, Category, Description
    Edm.ComplexType Address.StreetNumber, Address.City, Address.StateProvince, Address.PostalCode
    Collection(EDM.String) Tags (een door komma's gescheiden lijst met tekenreeksen)

    Notitie

    Subvelden van verzamelingsvelden (Edm.ComplexType) worden momenteel niet ondersteund door semantische zoekopdrachten en worden niet gebruikt voor semantische rangschikking, bijschriften of antwoorden.

  1. Meld u aan bij Azure Portal en navigeer naar een zoekservice waarvoor semantisch zoeken is ingeschakeld.

  2. Open een index.

  3. Selecteer Semantische configuraties en selecteer vervolgens Semantische configuratie toevoegen.

    De pagina Nieuwe semantische configuratie wordt geopend met opties voor het selecteren van een titelveld, inhoudsvelden en trefwoordvelden. Zorg ervoor dat inhoudsvelden en trefwoordvelden in volgorde van prioriteit worden weergegeven.

    Selecteer OK om de wijzigingen op te slaan.

    Schermopname van het maken van een semantische configuratie in de Azure Portal.

Tip

Als u een voorbeeld wilt zien van het maken van een semantische configuratie en deze gebruikt om een semantische query uit te voeren, bekijkt u het Postman-voorbeeld voor semantische zoekopdrachten.

2b - SearchFields gebruiken voor het prioritiseren van velden

Deze stap is alleen bedoeld voor oplossingen die gebruikmaken van de REST API 2020-06-30-Preview of een bèta-SDK die geen ondersteuning biedt voor semantische configuraties. In plaats van het instellen van veldprioriteit in de index via een semantische configuratie, stelt u de prioriteit in op het moment van de query, met behulp van de parameter 'searchFields' van een query.

Het gebruik van 'searchFields' voor veld prioritering was een vroeg implementatiedetail dat niet wordt ondersteund zodra semantisch zoeken de openbare preview afsluit. We raden u aan semantische configuraties te gebruiken als uw toepassingsvereisten dit toestaan.

POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=2020-06-30-Preview      
{    
    "search": " Where was Alan Turing born?",    
    "queryType": "semantic",  
    "searchFields": "title,url,body",  
    "queryLanguage": "en-us"  
}

Veldvolgorde is essentieel omdat de semantische rangschikking de hoeveelheid inhoud beperkt die kan worden verwerkt, terwijl er nog steeds een redelijke reactietijd wordt geleverd. De kans is groter dat inhoud van velden aan het begin van de lijst wordt opgenomen; inhoud van het einde kan worden afgekapt als de maximumlimiet is bereikt. Zie Voorverwerking tijdens semantische rangschikking voor meer informatie.

  • Als u slechts één veld opgeeft, kiest u een beschrijvend veld waarin het antwoord op semantische query's kan worden gevonden, zoals de hoofdinhoud van een document.

  • Voor twee of meer velden in searchFields:

    • Het eerste veld moet altijd beknopt zijn (zoals een titel of naam), idealiter een tekenreeks van minder dan 25 woorden.

    • Als de index een URL-veld heeft dat door mensen kan worden gelezen, zoals www.domain.com/name-of-the-document-and-other-details (in plaats van machinegericht, zoals www.domain.com/?id=23463&param=eis), plaatst u het veld op de tweede plaats in de lijst (of als er geen beknopt titelveld is).

    • Volg de bovenstaande velden met andere beschrijvende velden, waar het antwoord op semantische query's kan worden gevonden, zoals de hoofdinhoud van een document.

Wanneer u searchFields instelt, kiest u alleen velden van de volgende ondersteunde gegevenstypen:

Gegevenstype Voorbeeld van hotels-sample-index
Edm.String HotelName, Category, Description
Edm.ComplexType Address.StreetNumber, Address.City, Address.StateProvince, Address.PostalCode
Collection(EDM.String) Tags (een door komma's gescheiden lijst met tekenreeksen)

Als u toevallig een ongeldig veld opneemt, is er geen fout, maar deze velden worden niet gebruikt in semantische rangschikking.

3 - Vermijd functies die relevantiescore omzeilen

Verschillende querymogelijkheden in Cognitive Search ondergaan geen relevantiescore en sommige omzeilen het zoekprogramma voor volledige tekst. Als uw querylogica de volgende functies bevat, krijgt u geen relevantiescores of semantische classificatie voor uw resultaten:

  • Filters, fuzzy zoekquery's en reguliere expressies herhalen niet-getykeniseerde tekst en scannen op exacte overeenkomsten in de inhoud. Zoekscores voor alle bovenstaande queryformulieren zijn uniform 1.0 en bieden geen zinvolle invoer voor semantische classificatie.

  • Als u sorteert (orderBy-componenten) op specifieke velden, worden ook zoekscores en semantische score overschreven. Gezien het feit dat semantische score wordt gebruikt om resultaten te ordenen, zal met inbegrip van expliciete sorteerlogica een HTTP 400-fout worden geretourneerd.

4 - De query instellen

De volgende stap is het toevoegen van parameters aan de queryaanvraag. Als u wilt lukken, moet uw query zoeken in volledige tekst zijn (met behulp van de parameter 'zoeken' om een tekenreeks door te geven) en moet de index tekstvelden bevatten met semantische inhoud met opmaak.

Search Explorer is bijgewerkt met opties voor semantische query's. Volg de onderstaande stappen om semantische rangschikking in de portal te configureren:

  1. Open de Azure Portal en navigeer naar een zoekservice waarvoor semantische zoekopdrachten zijn ingeschakeld.

  2. Selecteer Search Explorer boven aan de overzichtspagina.

  3. Kies een index met inhoud in een ondersteunde taal.

  4. Stel in Search Explorer queryopties in waarmee semantische query's, semantische configuraties en spellingcorrectie mogelijk zijn. U kunt ook de vereiste queryparameters in de queryreeks plakken.

Schermopname van queryopties in Search Explorer.

5 - Het antwoord evalueren

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

In semantische zoekopdrachten heeft het antwoord meer elementen: een nieuwe semantisch gerangschikte relevantiescore, een optioneel bijschrift 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 door een bijschrift op te nemen als de beschrijving van de overeenkomst, in plaats van de volledige inhoud van een specifiek veld. Deze benadering 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 keuze. Bijschriften worden geretourneerd omdat de eigenschap 'bijschriften' is ingesteld, met tekst zonder opmaak en gemarkeerde versies. Antwoorden worden weggelaten in 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

U weet nog dat semantische rangschikking en antwoorden zijn gebaseerd op een eerste resultatenset. Elke logica die de kwaliteit van de eerste resultaten verbetert, wordt overgedragen naar semantische zoekopdrachten. Als volgende stap bekijkt u de functies die bijdragen aan de eerste resultaten, waaronder analyses die van invloed zijn op hoe tekenreeksen worden tokenized, scoreprofielen die resultaten kunnen afstemmen en het standaard relevantie-algoritme.