Konfigurieren der BM25-Relevanzbewertung

In diesem Artikel erfahren Sie, wie Sie den BM25-Relevanzbewertungsalgorithmus konfigurieren, der von Azure AI Search für Volltextsuchabfragen verwendet wird. Außerdem wird erläutert, wie BM25 für ältere Suchdienste aktiviert wird.

BM25 gilt für:

  • Abfragen, die den search-Parameter für die Volltextsuche verwenden, für Textfelder mit einer searchable-Zuordnung.
  • Die Bewertung ist auf searchFields oder auf alle searchable-Felder festgelegt, wenn searchFields null ist.

Die Suchmaschine verwendet BM25, um eine @searchScore für jede Übereinstimmung in einer bestimmten Abfrage zu berechnen. Übereinstimmende Dokumente werden nach ihrer Suchbewertung bewertet, wobei die wichtigsten Ergebnisse in der Abfrageantwort zurückgegeben werden. Es ist möglich, einige Bewertungsvariationen in Ergebnissen zu erhalten, auch aus derselben Abfrage, die über denselben Suchindex ausgeführt wird, aber in der Regel sind diese Variationen klein und ändern nicht die Gesamtrangfolge der Ergebnisse.

BM25 hat Standardwerte für die Gewichtung von Begriffshäufigkeit und Dokumentlänge. Sie können diese Eigenschaften anpassen, wenn die Standardeinstellungen nicht für Ihren Inhalt geeignet sind. Konfigurationsänderungen betreffen nur einzelne Indizes, was bedeutet, dass Sie Relevanzbewertungen basierend auf den Merkmalen jedes Index anpassen können.

Standardbewertungsalgorithmus

Je nach Alter Ihres Suchdienstes unterstützt Azure AI Search zwei Bewertungsalgorithmen für eine Volltextsuchabfrage:

  • Okapi BM25 Algorithmus (ab dem 15. Juli 2020)
  • Klassischer Ähnlichkeitsalgorithmus (vor dem 15. Juli 2020)

Die BM25-Rangfolge ist die neue Standardeinstellung, da sie tendenziell Suchrangfolgen erzeugt, die den Erwartungen der Benutzer besser entsprechen. Sie verfügt über Parameter, mit denen Ergebnisse auf der Basis von Faktoren, wie z. B. die Dokumentgröße, optimiert werden können. Für Suchdienste, die nach Juli 2020 erstellt wurden, ist BM25 der einzige Bewertungsalgorithmus. Wenn Sie versuchen, Ähnlichkeit für einen neuen Dienst auf ClassicSimilarity festzulegen, wird ein HTTP 400-Fehler zurückgegeben, da dieser Algorithmus durch den Dienst nicht unterstützt wird.

Für ältere Dienste bleibt die klassische Ähnlichkeit der Standardalgorithmus. Ältere Dienste können pro Index auf BM25 aktualisiert werden. Wenn Sie von „klassisch“ zu „BM25“ wechseln, sind einige Unterschiede in der Anordnung der Suchergebnisse zu erwarten.

Festlegen von BM25-Parametern

