BM25 relevanciapontozás konfigurálása

Ebből a cikkből megtudhatja, hogyan konfigurálhatja az Azure AI Search által a teljes szöveges keresési lekérdezésekhez használt BM25 relevanciapontozási algoritmust . Azt is ismerteti, hogyan engedélyezheti a BM25-öt a régebbi keresési szolgáltatásokban.

A BM25 a következőkre vonatkozik:

  • A paramétert search a teljes szöveges kereséshez használó lekérdezések a hozzárendeléssel searchable rendelkező szövegmezőkben.
  • A pontozás hatóköre a null értékű mezőkre searchFieldsvagy az összes searchable mezőre searchFields terjed ki.

A keresőmotor a BM25 használatával számít ki egy @searchScore egy adott lekérdezés minden egyezéséhez. Az egyező dokumentumok a keresési pontszámuk szerint vannak rangsorolva, és a lekérdezési válaszban a legjobb eredmények jelennek meg. Előfordulhat, hogy a találatok között van némi eltérés , akár ugyanazon lekérdezésből is, amely ugyanazon a keresési indexen fut, de ezek a változatok általában kicsik, és nem változtatják meg a találatok általános rangsorolását.

A BM25 alapértelmezett értékekkel rendelkezik a kifejezés gyakoriságának és a dokumentum hosszának súlyozásához. Ezeket a tulajdonságokat testre szabhatja, ha az alapértelmezett értékek nem felelnek meg a tartalomnak. A konfigurációmódosítások hatóköre az egyes indexekre terjed ki, ami azt jelenti, hogy az egyes indexek jellemzői alapján módosíthatja a relevanciapontozást.

Alapértelmezett pontozási algoritmus

A keresési szolgáltatás korától függően az Azure AI Search két pontozó algoritmust támogat egy teljes szöveges keresési lekérdezéshez:

  • Okapi BM25 algoritmus (2020. július 15. után)
  • Klasszikus hasonlósági algoritmus (2020. július 15. előtt)

A BM25 rangsorolása az alapértelmezett, mert általában olyan keresési rangsorokat hoz létre, amelyek jobban igazodnak a felhasználói elvárásokhoz. Olyan paramétereket tartalmaz az eredmények finomhangolásához, mint például a dokumentum mérete. A 2020 júliusa után létrehozott keresési szolgáltatások esetében a BM25 az egyetlen pontozó algoritmus. Ha megpróbál "hasonlóságot" beállítani a ClassicSimilarity értékre egy új szolgáltatásban, a rendszer HTTP 400-as hibát ad vissza, mert a szolgáltatás nem támogatja ezt az algoritmust.

A régebbi szolgáltatások esetében a klasszikus hasonlóság marad az alapértelmezett algoritmus. A régebbi szolgáltatások indexenként frissíthetnek a BM25-re . Ha klasszikusról BM25-re vált, akkor a keresési eredmények sorrendjében számíthat néhány különbségre.

BM25-paraméterek beállítása

