Relevancia a kulcsszókeresésben (BM25 pontozás)

Ez a cikk a teljes szöveges keresés keresési pontszámainak kiszámításához használt BM25 relevanciapontozási algoritmust ismerteti. A BM25 relevanciája kizárólag a teljes szöveges keresésre használható. A szűrőlekérdezések, az automatikus kiegészítés és a javasolt lekérdezések, a helyettesítő vagy a homályos keresési lekérdezések nem pontozhatók vagy rangsorolhatók relevancia szempontjából.

Az Azure AI Search a következő pontozási algoritmusokat biztosítja a teljes szöveges kereséshez:

Algoritmus Használat Tartomány
BM25Similarity Kijavítottuk a 2020 júliusa után létrehozott összes keresési szolgáltatás algoritmusát. Ezt az algoritmust konfigurálhatja, de nem válthat régebbire (klasszikusra). Korlátos.
ClassicSimilarity Régebbi keresési szolgáltatásokban jelenik meg. A BM25-be bejelentkezve indexenkénti algoritmust választhat. 0 < 1,00

A BM25 és a klasszikus egyaránt TF-IDF-szerű lekérési függvények, amelyek a kifejezés gyakoriságát (TF) és az inverz dokumentum gyakoriságát (IDF) használják változóként az egyes dokumentumlekérdezési párok relevanciájának kiszámításához, amelyet aztán a rangsorolási eredményekhez használnak. Bár a klasszikushoz fogalmilag hasonló, a BM25 olyan valószínűségi információlekérésben gyökerezik, amely intuitívabb egyezéseket hoz létre a felhasználói kutatások alapján.

A BM25 speciális testreszabási lehetőségeket kínál, például lehetővé teszi a felhasználó számára, hogy eldöntse, hogyan skálázható a relevanciapont a egyeztetett kifejezések kifejezési gyakoriságával. További információ: A pontozási algoritmus konfigurálása.

Feljegyzés

Ha 2020 júliusa előtt létrehozott keresési szolgáltatást használ, a pontozási algoritmus valószínűleg az előző alapértelmezett, ClassicSimilarityamelyet indexenként frissíthet. Részletekért lásd: BM25-pontozás engedélyezése a régebbi szolgáltatásokon .

Az alábbi videószegmens gyorsan elérhetővé válik az Azure AI Searchben használt általánosan elérhető rangsorolási algoritmusok magyarázatához. A teljes videót a további háttérért tekintheti meg.

A BM25 rangsorolásának működése

A relevanciapontszámozás egy keresési pontszám (@search.score) számítására utal, amely egy elem relevanciájának mutatójaként szolgál az aktuális lekérdezés kontextusában. A tartomány nem kötött. Minél magasabb a pontszám, annál relevánsabb az elem.

A keresési pontszám kiszámítása a sztringbemenet és maga a lekérdezés statisztikai tulajdonságai alapján történik. Az Azure AI Search megkeresi a keresési kifejezésekkel egyező dokumentumokat (a keresési módtól függően néhányat vagy az összeset), előnyben részesítve a keresési kifejezés számos példányát tartalmazó dokumentumokat. A keresési pontszám még magasabb lesz, ha a kifejezés ritka az adatindexben, de gyakori a dokumentumban. A számítási relevancia ezen megközelítésének alapja a TF-IDF vagy a kifejezés frekvencia inverz dokumentum gyakorisága.

A keresési pontszámok a találatkészlet egészében megismételhetők. Ha több találat is azonos keresési pontszámmal rendelkezik, az azonos pontszámú elemek sorrendje nincs meghatározva, és nem stabil. Futtassa újra a lekérdezést, és előfordulhat, hogy az elemek eltolódnak, különösen akkor, ha az ingyenes szolgáltatást vagy a több replikával rendelkező számlázható szolgáltatást használja. Két azonos pontszámú elem esetén nincs garancia arra, hogy előbb megjelenik az egyik.

Ha meg szeretné szakítani a döntetlent az ismétlődő pontszámok között, hozzáadhat egy $orderby záradékot az első sorrendhez pontszám szerint, majd rendezhet egy másik rendezhető mező szerint (például $orderby=search.score() desc,Rating desc). További információ: $orderby.

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.

Feljegyzés

