Konfigurera BM25-relevansbedömning

I den här artikeln får du lära dig hur du konfigurerar algoritmen för BM25-relevansbedömning som används av Azure AI Search för fulltextsökningsfrågor. Den förklarar också hur du aktiverar BM25 på äldre söktjänster.

BM25 gäller för:

  • Frågor som använder parametern search för fulltextsökning, på textfält som har en searchable attribution.
  • Poängsättningen är begränsad till searchFields, eller till alla searchable fält om searchFields den är null.

Sökmotorn använder BM25 för att beräkna en @searchScore för varje matchning i en viss fråga. Matchande dokument rangordnas efter deras sökpoäng, där de främsta resultaten returneras i frågesvaret. Det är möjligt att få en viss poängvariant i resultat, även från samma fråga som körs över samma sökindex, men vanligtvis är dessa variationer små och ändrar inte den övergripande resultatordningen.

BM25 har standardvärden för viktningstermfrekvens och dokumentlängd. Du kan anpassa dessa egenskaper om standardinställningarna inte passar ditt innehåll. Konfigurationsändringar begränsas till enskilda index, vilket innebär att du kan justera relevansbedömningen baserat på egenskaperna för varje index.

Standardbedömningsalgoritm

Beroende på din söktjänsts ålder stöder Azure AI Search två bedömningsalgoritmer för en fulltextsökningsfråga:

  • Okapi BM25-algoritm (efter 15 juli 2020)
  • Klassisk likhetsalgoritm (före 15 juli 2020)

BM25-rangordning är standard eftersom det tenderar att producera sökrankningar som överensstämmer bättre med användarnas förväntningar. Den innehåller parametrar för att justera resultat baserat på faktorer som dokumentstorlek. För söktjänster som skapats efter juli 2020 är BM25 den enda bedömningsalgoritmen. Om du försöker ange "likhet" med ClassicSimilarity för en ny tjänst returneras ett HTTP 400-fel eftersom den algoritmen inte stöds av tjänsten.

För äldre tjänster förblir klassisk likhet standardalgoritmen. Äldre tjänster kan uppgradera till BM25 per index. När du byter från klassisk till BM25 kan du förvänta dig att se vissa skillnader i hur sökresultaten sorteras.

Ange BM25-parametrar

BM25-rankning innehåller två parametrar för justering av relevanspoängsberäkningen.

  1. Använd en begäran om att skapa eller uppdatera index för att ange BM25-parametrar:

    PUT [service-name].search.windows.net/indexes/[index-name]?api-version=2024-07-01&allowIndexDowntime=true
    {
        "similarity": {
            "@odata.type": "#Microsoft.Azure.Search.BM25Similarity",
            "b" : 0.75,
            "k1" : 1.2
        }
    }
    
  2. Om indexet är live lägger du till allowIndexDowntime=true URI-parametern i begäran, som visas i föregående exempel.

    Eftersom Azure AI Search inte tillåter uppdateringar av ett liveindex måste du ta indexet offline så att parametrarna kan läggas till. Indexering och frågebegäranden misslyckas när indexet är offline. Avbrottstiden är den tid det tar att uppdatera indexet, vanligtvis inte mer än flera sekunder. När uppdateringen är klar kommer indexet tillbaka automatiskt.

  3. Ange "b" och "k1" till anpassade värden och skicka sedan begäran.

    Property Type Beskrivning
    k1 Nummer Styr skalningsfunktionen mellan termfrekvensen för varje matchande termer till den slutliga relevanspoängen för ett dokumentfrågepar. Värdena är vanligtvis 0,0 till 3,0, med 1,2 som standard.

    Värdet 0,0 representerar en "binär modell", där bidraget för en enda matchande term är detsamma för alla matchande dokument, oavsett hur många gånger termen visas i texten. Med större k1-värden kan poängen fortsätta att öka eftersom fler instanser av samma term finns i dokumentet.

    Att använda ett större k1-värde är viktigt i fall där flera termer ingår i en sökfråga. I dessa fall kanske du vill gynna dokument som matchar fler frågetermer, jämfört med dokument som bara matchar en enda term, flera gånger. När du till exempel frågar efter termerna "Apollo Spaceflight" kanske du vill sänka poängen för en artikel om grekisk mytologi som innehåller termen "Apollo" några dussin gånger, utan att nämna "Spaceflight", i förhållande till en annan artikel som uttryckligen nämner både "Apollo" och "Spaceflight" en handfull gånger.
    b Nummer Styr hur längden på ett dokument påverkar relevanspoängen. Värdena är mellan 0 och 1, med 0,75 som standard.

    Värdet 0,0 innebär att dokumentets längd inte påverkar poängen. Värdet 1,0 innebär att effekten av termfrekvens på relevanspoäng normaliseras av dokumentets längd.

    Det är användbart att normalisera termens frekvens med dokumentets längd i fall där du vill straffa längre dokument. I vissa fall är det mer sannolikt att längre dokument (till exempel en fullständig roman) innehåller många irrelevanta termer jämfört med kortare dokument.

Aktivera BM25-poängsättning för äldre tjänster

Om du kör en söktjänst som skapades från mars 2014 till 15 juli 2020 kan du aktivera BM25 genom att ange en egenskap för "likhet" för nya index. Egenskapen exponeras endast för nya index, så om du vill ha BM25 på ett befintligt index måste du släppa och återskapa indexet med egenskapen "similarity" inställd på Microsoft.Azure.Search.BM25Similarity.

När ett index finns med egenskapen "likhet" kan du växla mellan BM25Similarity eller ClassicSimilarity.

Följande länkar beskriver egenskapen Similarity i Azure SDK:er.

Klientbibliotek Likhetsegenskap
.NET SearchIndex.Similarity
Java SearchIndex.setSimilarity
JavaScript SearchIndex.Similarity
Python likhetsegenskap i SearchIndex

REST-exempel

Du kan också använda REST-API:et. I följande exempel skapas ett nytt index med egenskapen "similarity" inställd på BM25:

PUT [service-name].search.windows.net/indexes/[index name]?api-version=2024-07-01
{
    "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"
    }
}

Se även