Semantische classificatie toevoegen aan query's in Azure AI Search
U kunt semantische classificatie toepassen op tekstquery's, hybride query's en vectorquery's als uw zoekdocumenten tekenreeksvelden bevatten en de vectorquery een tekstweergave heeft in het zoekdocument.
In dit artikel wordt uitgelegd hoe u de semantische ranker aanroept voor query's.
Vereisten
Een zoekservice, Basic-laag of hoger, met semantische rangschikking ingeschakeld.
Een bestaande zoekindex met een semantische configuratie en inhoud voor tekst met opmaak.
Controleer de semantische rangschikking 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 maakt gebruik van leesbegrip van machines om inhoud te herkennen die de kenmerken van een bijschrift 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
U kunt een van de volgende hulpprogramma's en SDK's gebruiken om een query te maken die gebruikmaakt van semantische classificatie:
- Azure Portal met behulp van de indexontwerper om een semantische configuratie toe te voegen.
- Visual Studio Code met een REST-client
- Azure-SDK voor .NET
- Azure-SDK voor Python
- Azure SDK voor Java
- Azure SDK voor JavaScript
Vermijd functies die relevantiescores omzeilen
Een paar querymogelijkheden omzeilen relevantiescores, waardoor ze niet compatibel zijn met semantische rangschikking. 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, zodat de zoekscores nul zijn. De query moet termen of woordgroepen bevatten die tijdens de verwerking kunnen worden geëvalueerd.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) of een vectorquery. De index moet tekstvelden bevatten met uitgebreide semantische inhoud en een semantische configuratie.
Search Explorer bevat opties voor semantische rangschikking.
Meld u aan bij het Azure-portaal.
Open een zoekindex en selecteer Search Explorer.
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.
Voer een query in, zoals 'historisch hotel met goed eten' en selecteer Zoeken.
U kunt ook JSON-weergave selecteren en definities in de query-editor plakken:
Hier volgt een JSON-voorbeeld dat u in de weergave kunt plakken:
{ "search": "historic hotel with good food", "count": true, "queryType": "semantic", "semanticConfiguration": "my-semantic-config", "captions": "extractive|highlight-true", "answers": "extractive|count-3", "queryLanguage": "en-us", "highlightPreTag": "<strong>", "highlightPostTag": "</strong>", "select": "HotelId,HotelName,Description,Category" }
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 in de select
parameter worden vermeld. 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 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 om een bijschrift 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 'bijschriften' 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"
},
...
]
Verwachte workloads
Voor semantische classificatie moet u verwachten dat een zoekservice maximaal 10 gelijktijdige query's per replica ondersteunt.
De service beperkt semantische classificatieaanvragen als volumes te hoog zijn. Een foutbericht met deze woordgroepen geeft aan dat de service capaciteit heeft voor semantische rangschikking:
Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded
Als u verwacht dat de vereisten voor consistente doorvoer bijna, op of hoger dan dit niveau zijn, dient u een ondersteuningsticket in, zodat we uw workload kunnen inrichten.
Volgende stappen
Semantische classificatie kan worden gebruikt in hybride query's die trefwoordzoekopdrachten en vectorzoekopdrachten combineren in één aanvraag en een uniform antwoord.