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

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

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 egyetlen, egységes eredményhalmazt állítson elő. A Azure AI Keresés az RRF-et használja, ha két vagy több lekérdezés fut párhuzamosan, például hibrid lekérdezések és több vektoros lekérdezés. Minden egyes lekérdezés rangsorolt eredményhalmazt hoz létre, és az RRF egyesíti és homogenizálja ezeket a rangsorokat a lekérdezési válasz egyetlen eredménykészletében.

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 a megközelítés 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. Több, párhuzamosan futó lekérdezés rangsorolt keresési eredményeinek lekérése.

  2. A rangsorolt listákban az eredményekre vonatkozó kölcsönös rangpontszámokat rendelheti hozzá. 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 állandó. A kísérletek azt mutatják, hogy az algoritmus akkor teljesít a legjobban, ha egy kis értékre, például 60-ra állít be k . 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 searchable a lekérdezésben megjelölt searchFields mezőket használja a pontozáshoz. Csak a retrievable-val megjelölt mezők, illetve a lekérdezésben a select elemben megadott mezők kerülnek visszaadásra 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és-végrehajtásnak felel meg.

Pontszámok a hibrid keresési eredményekben

Az eredmények rangsorolásakor a @search.score 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 táblázat az egyes egyezésekhez és algoritmusokhoz visszaadott pontozási tulajdonságot, valamint az egyes relevancia-rangsorolási algoritmusok pontszámtartományait mutatja be. További információ és a pontozási munkafolyamat diagramja: Relevancia az Azure AI Keresésben.

Keresési módszer Parameter Pontozási algoritmus Range
teljes szöveges keresés @search.score BM25 algoritmus Nincs felső korlát.
vektor 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 minden lekérdezés legfeljebb körülbelül az 1/k RRF-pontszámhoz járul hozzá (ez az k RRF-algoritmus paramétere, nem pedig a vektoros lekérdezés). Három lekérdezés egyesítése például magasabb RRF-pontszámot eredményez, mintha csak két keresési találatot egyesítenének.
szemantikai rangsorolás @search.rerankerScore Szemantikai rangsorolás 0.00 - 4.00

A szemantikai rangsor az eredmények RRF-egyesítését követően következik be. A pontszám (@search.rerankerScore) mindig külön van bejelentve a lekérdezési válaszban. A szemantikai rangsoroló képes a teljes szöveges és hibrid keresési eredmények újraírására, feltéve, hogy ezek az eredmények olyan mezőket tartalmaznak, amelyek szemantikailag gazdag tartalommal rendelkeznek. A tiszta vektoros lekérdezéseket vissza tudja vonni, ha a keresési dokumentumok olyan szövegmezőket tartalmaznak, amelyek szemantikailag releváns tartalmat tartalmaznak.

Keresési pontszám szétbontása részpontszámokra

A keresési pontszám dekonstruálható a részpontszámok megtekintéséhez. Vektoros lekérdezések esetén ezek az információk segíthetnek meghatározni a vektorok súlyozásánakmegfelelő értékét, vagy beállíthatja a minimális küszöbértékeket.

A részpontszámok megtekintéséhez:

  • Használja a Search Documents REST API-t vagy a szolgáltatást biztosító Azure SDK-csomagot.

  • Módosítsa a lekérési kérelmet, és adjon hozzá egy új debug paramétert, amelynek értéke vector vagy — szemantikus rangsoroló használata esetén — semantic, illetve all.

Íme egy példa egy hibrid lekérdezésre, amely hibakeresési módban részpontszámokat ad vissza:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . .
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "k": 10
        },
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . .
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City",
    "debug": "vector",
    "top": 10
}

Súlyozott pontszámok

A vektoros lekérdezéseket súlyozással is növelheti vagy csökkentheti a hibrid lekérdezések fontosságát.

Ne feledje, hogy egy adott dokumentum RRF-jének kiszámításakor a keresőmotor az adott dokumentum rangját tekinti meg az egyes találathalmazokhoz, ahol megjelenik. Tegyük fel, hogy egy dokumentum három külön keresési eredményben jelenik meg, ahol az eredmények két vektoros lekérdezésből és egy szöveges BM25-rangsorolt lekérdezésből származnak. A dokumentum pozíciója minden eredményben eltérő.

Találat Pozíció a találatok között @search.score súlyszorzó @search.score (súlyozott)
vektoreredmények egy 1. pozíció 0.8383955 0.5 0.41919775
vektoreredmények kettő 5. pozíció 0.81514114 2.0 1.63028228
BM25-eredmények 10. pozíció 0.8577363 NA 0.8577363

A dokumentum pozíciója az egyes eredményhalmazokban egy kezdeti pontszámnak felel meg, amely hozzáadódik a dokumentum végső RRF-pontszámának létrehozásához.

Ha vektoros súlyozást ad hozzá, a kezdeti pontszámok súlyozási szorzót kapnak, amely növeli vagy csökkenti a pontszámot. Az alapértelmezett érték 1,0, ami azt jelenti, hogy nincs súlyozás, és a kezdeti pontszámot az RRF-pontozásban használják. Ha azonban 0,5-ös súlyt ad hozzá, a pontszám csökken, és ez az eredmény kevésbé lesz fontos az összesített rangsorban. Ezzel szemben, ha 2,0-s súlyt ad hozzá, a pontszám nagyobb tényezővé válik a teljes RRF-pontszámban.

Ebben a példában a @search.score (súlyozott) értékek az RRF rangsorolási modellre kerülnek.

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 adja vissza, a vektoros kereséshez pedig a leginkább hasonló k találatokat. Hibrid lekérdezésben top határozza meg a válaszban szereplő eredmények számát. Az alapértelmezett beállítások szerint az egyesített eredményhalmaz 50 legmagasabb rangú találata kerül visszaadásra.

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ás segítségével meghatározhatja az egyes logikai oldalakon megjelenő találatok számát, és végiglépkedhet a teljes adathalmazon. Nagyobb értékekre (az alapértelmezett érték 1000) állítható bemaxTextRecallSize, hogy a hibrid lekérdezés szöveges oldaláról több eredményt adjon vissza.

Alapértelmezés szerint 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?