Die BM25-Bewertung stellt zwei Parameter zur Optimierung der Relevanzbewertungsberechnung bereit.

  1. Verwenden Sie eine Create- oder UpdateIndex-Anforderung, um BM25-Parameter festzulegen:

    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. Wenn der Index live ist, fügen Sie den allowIndexDowntime=true-URI-Parameter an die Anforderung an, wie im vorherigen Beispiel gezeigt.

    Da Azure AI Search keine Updates für einen Liveindex erlaubt, müssen Sie den Index in den Offlinemodus versetzen, damit die Parameter hinzugefügt werden können. Indizierungs- und Abfrageanforderungen schlagen fehl, während der Index offline ist. Der Ausfall dauert so lange, wie die Aktualisierung des Index, normalerweise nicht mehr als einige Sekunden. Wenn das Update abgeschlossen ist, wird der Index automatisch wieder angezeigt.

  3. Legen Sie "b" und "k1" auf benutzerdefinierte Werte fest und senden Sie dann die Anforderung.

    Eigenschaft Type Beschreibung
    k1 Zahl Steuert die Skalierungsfunktion, die bestimmt, wie weit die endgültige Relevanzbewertung eines Dokument/Abfrage-Paars von der Häufigkeit der einzelnen übereinstimmenden Begriffe abhängt. Die Werte liegen in der Regel zwischen 0,0 und 3,0. Der Standardwert ist 1,2.

    Ein Wert von 0,0 stellt ein „Binärmodell“ dar, bei dem der Beitrag eines einzelnen übereinstimmenden Ausdrucks für alle übereinstimmenden Dokumente gleich ist, unabhängig davon, wie oft dieser Ausdruck im Text angezeigt wird. Größere k1-Werte ermöglichen es den Score weiter zu erhöhen, wenn mehr Instanzen desselben Ausdrucks im Dokument gefunden werden.

    Die Verwendung eines größeren k1-Werts ist in Fällen wichtig, in denen mehrere Ausdrücke in einer Suchabfrage enthalten sind. In diesen Fällen sollten Sie Dokumente bevorzugen, die mehr Abfragebegriffen entsprechen, gegenüber Dokumenten, die nur mehrmals einem einzelnen Ausdruck entsprechen. Wenn Sie z. B. den Index nach Dokumenten abfragen, welche die Begriffe „Apollo Spaceflight“ enthalten, möchten wir die Bewertung eines Artikels über griechische Mythologie, der den Begriff „Apollo“ ein paar Dutzend Mal enthält, ohne dass „Spaceflight“ vorkommt, gegenüber einem Artikel reduzieren, in dem sowohl „Apollo“ als auch „Spaceflight“ nur einige wenige Male explizit erwähnt werden.
    b Zahl Steuert, wie sich die Länge eines Dokuments auf die Relevanzbewertung auswirkt. Die Werte liegen zwischen 0 und 1. Der Standardwert ist 0,75.

    Ein Wert von 0,0 bedeutet, dass sich die Länge des Dokuments nicht auf die Bewertung auswirkt. Ein Wert von 1,0 bedeutet, dass die Auswirkung der Ausdruckshäufigkeit auf die Relevanzbewertung durch die Länge des Dokuments normalisiert wird.

    Das Normalisieren der Begriffshäufigkeit durch die Länge des Dokuments ist nützlich, wenn Sie längere Dokumente zurückstellen möchten. In einigen Fällen enthalten längere Dokumente (z. B. ein kompletter Roman) im Vergleich zu deutlich kürzeren Dokumenten eher viele irrelevante Begriffe.

Aktivieren der BM25-Bewertung für ältere Dienste

Wenn Sie einen Suchdienst ausführen, der ab März 2014 bis zum 15. Juli 2020 erstellt wurde, können Sie BM25 aktivieren, indem Sie für neue Indizes eine „Ähnlichkeitseigenschaft“ festlegen. Die Eigenschaft wird nur für neue Indizes verfügbar gemacht. Wenn Sie also BM25 für einen vorhandenen Index benötigen, müssen Sie den Index löschen und ihn neu erstellen, wobei eine Ähnlichkeitseigenschaft auf Microsoft.Azure.Search.BM25Similarity festgelegt wird.

Sobald ein Index mit einer Ähnlichkeitseigenschaft vorhanden ist, können Sie zwischen BM25Similarity und ClassicSimilarity hin und herwechseln.

Unter den folgenden Links wird die Ähnlichkeitseigenschaft in den Azure SDKs beschrieben.

Clientbibliothek Ähnlichkeitseigenschaft
.NET SearchIndex.Similarity
Java SearchIndex.setSimilarity
JavaScript SearchIndex.Similarity
Python Ähnlichkeitseigenschaft für SearchIndex

Beispiel für REST

Sie können auch die REST-API verwenden. Im folgenden Beispiel wird ein neuer Index mit der auf BM25 festgelegten „Ähnlichkeit“ erstellt:

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

Siehe auch