Az A @search.score = 1 nem pontozott vagy nem rangsorolt eredményhalmazt jelöl. A pontszám minden eredményben egységes. A nem pontozott eredmények akkor fordulnak elő, ha a lekérdezési űrlap zavaros keresés, helyettesítő vagy regex lekérdezés, vagy üres keresés (search=*néha szűrőkkel párosítva, ahol a szűrő az elsődleges eszköz egyezés visszaadására).

Pontszámok szöveges eredményekben

Az eredmények rangsorolásakor @search.score a tulajdonság az eredmények rendezéséhez használt értéket tartalmazza.

Az alábbi táblázat az egyes egyezéseken, algoritmusokon és tartományokon visszaadott pontozási tulajdonságot azonosítja.

Keresési módszer Paraméter Pontozási algoritmus Tartomány
teljes szöveges keresés @search.score BM25 algoritmus az indexben megadott paraméterekkel. Korlátos.

Pontszám variációja

A keresési pontszámok általános relevanciaérzetet közvetítenek, amely tükrözi az egyezés erősségét az azonos eredményhalmazban lévő többi dokumentumhoz képest. A pontszámok azonban nem mindig konzisztensek az egyik lekérdezéstől a másikig, így a lekérdezések használatakor kis eltéréseket tapasztalhat a keresési dokumentumok sorrendjében. Ennek okaira több magyarázat is létezik.

Ok Leírás
Adatingadozás Az index tartalma a dokumentumok hozzáadása, módosítása vagy törlésekor változik. A kifejezés gyakorisága az indexfrissítések idővel történő feldolgozásakor változik, ami hatással van az egyező dokumentumok keresési pontszámára.
Több replika A több replikát használó szolgáltatások esetében a rendszer az egyes replikákra párhuzamosan bocsát ki lekérdezéseket. A keresési pontszám kiszámításához használt indexstatisztikákat replikánként számítja ki a rendszer, az eredményeket egyesítve és rendezve a lekérdezési válaszban. A replikák többnyire egymás tükörképei, de a statisztikák az állapot kis eltérései miatt eltérhetnek. Előfordulhat például, hogy egy replika törölte a statisztikájukhoz hozzájáruló dokumentumokat, amelyeket más replikákból egyesítettek. A replikánkénti statisztikák különbségei általában észrevehetőbbek a kisebb indexekben. Erről a feltételről további információt a kapacitástervezési dokumentációban található keresési egységek, replikák, partíciók és szegmensek című témakörben talál.
Azonos pontszámok Ha több dokumentum is ugyanazt a pontszámot használja, azok bármelyike megjelenhet először.

Pontozási statisztikák és ragadós munkamenetek

A méretezhetőség érdekében az Azure AI Search horizontálisan osztja el az indexeket horizontálisan, horizontálisan, ami azt jelenti, hogy az index egyes részei fizikailag elkülönülnek egymástól.

Alapértelmezés szerint egy dokumentum pontszáma a szegmensen belüli adatok statisztikai tulajdonságai alapján lesz kiszámítva. Ez a megközelítés általában nem jelent problémát nagy adathalmazok esetében, és jobb teljesítményt nyújt, mint az összes szegmens információi alapján kiszámítani a pontszámot. Ennek a teljesítményoptimalizálásnak a használata két nagyon hasonló dokumentumot (vagy akár azonos dokumentumot) okozhat, amelyek eltérő relevanciapontszámmal végződhetnek, ha különböző szegmensekbe kerülnek.

Ha inkább az összes szegmens statisztikai tulajdonságai alapján szeretné kiszámítani a pontszámot, ezt lekérdezési paraméterként (scoringStatistics=globalvagy a lekérdezési kérelem törzsparamétereként) is megteheti"scoringStatistics": "global".

POST https://[service name].search.windows.net/indexes/hotels/docs/search?api-version=2020-06-30
{
    "search": "<query string>",
    "scoringStatistics": "global"
}

A használat scoringStatistics biztosítja, hogy az ugyanabban a replikában lévő összes szegmens ugyanazt az eredményt adja. Ennek ellenére a különböző replikák kissé eltérhetnek egymástól, mivel mindig frissülnek az index legújabb módosításaival. Bizonyos esetekben előfordulhat, hogy a felhasználók konzisztensebb eredményeket szeretnének kapni egy lekérdezési munkamenet során. Ilyen esetekben a lekérdezések részeként is megadható sessionId . Ez sessionId egy egyedi sztring, amelyet egy egyedi felhasználói munkamenetre hivatkozva hoz létre.

