Share via


Relevantiescores in hybride zoekopdrachten met behulp van Recicimaal Rank Fusion (RRF)

Wederzijdse Rank Fusion (RRF) is een algoritme waarmee de zoekscores van meerdere, eerder gerangschikte resultaten worden geëvalueerd om een uniforme resultatenset te produceren. In Azure AI Search wordt RRF gebruikt wanneer er twee of meer query's parallel worden uitgevoerd. Elke query produceert een gerangschikte resultatenset en RRF wordt gebruikt om de classificaties samen te voegen en te homogeniseren in één resultatenset, geretourneerd in het queryantwoord. Voorbeelden van scenario's waarbij RRF altijd wordt gebruikt, zijn hybride zoekopdrachten en meerdere vectorquery's die gelijktijdig worden uitgevoerd.

RRF is gebaseerd op het concept van wederzijdse rang, wat de inverse is van de rang van het eerste relevante document in een lijst met zoekresultaten. Het doel van de techniek is om rekening te houden met de positie van de items in de oorspronkelijke rangschikkingen en hogere urgentie te geven aan items die in meerdere lijsten zijn gerangschikt. Dit kan helpen bij het verbeteren van de algehele kwaliteit en betrouwbaarheid van de uiteindelijke rangschikking, waardoor het nuttiger is voor de taak om meerdere geordende zoekresultaten te combineren.

Hoe RRF-classificatie werkt

RRF werkt door de zoekresultaten van meerdere methoden te gebruiken, een wederzijdse classificatiescore toe te wijzen aan elk document in de resultaten en vervolgens de scores te combineren om een nieuwe classificatie te maken. Het concept is dat documenten die worden weergegeven op de bovenste posities op meerdere zoekmethoden waarschijnlijk relevanter zijn en hoger moeten worden gerangschikt in het gecombineerde resultaat.

Hier volgt een eenvoudige uitleg van het RRF-proces:

  1. Verkrijg gerangschikte zoekresultaten van meerdere query's die parallel worden uitgevoerd.

  2. Wijs wederzijdse rangschikkingsscores toe voor resultaat in elk van de gerangschikte lijsten. RRF genereert een nieuwe @search.score voor elke overeenkomst in elke resultatenset. Voor elk document in de zoekresultaten wijst de engine een wederzijdse rangschikkingsscore toe op basis van de positie in de lijst. De score wordt berekend als 1/(rank + k), waar rank bevindt zich de positie van het document in de lijst en k is een constante, die experimenteel is waargenomen om het beste uit te voeren als deze is ingesteld op een kleine waarde zoals 60. Houd er rekening mee dat deze k waarde een constante is in het RRF-algoritme en volledig gescheiden is van het k aantal dichtstbijzijnde buren.

  3. Scores combineren. Voor elk document somt de engine de wederzijdse classificatiescores op die zijn verkregen uit elk zoeksysteem, waardoor een gecombineerde score voor elk document wordt geproduceerd. 

  4. De engine rangschikt documenten op basis van gecombineerde scores en sorteert ze. De resulterende lijst is de gefuseerde classificatie.

Alleen velden die zijn gemarkeerd als searchable in de index of searchFields in de query, worden gebruikt voor scoren. Alleen velden die zijn gemarkeerd als retrievable, of velden die zijn opgegeven in select de query, worden geretourneerd in zoekresultaten, samen met hun zoekscore.

Parallelle queryuitvoering

RRF wordt gebruikt wanneer er meer dan één query wordt uitgevoerd. In de volgende voorbeelden ziet u querypatronen waarin parallelle uitvoering van query's plaatsvindt:

  • Een volledige tekstquery, plus één vectorquery (eenvoudig hybride scenario), is gelijk aan twee queryuitvoeringen.
  • Een volledige tekstquery, plus één vectorquery die gericht is op twee vectorvelden, is gelijk aan drie queryuitvoeringen.
  • Een volledige-tekstquery, plus twee vectorquery's die gericht zijn op vijf vectorvelden, is gelijk aan 11 queryuitvoeringen

Scores in een hybride zoekresultaten

Wanneer de resultaten worden gerangschikt, @search.score bevat de eigenschap de waarde die wordt gebruikt om de resultaten te ordenen. Scores worden gegenereerd door classificatiealgoritmen die per methode variëren. Elk algoritme heeft een eigen bereik en grootte.

In de volgende grafiek wordt de score-eigenschap geïdentificeerd die wordt geretourneerd voor elke overeenkomst, het algoritme en het bereik van scores voor elk algoritme voor relevantieclassificatie.

Zoekmethode Parameter Score-algoritme Bereik
zoeken in volledige tekst @search.score BM25-algoritme Geen bovengrens.
vector zoeken @search.score HNSW-algoritme, met behulp van de metrische overeenkomst die is opgegeven in de HNSW-configuratie. 0.333 - 1.00 (Cosinus), 0 tot 1 voor Euclidean en DotProduct.
hybride zoekopdracht @search.score RRF-algoritme Bovengrens wordt gebonden door het aantal query's dat wordt gefuseerd, waarbij elke query een maximum van ongeveer 1 aan de RRF-score bijdraagt. Als u bijvoorbeeld drie query's samenvoegt, worden hogere RRF-scores geproduceerd dan als er slechts twee zoekresultaten worden samengevoegd.
semantische rangschikking @search.rerankerScore Semantische rangschikking 0.00 - 4.00

Semantische classificatie neemt niet deel aan RRF. De score (@search.rerankerScore) wordt altijd afzonderlijk gerapporteerd in het queryantwoord. Semantische classificatie kan volledige tekst en hybride zoekresultaten opnieuw rangschikkingen, ervan uitgaande dat deze resultaten velden bevatten met semantisch rijke inhoud.

Aantal gerangschikte resultaten in een hybride queryantwoord

Als u geen paginering gebruikt, retourneert de zoekmachine standaard de top 50 hoogste rangschikkingsovereenkomsten voor zoeken in volledige tekst en de meest vergelijkbare k overeenkomsten voor vectorzoekopdrachten. In een hybride query top bepaalt u het aantal resultaten in het antwoord. Op basis van de standaardinstellingen worden de top 50 hoogste gerangschikte overeenkomsten van de gecombineerde resultatenset geretourneerd.

Vaak vindt de zoekmachine meer resultaten dan top en k. Als u meer resultaten wilt retourneren, gebruikt u de pagingparameters topen skipnext. Paging is hoe u het aantal resultaten op elke logische pagina bepaalt en door de volledige nettolading navigeert.

Zoeken in volledige tekst is onderhevig aan een maximumlimiet van 1000 overeenkomsten (zie API-antwoordlimieten). Zodra er 1000 overeenkomsten zijn gevonden, zoekt de zoekmachine niet meer naar meer.

Zie Hoe u met zoekresultaten kunt werken voor meer informatie.

Diagram van een werkstroom voor het scoren van zoekopdrachten

Het volgende diagram illustreert een hybride query die trefwoorden en vectorzoekopdrachten aanroept, met een boost door middel van scoreprofielen en semantische rangschikking.

Diagram of prefilters.

Een query die de vorige werkstroom genereert, kan er als volgt uitzien:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2023-11-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
   "queryType":"semantic",
   "search":"hello world",
   "searchFields":"field_a, field_b",
   "vectorQueries": [
       {
           "kind":"vector",
           "vector": [1.0, 2.0, 3.0],
           "fields": "field_c, field_d"
       },
       {
           "kind":"vector",
           "vector": [4.0, 5.0, 6.0],
           "fields": "field_d, field_e"
       }
   ],
   "scoringProfile":"my_scoring_profile"
}

Zie ook