A BM25 rangsorolása két paramétert biztosít a relevanciapont-számítás finomhangolásához.

  1. BM25-paraméterek beállításához használjon index-létrehozási vagy frissítési kérést:

    PUT [service-name].search.windows.net/indexes/[index-name]?api-version=2020-06-30&allowIndexDowntime=true
    {
        "similarity": {
            "@odata.type": "#Microsoft.Azure.Search.BM25Similarity",
            "b" : 0.75,
            "k1" : 1.2
        }
    }
    
  2. Ha az index élő, fűzze hozzá az allowIndexDowntime=true URI paramétert a kérelemhez, amely az előző példában látható.

    Mivel az Azure AI Search nem engedélyezi az élő indexek frissítéseit, offline állapotba kell helyeznie az indexet, hogy a paraméterek hozzáadhatók legyenek. Az indexelés és a lekérdezési kérelmek sikertelenek, amíg az index offline állapotban van. A kimaradás időtartama az index frissítéséhez szükséges idő, általában legfeljebb néhány másodperc. Ha a frissítés befejeződött, az index automatikusan visszatér.

  3. Állítsa be és "k1" állítsa be "b" az egyéni értékeket, majd küldje el a kérést.

    Tulajdonság Type Description
    k1 number Szabályozza a skálázási függvényt az egyes egyező kifejezések kifejezési gyakorisága és a dokumentum-lekérdezés pár végső relevanciapontszáma között. Az értékek általában 0,0 és 3,0 között vannak, alapértelmezett értéke 1,2.

    A 0,0 érték egy "bináris modellt" jelöl, ahol egyetlen egyező kifejezés hozzájárulása minden egyező dokumentum esetében azonos, függetlenül attól, hogy a kifejezés hányszor jelenik meg a szövegben. A nagyobb k1 értékek lehetővé teszik, hogy a pontszám tovább növekedjen, mivel több azonos kifejezésű példány található a dokumentumban.

    A nagyobb k1 érték használata olyan esetekben fontos, amikor egy keresési lekérdezés több kifejezést is tartalmaz. Ezekben az esetekben érdemes lehet előnyben részesíteni a több lekérdezési feltételnek megfelelő dokumentumokat, olyan dokumentumok esetében, amelyek csak egyetlen kifejezésnek felelnek meg, többször. Ha például az "Apolló spaceflight" kifejezéseket kérdezi le, érdemes lehet csökkenteni egy görög mitológiáról szóló cikk pontszámát, amely néhány tucatszor tartalmazza az "Apolló" kifejezést, a "Spaceflight" említése nélkül, egy másik cikkhez képest, amely kifejezetten megemlíti az "Apolló" és a "Spaceflight" szót is, csak néhányszor.
    b number Meghatározza, hogy a dokumentum hossza hogyan befolyásolja a relevanciapontszámot. Az értékek 0 és 1 között vannak, alapértelmezett értéke 0,75.

    A 0,0 érték azt jelenti, hogy a dokumentum hossza nem befolyásolja a pontszámot. Az 1,0 érték azt jelenti, hogy a kifejezés gyakorisága a relevanciapontra gyakorolt hatását a dokumentum hosszával normalizálja.

    A kifejezés gyakoriságának a dokumentum hosszával való normalizálása akkor hasznos, ha hosszabb dokumentumokat szeretne büntetni. Bizonyos esetekben a hosszabb dokumentumok (például egy teljes regény) nagyobb valószínűséggel tartalmaznak sok irreleváns kifejezést a rövidebb dokumentumokhoz képest.

BM25-pontozás engedélyezése régebbi szolgáltatásokon

Ha 2014 márciusa és 2020. július 15. között létrehozott keresőszolgáltatást futtat, engedélyezheti a BM25-öt egy "hasonlóság" tulajdonság beállításával az új indexeken. A tulajdonság csak új indexeken érhető el, ezért ha meglévő indexen szeretné a BM25-öt használni, akkor az indexet egy "hasonlóság" tulajdonsággal Microsoft.Azure.Search.BM25Similaritykell újraépítenie.

Ha egy index "hasonlóság" tulajdonsággal rendelkezik, válthat vagy válthat.BM25SimilarityClassicSimilarity

Az alábbi hivatkozások az Azure SDK-k Hasonlóság tulajdonságát ismertetik.

Ügyfélkódtár Hasonlóság tulajdonság
.NET SearchIndex.Similarity
Java SearchIndex.setSimilarity
JavaScript SearchIndex.Similarity
Python hasonlóság tulajdonság a SearchIndexben

REST-példa

A REST API-t is használhatja. Az alábbi példa egy új indexet hoz létre a BM25 értékre beállított "hasonlóság" tulajdonsággal:

PUT [service-name].search.windows.net/indexes/[index name]?api-version=2020-06-30
{
    "name": "indexName",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true
        },
        {
            "name": "name",
            "type": "Edm.String",
            "searchable": true,
            "analyzer": "en.lucene"
        },
        ...
    ],
    "similarity": {
        "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
    }
}

Kapcsolódó információk