POST https://[service name].search.windows.net/indexes/hotels/docs/search?api-version=2020-06-30
{
    "search": "<query string>",
    "sessionId": "<string>"
}

Mindaddig, amíg ugyanazt sessionId használja, a rendszer minden tőle telhetőt megtesz annak érdekében, hogy ugyanazt a replikát célozza meg, ezzel növelve a felhasználók által látott eredmények konzisztenciáját.

Feljegyzés

Ugyanazon sessionId értékek ismételt újrafelhasználása megzavarhatja a kérések terheléselosztását a replikák között, és hátrányosan befolyásolhatja a keresési szolgáltatás teljesítményét. A munkamenet-azonosítóként használt érték nem kezdődhet "_" karakterrel.

Relevanciahangolás

Az Azure AI Searchben konfigurálhatja a BM25-algoritmus paramétereit, és hangolhatja a keresési relevanciát, és növelheti a keresési pontszámokat az alábbi mechanizmusokkal:

Módszer Implementáció Leírás
Pontozási algoritmus konfigurálása Keresési index
Pontozási profilok Keresési index Adjon meg feltételeket az egyezés keresési pontszámának a tartalom jellemzői alapján történő növeléséhez. Előfordulhat például, hogy a bevételi potenciáljuk alapján szeretné növelni a találatokat, előléptetheti az újabb elemeket, vagy növelheti a túl hosszú készletben lévő elemeket. A pontozási profil az indexdefiníció része, amely súlyozott mezőkből, függvényekből és paraméterekből áll. A meglévő indexeket a pontozási profil módosításaival frissítheti anélkül, hogy az index újraépítése történne.
Szemantikai rangsorolás Lekérdezési kérelem Gépi olvasási megértést alkalmaz a keresési eredményekre, előtérbe hozva a szemantikailag relevánsabb találatokat.
featuresMode paraméter Lekérdezési kérelem Ezt a paramétert többnyire egy pontszám kicsomagolására használják, de olyan kódban is használható, amely egyéni pontozási megoldást biztosít.

featuresMode paraméter (előzetes verzió)

A Keresési dokumentumok kérések új featuresMode paraméterrel rendelkeznek, amely részletesebb információkat nyújt a relevanciáról a mező szintjén. Míg a számítás a @searchScore teljes dokumentumra vonatkozik (mennyire releváns ez a dokumentum a lekérdezés kontextusában), a featuresMode segítségével információkat kaphat az egyes mezőkről, egy @search.features struktúrában kifejezve. A struktúra tartalmazza a lekérdezésben használt összes mezőt (vagy adott mezőket a lekérdezésben a searchFieldsen keresztül, vagy az indexben kereshetőként tulajdonított összes mezőt). Minden mezőhöz a következő értékeket kapja:

  • A mezőben található egyedi tokenek száma
  • Hasonlósági pontszám vagy a mező tartalmának a lekérdezési kifejezéshez viszonyított hasonlóságának mértéke
  • Kifejezés gyakorisága vagy a lekérdezési kifejezés számának száma a mezőben

A "leírás" és a "cím" mezőket megcélozó lekérdezések esetében a következőhöz @search.features hasonló válasz jelenhet meg:

"value": [
 {
    "@search.score": 5.1958685,
    "@search.features": {
        "description": {
            "uniqueTokenMatches": 1.0,
            "similarityScore": 0.29541412,
            "termFrequency" : 2
        },
        "title": {
            "uniqueTokenMatches": 3.0,
            "similarityScore": 1.75451557,
            "termFrequency" : 6
        }
    }
 }
]

Ezeket az adatpontokat egyéni pontozási megoldásokban használhatja fel, vagy az információk segítségével hibakeresési relevanciával kapcsolatos problémákat kereshet.

Rangsorolt találatok száma teljes szöveges 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 paraméterrel top kisebb vagy nagyobb számú elemet adhat vissza (egyetlen válaszban akár 1000-et is). 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.

Ha több vagy kevesebb eredményt szeretne visszaadni, használja a lapozási paramétereket topés skipnexta . A lapozással meghatározhatja az egyes logikai lapok eredményeinek számát, és navigálhat a teljes hasznos adatban. További információ: Hogyan használható a keresési eredmények?

Lásd még