Relevanciapontozás hibrid keresésben a Kölcsönös rangsor fúzió (RRF) használatával

A kölcsönös rangsor fúziója (RRF) egy algoritmus, amely kiértékeli a keresési pontszámokat több, korábban rangsorolt találatból, hogy egységes eredményhalmazt állítson elő. Az Azure AI Searchben az RRF akkor használatos, ha két vagy több lekérdezés fut párhuzamosan. Minden lekérdezés rangsorolt eredményhalmazt hoz létre, és az RRF használatával egyesíti és homogenizálja a rangsorokat egyetlen eredményhalmazba, amelyet a lekérdezés válasza ad vissza. Példák olyan esetekre, amikor az RRF-et mindig használják, például a hibrid keresés és az egyidejűleg végrehajtó több vektoros lekérdezés.

Az RRF a kölcsönös rang fogalmán alapul, amely az első releváns dokumentum rangsorának inverze a keresési eredmények listájában. A technika célja, hogy figyelembe vegye az eredeti rangsorban szereplő elemek pozícióját, és nagyobb jelentőséget adjon a több listában rangsorolt elemeknek. Ez segíthet javítani a végső rangsor általános minőségét és megbízhatóságát, így hasznosabbá teheti a több rendezett keresési találat összeolvadásának feladatát.

Az RRF rangsorolásának működése

Az RRF úgy működik, hogy több metódusból veszi a keresési eredményeket, kölcsönös rangsor pontszámot rendel hozzá az eredmények minden dokumentumához, majd kombinálja a pontszámokat egy új rangsor létrehozásához. A koncepció az, hogy a több keresési módszer toplistájában megjelenő dokumentumok valószínűleg relevánsabbak lesznek, és az összesített eredményben magasabbra kell rangsorolni.

Az RRF folyamatának egyszerű magyarázata:

  1. Rangsorolt keresési eredmények lekérése több, párhuzamosan végrehajtó lekérdezésből.

  2. A rangsorolt listákban az eredményhez rendeljen kölcsönös rangpontszámokat. Az RRF minden találathalmazban új @search.score egyezést hoz létre. A keresési eredményekben szereplő összes dokumentum esetében a motor egy kölcsönös rangsorpontot rendel hozzá a listában elfoglalt helye alapján. A pontszámot a program úgy számítja ki, hogy 1/(rank + k)hol rank van a dokumentum helye a listában, és k egy állandó, amelyet kísérletileg megfigyeltek, hogy a legjobban teljesítsen, ha egy 60-ashoz hasonló kis értékre van állítva. Vegye figyelembe, hogy ez k az érték az RRF algoritmus állandója, és teljesen elkülönül attól, amely a k legközelebbi szomszédok számát szabályozza.

  3. Pontszámok egyesítése. Minden dokumentum esetében a motor összegzi az egyes keresési rendszerektől kapott kölcsönös rangpontszámokat, így az egyes dokumentumok összesített pontszámot eredményeznek. 

  4. A motor összesített pontszámok alapján rangsorolja a dokumentumokat, és rendezi őket. Az eredményül kapott lista az egyesített rangsor.

A rendszer csak az indexben vagy searchFields a lekérdezésben megjelölt searchable mezőket használja a pontozáshoz. Csak a lekérdezésben select megadottként retrievablemegjelölt mezők vagy mezők jelennek meg a keresési eredményekben, a keresési pontszámukkal együtt.

Lekérdezések párhuzamos végrehajtása

Az RRF akkor használatos, ha egynél több lekérdezés végrehajtása történik. Az alábbi példák olyan lekérdezési mintákat mutatnak be, ahol párhuzamos lekérdezés-végrehajtás történik:

  • A teljes szöveges lekérdezés, valamint egy vektoros lekérdezés (egyszerű hibrid forgatókönyv) két lekérdezésvégrehajtással egyenlő.
  • Egy teljes szöveges lekérdezés, valamint egy vektoros lekérdezés, amely két vektormezőt céloz meg, három lekérdezésvégrehajtással egyenlő.
  • Egy teljes szöveges lekérdezés, valamint két vektoros lekérdezés, amely öt vektormezőt céloz meg, 11 lekérdezésvégrehajtással egyenlő

Pontszámok hibrid keresési eredményekben

Az eredmények rangsorolásakor @search.score a tulajdonság az eredmények rendezéséhez használt értéket tartalmazza. A pontszámokat az egyes metódusok eltérő rangsorolási algoritmusai generálják. Minden algoritmusnak saját tartománya és mérete van.

Az alábbi diagram az egyes egyezéseken, algoritmusokon és pontszámtartományokon visszaadott pontozási tulajdonságot azonosítja az egyes relevancia-rangsorolási algoritmusokhoz.

Keresési módszer Paraméter Pontozási algoritmus Tartomány
teljes szöveges keresés @search.score BM25 algoritmus Nincs felső korlát.
vektoros keresés @search.score HNSW-algoritmus a HNSW-konfigurációban megadott hasonlósági metrikával. 0,333 - 1,00 (koszinusz), 0-1 az Euklideszihez és a DotProducthoz.
hibrid keresés @search.score RRF-algoritmus A felső korlátot az egyesítendő lekérdezések száma határolja, és mindegyik lekérdezés legfeljebb 1-et ad hozzá az RRF-pontszámhoz. Három lekérdezés egyesítése például magasabb RRF-pontszámot eredményezne, mintha csak két keresési találatot egyesítene.
szemantikai rangsorolás @search.rerankerScore Szemantikai rangsorolás 0.00 - 4.00

A szemantikai rangsor nem vesz részt az RRF-ben. A pontszám (@search.rerankerScore) mindig külön van bejelentve a lekérdezési válaszban. A szemantikai rangsorolás a teljes szöveges és hibrid keresési eredményeket is újraküldheti, feltéve, hogy ezek az eredmények szemantikailag gazdag tartalmakat tartalmazó mezőket tartalmaznak.

Rangsorolt eredmények száma hibrid lekérdezési válaszban

Ha nem lapozást használ, a keresőmotor alapértelmezés szerint a teljes szöveges keresés 50 legmagasabb rangsorolási egyezését, a vektorkereséshez pedig a leginkább hasonló k találatokat adja vissza. Hibrid lekérdezésben top határozza meg a válaszban szereplő eredmények számát. Az alapértelmezett értékek alapján a rendszer az egyesített eredményhalmaz 50 legmagasabb rangsorolt egyezését adja vissza.

A keresőmotor gyakran több találatot talál, mint top és k. További eredmények visszaadásához használja a lapozási paramétereket topskipés nexta . A lapozással meghatározhatja az egyes logikai lapok eredményeinek számát, és navigálhat a teljes hasznos adatban.

A teljes szöveges keresésre legfeljebb 1000 egyezés vonatkozik (lásd az API válaszkorlátait). Ha 1000 találatot talál, a keresőmotor már nem keres többet.

További információ: Hogyan használható a keresési eredmények?

Keresési pontozási munkafolyamat diagramja

Az alábbi ábra egy olyan hibrid lekérdezést mutat be, amely kulcsszó- és vektorkeresést hív meg, a pontozási profilok és a szemantikai rangsorolás segítségével.

Diagram of prefilters.

Az előző munkafolyamatot létrehozó lekérdezések a következőképpen nézhetnek ki:

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

Kapcsolódó információk