Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Azure AI Zoeken is beschikbaar via de Azure-portal, REST API's en Azure-SDK's. Het vormt ook een basis voor Foundry IQ, de beheerde kennislaag die bedrijfsinhoud transformeert in herbruikbare, machtigingsbewuste knowledge bases voor agents in de Microsoft Foundry-portal.
Important
Functies, mogelijkheden of eigenschappen die zijn gemarkeerd (preview) vallen niet onder een service level agreement, worden niet aanbevolen voor productieworkloads en kunnen worden gewijzigd of beperkt voordat ze algemeen beschikbaar worden. De Azure AI Zoeken preview-voorwaarden zijn van toepassing op alle preview-functionaliteit, ongeacht of deze zelfstandig is of deel uitmaakt van een algemeen beschikbare functie.
Hybride zoekopdracht combineert tekst (trefwoord) en vectorquery's in één zoekaanvraag. Beide query's worden parallel uitgevoerd. De resultaten worden samengevoegd en opnieuw gerangschikt op nieuwe zoekscores, met behulp van Reciprocal Rank Fusion (RRF) om een uniforme resultatenset terug te geven. In veel gevallen retourneren hybride query's met semantische classificatie per benchmarktest de meest relevante resultaten.
In dit artikel leert u het volgende:
- Een eenvoudige hybride aanvraag instellen
- Parameters en filters toevoegen
- Relevantie verbeteren met behulp van semantische classificatie of vectorgewichten
- Querygedrag optimaliseren door invoer te beheren (
maxTextRecallSize)
Aan het einde van dit artikel kunt u hybride query's uitvoeren die trefwoorden en vectorzoekopdrachten combineren met optionele semantische rangschikking.
Voorwaarden
Een Azure-abonnement. Maak er gratis een.
Een Azure AI Zoeken-service. Maak een service of vind een bestaande service.
Een zoekindex met
searchablevector- en niet-vectorvelden. Wij raden aan de wizard Gegevens importeren te gebruiken om snel een index te maken. Zie Anders een index maken en vectorvelden toevoegen aan een zoekindex.Machtigingen: U hebt de zoekindexgegevenslezer nodig om een query uit te voeren op een index. Als u een index wilt maken of bijwerken, hebt u Inzender voor zoekindexgegevens nodig. Zie Verbinding maken met behulp van rollen voor meer informatie.
(Optioneel) SDK-installatie:
- Python:
pip install azure-search-documents - C#:
dotnet add package Azure.Search.Documents
- Python:
(Optioneel) Als u ingebouwde tekst-naar-vector conversie van een queryreeks wilt, maakt en wijst u een vectorizer toe aan vectorvelden in de zoekindex.
Een API, hulpprogramma en werkbaar patroon kiezen
Search Explorer in de Azure-portal (ondersteunt zowel stabiele als preview-API-zoeksyntaxis) heeft een JSON-weergave waarmee u een hybride aanvraag kunt plakken.
Nieuwere stabiele of preview-pakketten van de Azure-SDK's (zie wijzigingslogboeken voor ondersteuning van SDK-functies).
Stabiele REST API's of een recente preview-API-versie als u preview-functies zoals maxTextRecallSize en countAndFacetMode (preview) gebruikt.
Voor leesbaarheid gebruiken we REST-voorbeelden om uit te leggen hoe de API's werken. U kunt een REST-client zoals Visual Studio Code gebruiken met de REST-extensie om hybride query's te bouwen. U kunt ook de Azure-SDK's gebruiken. Zie Quickstart: Vector search voor meer informatie.
Werkbare hybride patronen
Als u geen gebruik hebt van hybride zoekopdrachten, kiest u één patroon en stemt u in kleine stappen af. Start niet met maximale vectorherinnering, grote tekstherinnering en semantische herschikking in hetzelfde verzoek.
Evenwichtige hybride (standaardinstelling): gebruik deze eerst voor de meeste workloads. Begin in
khet bereik van 30 tot 50,topin het bereik van 10 tot 20 en schakel semantische rangschikking alleen in wanneer de gemeten relevantie wordt verbeterd.Recall-first hybride: gebruik dit voor moeilijke query's waarbij dekking het doel is. Verhoog
maxTextRecallSizegeleidelijk en houd vectorinstellingen gemiddeld. Verwacht hogere samenvoegkosten.Precisiegerichte hybride: Gebruik dit voor een lage latentie en schaalbaarheid. Houd
kentopbescheiden, pas selectieve filters toe en vermijd semantische functies die geen waarde toevoegen.
Waarom overbelaste queries worden vertraagd
Met hybride query's worden tekst en vectoren parallel opgehaald en worden de resultaten vervolgens samengevoegd met RRF. Als u de lexicale bijdrage verhoogt (bijvoorbeeld door de hybride weging ten gunste van BM25 te wijzigen), verhoogt u het aantal tekstkandidaten dat moet worden samengevoegd met vectorkandidaten. Als u dit combineert met dure vectorinstellingen en semantische rerankering, neemt de CPU- en geheugendruk snel toe.
Bij kleinere capaciteitsconfiguraties kan deze extra samenvoeging en herranking van werk het volgende veroorzaken:
- Hogere latentie en p95/p99-pieken
- 429 beperkingsreacties
- Mislukte of time-outaanvragen van client waargenomen wanneer gedrag voor opnieuw proberen niet is geconfigureerd
Volgorde afstemmen voordat u uitschaalt
Query- en vectorinstellingen afstemmen voordat u replica's toevoegt:
- Verlaag eerst dure vectorzoekinstellingen.
Als
efSearchenmaxConnectionsbijvoorbeeld agressief worden ingesteld, verlaagt u ze voordat u uitschaalt (verminder bijvoorbeeldefSearchvan ongeveer 800 tot 128 tot 192 en verlaagtmaxConnectionsu van 64 tot 32). - Beperk het bereik van semantische rerankering tot gevallen die hiervan profiteren.
- Test latentie en 429 tarieven opnieuw onder representatieve belasting.
- Schaal replica's alleen als throttling zich blijft voordoen na het afstemmen.
Gebruik deze reeks om de stabiliteit eerst te verbeteren en de kosten te beheersen voordat u schaalt.
Een hybride query instellen
In deze sectie wordt de basisstructuur van een hybride query uitgelegd en wordt uitgelegd hoe u er een instelt in Search Explorer of voor uitvoering in een REST-client.
Resultaten worden geretourneerd in tekst zonder opmaak, inclusief vectoren in velden die zijn gemarkeerd als retrievable. Omdat numerieke vectoren niet nuttig zijn in zoekresultaten, kiest u andere velden in de index als proxy voor de vectorovereenkomst. Als een index bijvoorbeeld de velden descriptionVector en descriptionText bevat, kan de query overeenkomen met descriptionVector, maar in het zoekresultaat kan 'descriptionText' worden weergegeven. Gebruik de select parameter om alleen leesbare velden in de resultaten op te geven.
Ga naar uw zoekservice in de Azure portal.
Selecteer onder Indexen voor zoekbeheer> een index met vectoren en niet-vectorinhoud. Search Explorer is het eerste tabblad.
Schakel onder Weergave over naar de JSON-weergave , zodat u een vectorquery kunt plakken.
Vervang de standaardquerysjabloon door een hybride query. Een eenvoudige hybride query heeft een tekstquery opgegeven in
searchen een vectorquery die is opgegeven ondervectorQueries.vector. De tekstquery en vectorquery kunnen gelijkwaardig of afwijkend zijn, maar het is gebruikelijk dat ze dezelfde intentie delen.Dit voorbeeld is afkomstig uit de quickstart vector met vector- en niet-vectorinhoud en verschillende queryvoorbeelden. Voor de beknoptheid wordt de vector afgekapt in dit artikel.
{ "search": "historic hotel walk to restaurants and shopping", "vectorQueries": [ { "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], "k": 7, "fields": "DescriptionVector", "kind": "vector", "exhaustive": true } ] }Selecteer Zoeken.
Tip
Zoekresultaten zijn gemakkelijker te lezen als u de vectoren verbergt. Zet in QueryoptiesVectorwaarden verbergen in zoekresultaten aan.
Hier volgt een andere versie van de query. Hiermee voegt u een
counttoe voor het aantal gevonden overeenkomsten, eenselectparameter voor het kiezen van specifieke velden en eentopparameter om de bovenste zeven resultaten te retourneren.{ "count": true, "search": "historic hotel walk to restaurants and shopping", "select": "HotelId, HotelName, Category, Tags, Description", "top": 7, "vectorQueries": [ { "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], "k": 7, "fields": "DescriptionVector", "kind": "vector", "exhaustive": true } ] }
MaxTextRecallSize en countAndFacetMode instellen (preview)
Een hybride query kan worden afgestemd om te bepalen hoeveel van elke subquery bijdraagt aan de gecombineerde resultaten. Als u de maxTextRecallSize parameter (preview) instelt, geeft u op hoeveel BM25-gerangschikte resultaten worden doorgegeven aan het hybride classificatiemodel.
Als uw query facetten bevat, gebruik dan niet-vectorvelden die in de index zijn gemarkeerd als facetable. Vectorvelden zijn niet facetbaar.
Het aantal facets is afhankelijk van het querytype:
- In een alleen-tekstquery tellen facetten de documenten die overeenkomen met de tekstquery.
- In een query met alleen vectoren tellen facetten de
kdocumenten die de vectorquery oplevert. - In een hybride query maken facetten rekening met zowel vector- als tekstresultaten. De vectorzijde draagt bij aan de
kdichtstbijzijnde documenten. De tekstzijde levert door BM25 gerangschikte documenten. De parametercountAndFacetMode(preview) bepaalt of voor aantallen en facetberekeningen alle tekstmatches worden gebruikt of alleen de tekstmatches die worden opgehaald voor rangschikking.
Als u maxTextRecallSize gebruikt, wilt u misschien ook countAndFacetMode instellen. Deze parameter bepaalt of count en facets alle documenten bevat die overeenkomen met de tekstquery, of alleen documenten die in het maxTextRecallSize venster zijn opgehaald. De standaardwaarde is countAllResults.
Met de standaardmodus countAllResults kunnen aantallen en facetten tekstdocumenten bevatten die niet worden opgehaald voor RRF-classificatie omdat ze buiten het maxTextRecallSize venster vallen. Het verhogen van maxTextRecallSize vergroot het aantal volgens BM25 gerangschikte documenten dat beschikbaar is voor rangschikking, maar verhoogt de vectorbijdrage niet verder dan k. Gebruik countRetrievableResults als u wilt dat aantallen en facetberekeningen worden toegepast op de documenten die zijn opgehaald voor hybride rangschikking.
U wordt aangeraden de nieuwste PREVIEW REST API in te stellen voor het instellen van deze opties.
Tip
Een andere benadering voor het afstemmen van hybride query's is vectorgewicht, die wordt gebruikt om het belang van vectorquery's in de aanvraag te vergroten.
Gebruik Search - POST (preview) of Search - GET (preview) om preview-parameters op te geven.
Voeg een
hybridSearchqueryparameterobject toe om het maximum aantal documenten in te stellen dat is teruggehaald via de bm25-gerangschikte resultaten van een hybride query. Het heeft twee eigenschappen:maxTextRecallSizespecificeert het aantal BM25-gerangschikte resultaten dat moet worden verstrekt aan de Reciprocal Rank Fusion (RRF) rangschikker die wordt gebruikt bij hybride query's. De standaardwaarde is 1000. Het maximum is 10.000.countAndFacetModegeeft het aantal en de facetomvang voor een hybride query weer. De standaardinstelling,countAllResultsmaakt gebruik van de volledige hybride resultatenset, inclusief alle documenten die overeenkomen met de tekstquery, zelfs als sommige van deze tekstovereenkomsten niet worden opgehaald voor RRF-classificatie omdat ze buiten hetmaxTextRecallSizevenster vallen. GebruikcountRetrievableResultsom het aantal en de facetten te beperken tot de documenten die zijn opgehaald voor rangschikking, waarondermaxTextRecallSizeBM25-gerangschikte documenten en dekvectorovereenkomsten.
Instellen
maxTextRecallSize:Verlaag
maxTextRecallSizeals vectorzoekopdrachten over het algemeen beter presteren dan het tekstgedeelte van de hybride query.Verhoog
maxTextRecallSizeals u een grote index hebt en de standaardwaarde onvoldoende resultaten vastlegt. Met een grotere BM25-gerangschikte resultatenset kunt u ook delentopvan deze resultaten instellenskipennextophalen.
In de volgende REST-voorbeelden ziet u twee use cases voor het instellen maxTextRecallSize.
Het eerste voorbeeld vermindert maxTextRecallSize tot 100, waardoor de tekstzijde van de hybride query wordt beperkt tot slechts 100 documenten. Het stelt ook in countAndFacetMode dat alleen ophaalbare documenten worden opgenomen in tellings- en facetberekeningen.
POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview
{
"vectorQueries": [
{
"kind": "vector",
"vector": [1.0, 2.0, 3.0],
"fields": "my_vector_field",
"k": 10
}
],
"search": "hello world",
"hybridSearch": {
"maxTextRecallSize": 100,
"countAndFacetMode": "countRetrievableResults"
}
}
Het tweede voorbeeld verhoogt maxTextRecallSize tot 5000. Het maakt ook gebruik van top, skip en volgende om resultaten op te halen uit grote resultatensets. In dit geval haalt de aanvraag resultaten op in BM25 gerangschikte resultaten vanaf positie 1.500 tot en met 2.000 als de bijdrage van de tekstquery aan de samengestelde RRF-resultatenset.
POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview
{
"vectorQueries": [
{
"kind": "vector",
"vector": [1.0, 2.0, 3.0],
"fields": "my_vector_field",
"k": 10
}
],
"search": "hello world",
"top": 500,
"skip": 1500,
"next": 500,
"hybridSearch": {
"maxTextRecallSize": 5000,
"countAndFacetMode": "countRetrievableResults"
}
}
Naslaginformatie: hybridSearch | maxTextRecallSize | countAndFacetMode
Voorbeelden van hybride query's
Deze sectie bevat meerdere queryvoorbeelden die hybride querypatronen illustreren.
Voorbeeld: Hybride zoekopdracht met filter
In dit voorbeeld wordt een filter toegevoegd dat wordt toegepast op de filterable niet-vectorvelden van de zoekindex.
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
"vectorQueries": [
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"k": 10
}
],
"search": "historic hotel walk to restaurants and shopping",
"vectorFilterMode": "preFilter",
"filter": "ParkingIncluded",
"top": "10"
}
Belangrijkste punten:
Filters worden toegepast op de inhoud van filterbare velden. In dit voorbeeld is het veld ParkingIncluded een Booleaanse waarde en wordt het gemarkeerd als
filterablein het indexschema.In hybride query's kunnen filters worden toegepast voordat query's worden uitgevoerd om het queryoppervlak of na de uitvoering van de query te verminderen om de resultaten te beperken.
"preFilter"is de standaardwaarde. Als upostFilterofstrictPostFilter(preview) wilt gebruiken, stelt u de filterverwerkingsmodus in zoals in dit voorbeeld.Wanneer u queryresultaten postfiltert, is het aantal resultaten mogelijk kleiner dan top-n.
Referentie: filter | vectorFilterMode
Voorbeeld: Hybride zoeken met filters die gericht zijn op vector-subquery's (preview)
Met behulp van de nieuwste preview-REST API kunt u een globaal filter op de zoekaanvraag overschrijven door een secundair filter toe te passen dat alleen gericht is op de vectorsubquery's in een hybride aanvraag.
Deze functie biedt nauwkeurige controle door ervoor te zorgen dat filters alleen invloed hebben op de zoekresultaten van vectoren, waardoor zoekresultaten op basis van trefwoorden niet worden beïnvloed.
Het doelfilter overschrijft het globale filter volledig, inclusief eventuele filters die worden gebruikt voor beveiligingsbeperkingen of georuimtelijke zoekopdrachten. In gevallen waarin globale filters vereist zijn, zoals beveiligingsbeperking, moet u deze filters expliciet opnemen in zowel het filter op het hoogste niveau als in elk vectorfilter om ervoor te zorgen dat beveiliging en andere beperkingen consistent worden afgedwongen.
Om gerichte vectorfilters toe te passen:
Gebruik de laatste preview search documents REST API of een Azure SDK-bètapakket dat de functie biedt.
Wijzig een queryaanvraag en voeg een nieuwe
vectorQueries.filterOverrideparameterset toe aan een OData-filterexpressie.
Hier is een voorbeeld van een hybride query dat een filteroverschrijving toevoegt. Het globale filter Rating gt 3 wordt tijdens runtime vervangen door de filterOverride.
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-08-01-preview
{
"vectorQueries": [
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"exhaustive": true,
"filterOverride": "Address/City eq 'Seattle'",
"k": 10
}
],
"search": "historic hotel walk to restaurants and shopping",
"select": "HotelName, Description, Address/City, Rating",
"filter": "Rating gt 3",
"debug": "vector",
"top": 10
}
Voorbeeld: Semantische hybride zoekopdracht
Ervan uitgaande dat uw indexdefinitie een semantische configuratie bevat, kunt u een query formuleren die vectorzoekopdrachten en trefwoordzoekopdrachten bevat, met semantische rangschikking over de samengevoegde resultatenset. Desgewenst kunt u bijschriften en antwoorden toevoegen.
Wanneer u semantische rangschikking met vectoren gebruikt, moet u ervoor zorgen dat k deze is ingesteld op 50. Semantische ranker gebruikt maximaal 50 overeenkomsten als invoer. Als minder dan 50 wordt opgegeven, worden de semantische rangschikkingsmodellen van de nodige invoer beroofd.
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
"vectorQueries": [
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"k": 50
}
],
"search": "historic hotel walk to restaurants and shopping",
"select": "HotelName, Description, Tags",
"queryType": "semantic",
"semanticConfiguration": "my-semantic-config",
"captions": "extractive",
"answers": "extractive",
"top": "50"
}
Belangrijkste punten:
Semantische ranker accepteert maximaal 50 resultaten van het samengevoegde antwoord.
'queryType' en 'semanticConfiguration' zijn vereist.
'ondertiteling' en 'antwoorden' zijn optioneel. Waarden worden geëxtraheerd uit de exacte tekst in de resultaten. Er wordt alleen een antwoord geretourneerd als de resultaten inhoud bevatten met de kenmerken van een antwoord op de query.
Referentie: queryType | semanticConfiguration | bijschriften | antwoorden
Voorbeeld: Semantische hybride zoekopdracht met filter
In dit voorbeeld wordt een ParkingIncluded filter toegevoegd aan een semantische hybride query.
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
"vectorQueries": [
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"k": 50
}
],
"search": "historic hotel walk to restaurants and shopping",
"select": "HotelName, Description, Tags",
"queryType": "semantic",
"semanticConfiguration": "my-semantic-config",
"captions": "extractive",
"answers": "extractive",
"filter": "ParkingIncluded",
"vectorFilterMode": "preFilter",
"top": "50"
}
Belangrijkste punten:
De filtermodus kan van invloed zijn op het aantal resultaten dat beschikbaar is voor de semantische rangschikking. Als best practice geeft u de semantische rangschikking het maximum aantal documenten (50). Als voorfilters of nafilters te selectief zijn, kunt u de semantische rangschikker tekortdoen door deze van minder dan 50 documenten te voorzien om mee te werken.
preFilterwordt toegepast voordat de query wordt uitgevoerd. Als voorfilter het zoekgebied vermindert tot 100 documenten, wordt de vectorquery uitgevoerd op hetDescriptionVectorveld voor die 100 documenten, waardoor de k=50 beste overeenkomsten worden geretourneerd. Die 50 overeenkomende documenten worden vervolgens doorgegeven aan RRF voor samengevoegde resultaten en daarna aan de semantische beoordelaar.postFilterwordt toegepast na het uitvoeren van de query. Als k=50 50 overeenkomsten aan de vectorquerykant retourneert, waarna een postfilter op de 50 overeenkomsten wordt toegepast, worden uw resultaten verminderd door het aantal documenten dat aan de filtercriteria voldoet. Hierdoor hebt u minder dan 50 documenten om door te geven aan een semantische rangschikker. Houd dit in gedachten als u semantische rangschikking gebruikt. De semantische rangschikking werkt het beste als deze 50 documenten als invoer heeft.strictPostFilter(preview) wordt toegepast op de niet-gefilterde topresultatenkna de uitvoering van de query. Het retourneert altijd minder dan of gelijk aankdocumenten. Als de niet-gefilterde k=50 50 niet-gefilterde resultaten retourneert en het filter overeenkomt met 30 documenten, worden er slechts 30 documenten geretourneerd in de resultatenset, zelfs als de index meer dan 30 documenten bevat die overeenkomen met het filter. Omdat deze modus de grootste vermindering in terugroepen heeft, raden we u niet aan deze te gebruiken met een semantische rangschikker.
Een queryantwoord configureren
Wanneer u de hybride query instelt, moet u nadenken over de antwoordstructuur. De zoekmachine rangschikt de overeenkomende documenten en retourneert de meest relevante resultaten. Het antwoord is een afgevlakte rijenset. Parameters voor de query bepalen welke velden zich in elke rij bevinden en hoeveel rijen het antwoord bevatten.
Velden in een antwoord
Zoekresultaten bestaan uit retrievable velden uit uw zoekindex. Een resultaat is een van de volgende:
- Alle
retrievablevelden (standaardinstelling van de REST API). - Velden die expliciet worden vermeld in een
selectparameter in de query.
In de voorbeelden van dit artikel is een select verklaring gebruikt om niet-vector tekstvelden in het antwoord aan te geven.
Opmerking
Vectoren worden niet terugontwikkeld naar leesbare tekst voor mensen, dus vermijd ze in het antwoord terug te sturen. Kies in plaats daarvan niet-vectorvelden die representatief zijn voor het zoekdocument. Als de query bijvoorbeeld is gericht op een veld DescriptionVector, retourneert u een equivalent tekstveld als u er een hebt ('Beschrijving') in het antwoord.
Aantal resultaten
Een query kan overeenkomen met een willekeurig aantal documenten, zo veel als alle documenten als de zoekcriteria zwak zijn (bijvoorbeeld 'search=*' voor een null-query). Omdat het zelden praktisch is om niet-gebonden resultaten te retourneren, moet u een maximum opgeven voor het totale antwoord:
-
"top": nresultaten voor query's met alleen trefwoorden (geen vector) -
"k": nresultaten voor query's met alleen vectoren -
"top": nresultaten voor hybride query's (met of zonder semantisch) die een zoekparameter bevatten
Beide k en top zijn optioneel. Niet opgegeven, het standaardaantal resultaten in een antwoord is 50. U kunt top en skip instellen op door meer resultaten te bladeren of de standaardmethode wijzigen.
Opmerking
Als u hybride zoekopdrachten gebruikt in 2024-05-01-preview-API, kunt u het aantal resultaten van de trefwoordquery beheren met behulp van maxTextRecallSize. Combineer dit met een instelling voor k om de weergave van elk zoeksubsystem (trefwoord en vector) te controleren.
Semantische rangschikkingsresultaten
Opmerking
De semantische ranker kan maximaal 50 resultaten in beslag nemen.
Als u een semantische ranker gebruikt in de preview-versie van 2024-05-01 of later, is het het beste om k en maxTextRecallSize zo in te stellen dat ze samen ten minste 50 totaal zijn. Vervolgens kunt u de geretourneerde resultaten beperken tot de gebruiker met de top parameter.
Als u een semantische ranker gebruikt in een API-versie ouder dan 2024-05-01-preview, voert u de volgende stappen uit:
- Voor zoekopdrachten met alleen trefwoorden (geen vectoren) ingesteld op
top50 - Voor hybride zoekopdrachten ingesteld op
k50, om ervoor te zorgen dat de semantische rangschikking ten minste 50 resultaten krijgt.
Rangschikking
Er worden meerdere sets gemaakt voor hybride query's, met of zonder de optionele semantische rerankering. De rangschikking van resultaten wordt berekend door Reciprocal Rank Fusion (RRF).
In deze sectie vergelijkt u de antwoorden tussen zoeken met één vector en eenvoudige hybride zoekopdracht naar het bovenste resultaat. De verschillende rangschikkingsalgoritmen, zoals de gelijkenismetriek van HNSW en RRF in dit geval, produceren scores met verschillende grootten. Dit gedrag is standaard. RRF-scores kunnen behoorlijk laag zijn, zelfs als er een hoge overeenkomst in gelijkenis is. Lagere scores zijn een kenmerk van het RRF-algoritme. In een hybride query met RRF worden meer van de reciproque van de gerangschikte documenten opgenomen in de resultaten, gezien de relatief kleinere score van de gerangschikte RRF-documenten, in tegenstelling tot pure vectorzoekopdrachten.
Single Vector Search: @search.score voor resultaten geordend op cosinus-similariteit (standaard vector gelijkenisafstandfunctie).
{
"@search.score": 0.8399121,
"HotelId": "49",
"HotelName": "Swirling Currents Hotel",
"Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
"Category": "Luxury",
"Address": {
"City": "Arlington"
}
}
Hybride zoekopdracht: @search.score voor hybride resultaten gerangschikt met behulp van Wederzijdse Rank Fusion.
{
"@search.score": 0.032786883413791656,
"HotelId": "49",
"HotelName": "Swirling Currents Hotel",
"Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
"Category": "Luxury",
"Address": {
"City": "Arlington"
}
}
Problemen met hybride query's oplossen
Gebruik de volgende tabel om veelvoorkomende problemen met hybride query's vast te stellen.
| Probleem | Mogelijke oorzaak | Resolutie |
|---|---|---|
| Lege resultaten | Naam van vectorveld komt niet overeen of ontbrekende indexgegevens | Controleer of fields in vectorQueries past bij een vectorveld in uw indexschema. Controleer of documenten vectorgegevens bevatten. |
| Lage RRF-scores | Normaal RRF-gedrag | RRF-scores zijn inherent lager dan overeenkomstenscores. Een score van 0,03 kan nog steeds duiden op een sterke match. |
| Vectorresultaten overheersen | Tekstquery presteert ondermaats | Verhogen maxTextRecallSize om meer BM25-resultaten op te nemen of vectorgewicht aan te passen. |
| Tekstresultaten overheersen | Vector-gelijkenis is te laag | Controleer de kwaliteit van het insluiten. Zorg ervoor dat queryvector hetzelfde model gebruikt als documentvectoren. |
| Semantische ranker retourneert minder resultaten | Onvoldoende invoerdocumenten | Ingesteld k op ten minste 50 wanneer u semantische rangschikking gebruikt. Controleer of filters niet te beperkend zijn. |
| Filter niet toegepast op vectoren | Alleen globaal filter gebruiken | Gebruik filterOverride voor vectorspecifieke filtering in de vectorquery (preview). |
| Onverwacht veld in resultaten |
select parameter ontbreekt |
Voeg select toe om op te geven welke velden moeten worden geretourneerd. Vectorvelden uitsluiten voor leesbaarheid. |
Verwante inhoud
- Overzicht van hybride zoekopdrachten
- Hybride zoekopdracht rangschikken met RRF
- Procedure voor vectorzoekopdrachten
- Semantische rangschikking
- Vectorzoekfilters
- Bekijk de vector demo code voor Python, C# of JavaScript