Configurare l'algoritmo di classificazione della somiglianza in Azure ricerca cognitivaConfigure the similarity ranking algorithm in Azure Cognitive Search

Azure ricerca cognitiva supporta due algoritmi di classificazione di somiglianza:Azure Cognitive Search supports two similarity ranking algorithms:

  • Algoritmo di somiglianza classico , usato da tutti i servizi di ricerca fino al 15 luglio 2020.A classic similarity algorithm, used by all search services up until July 15, 2020.
  • Implementazione dell'algoritmo BM25 di Okapi , usata in tutti i servizi di ricerca creati dopo il 15 luglio.An implementation of the Okapi BM25 algorithm, used in all search services created after July 15.

BM25 ranking è il nuovo valore predefinito perché tende a produrre classificazioni di ricerca che si allineano meglio con le aspettative degli utenti.BM25 ranking is the new default because it tends to produce search rankings that align better with user expectations. Viene fornita con parametri per l'ottimizzazione dei risultati in base a fattori quali le dimensioni del documento.It comes with parameters for tuning results based on factors such as document size.

Per i nuovi servizi creati dopo il 15 luglio 2020, BM25 viene usato automaticamente ed è l'unico algoritmo di somiglianza.For new services created after July 15, 2020, BM25 is used automatically and is the sole similarity algorithm. Se si tenta di impostare la somiglianza su ClassicSimilarity in un nuovo servizio, verrà restituito un errore HTTP 400 poiché tale algoritmo non è supportato dal servizio.If you try to set similarity to ClassicSimilarity on a new service, an HTTP 400 error will be returned because that algorithm is not supported by the service.

Per i servizi meno recenti creati prima del 15 luglio 2020, la somiglianza classica rimane l'algoritmo predefinito.For older services created before July 15, 2020, classic similarity remains the default algorithm. I servizi meno recenti possono eseguire l'aggiornamento a BM25 in base all'indice, come illustrato di seguito.Older services can upgrade to BM25 on a per-index basis, as explained below. Se si passa dal modello classico a BM25, è possibile che si verifichino alcune differenze nel modo in cui vengono ordinati i risultati della ricerca.If you are switching from classic to BM25, you can expect to see some differences how search results are ordered.

Nota

La classificazione semantica, attualmente in anteprima per i servizi standard in aree selezionate, rappresenta un ulteriore passo avanti nella produzione di risultati più rilevanti.Semantic ranking, currently in preview for standard services in selected regions, is an additional step forward in producing more relevant results. Diversamente dagli altri algoritmi, si tratta di una funzionalità di componente aggiuntivo che consente di scorrere un set di risultati esistente.Unlike the other algorithms, it is an add-on feature that iterates over an existing result set. Per altre informazioni, vedere Panoramica della ricerca semantica e classificazione semantica.For more information, see Semantic search overview and Semantic ranking.

Abilitare il Punteggio di BM25 nei servizi meno recentiEnable BM25 scoring on older services

Se si esegue un servizio di ricerca creato prima del 15 luglio 2020, è possibile abilitare BM25 impostando una proprietà di somiglianza nei nuovi indici.If you are running a search service that was created prior to July 15, 2020, you can enable BM25 by setting a Similarity property on new indexes. La proprietà viene esposta solo nei nuovi indici, pertanto se si desidera BM25 su un indice esistente, è necessario eliminare e ricompilare l'indice con una nuova proprietà di somiglianza impostata su "Microsoft. Azure. search. BM25Similarity".The property is only exposed on new indexes, so if want BM25 on an existing index, you must drop and rebuild the index with a new Similarity property set to "Microsoft.Azure.Search.BM25Similarity".

Quando esiste un indice con una proprietà di somiglianza, è possibile passare da BM25Similarity o ClassicSimilarity.Once an index exists with a Similarity property, you can switch between BM25Similarity or ClassicSimilarity.

I collegamenti seguenti descrivono la proprietà di somiglianza negli SDK di Azure.The following links describe the Similarity property in the Azure SDKs.

Libreria clientClient library Proprietà somiglianzaSimilarity property
.NET.NET SearchIndex. somiglianzaSearchIndex.Similarity
JavaJava SearchIndex. sesimilaritySearchIndex.setSimilarity
JavaScriptJavaScript SearchIndex. somiglianzaSearchIndex.Similarity
PythonPython Proprietà di somiglianza in SearchIndexsimilarity property on SearchIndex

Esempio RESTREST example

È anche possibile usare l' API REST, come illustrato nell'esempio seguente:You can also use the REST API, as the following example illustrates:

PUT https://[search 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"
    }
}

Imposta parametri BM25Set BM25 parameters

La somiglianza di BM25 aggiunge due parametri personalizzabili dall'utente per controllare il Punteggio di pertinenza calcolato.BM25 similarity adds two user customizable parameters to control the calculated relevance score. È possibile impostare i parametri BM25 durante la creazione dell'indice o come aggiornamento dell'indice se l'algoritmo BM25 è stato specificato durante la creazione dell'indice.You can set BM25 parameters during index creation, or as an index update if the BM25 algorithm was specified during index creation.

ProprietàProperty TypeType DescrizioneDescription
k1k1 d'acquistonumber Controlla la funzione di ridimensionamento tra la frequenza dei termini di ogni termine corrispondente e il Punteggio di pertinenza finale di una coppia di query documento.Controls the scaling function between the term frequency of each matching terms to the final relevance score of a document-query pair. I valori sono in genere compresi tra 0,0 e 3,0 e 1,2 come valore predefinito.Values are usually 0.0 to 3.0, with 1.2 as the default.

Il valore 0,0 rappresenta un "modello binario", in cui il contributo di un singolo termine corrispondente è lo stesso per tutti i documenti corrispondenti, indipendentemente dal numero di volte in cui il termine viene visualizzato nel testo, mentre un valore K1 maggiore consente al Punteggio di continuare ad aumentare quando nel documento sono presenti più istanze dello stesso termine.A value of 0.0 represents a "binary model", where the contribution of a single matching term is the same for all matching documents, regardless of how many times that term appears in the text, while a larger k1 value allows the score to continue to increase as more instances of the same term is found in the document.

L'uso di un valore K1 superiore può essere importante nei casi in cui ci si aspetta che più termini facciano parte di una query di ricerca.Using a higher k1 value can be important in cases where we expect multiple terms to be part of a search query. In questi casi, è consigliabile preferire i documenti che corrispondono a molti dei diversi termini di query in cui viene eseguita la ricerca sui documenti che corrispondono solo a una singola, più volte.In those cases, we might want to favor documents that match many of the different query terms being searched over documents that only match a single one, multiple times. Ad esempio, quando si esegue una query sull'indice per i documenti che contengono i termini "Apollo spaziale", potrebbe essere necessario ridurre il Punteggio di un articolo sulla mitologia greca che contiene il termine "Apollo" alcune dozzine di volte, senza menzionare il "volo", rispetto a un altro articolo che indica in modo esplicito sia "Apollo" che "volo" solo alcune volte.For example, when querying the index for documents containing the terms "Apollo Spaceflight", we might want to lower the score of an article about Greek Mythology that contains the term "Apollo" a few dozen times, without mentions of "Spaceflight", compared to another article that explicitly mentions both "Apollo" and "Spaceflight" a handful of times only.
bb d'acquistonumber Controlla il modo in cui la lunghezza di un documento influiscono sul punteggio di pertinenza.Controls how the length of a document affects the relevance score. I valori sono compresi tra 0 e 1, con 0,75 come valore predefinito.Values are between 0 and 1, with 0.75 as the default.

Il valore 0,0 indica che la lunghezza del documento non influenzerà il punteggio, mentre il valore 1,0 indica che l'impatto della frequenza dei termini sul punteggio di pertinenza verrà normalizzato in base alla lunghezza del documento.A value of 0.0 means the length of the document will not influence the score, while a value of 1.0 means the impact of term frequency on relevance score will be normalized by the document's length.

La normalizzazione della frequenza dei termini in base alla lunghezza del documento è utile nei casi in cui si vuole penalizzare i documenti più lunghi.Normalizing the term frequency by the document's length is useful in cases where we want to penalize longer documents. In alcuni casi, è più probabile che documenti più lunghi, ad esempio un romanzo completo, contengano molti termini irrilevanti rispetto a documenti molto più brevi.In some cases, longer documents (such as a complete novel), are more likely to contain many irrelevant terms, compared to much shorter documents.

Impostazione dei parametri K1 e bSetting k1 and b parameters

Per impostare o modificare i valori b o K1, aggiungerli all'oggetto somiglianza BM25.To set or modify b or k1 values, add them to the BM25 similarity object. Se si imposta o si modificano questi valori in un indice esistente, l'indice verrà portato offline per almeno alcuni secondi, causando un errore di indicizzazione e richieste di query attive.Setting or changing these values on an existing index will take the index offline for at least a few seconds, causing active indexing and query requests to fail. Di conseguenza, è necessario impostare il parametro "allowIndexDowntime = true" della richiesta di aggiornamento:Consequently, you should set the "allowIndexDowntime=true" parameter of the update request:

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=2020-06-30&allowIndexDowntime=true
{
    "similarity": {
        "@odata.type": "#Microsoft.Azure.Search.BM25Similarity",
        "b" : 0.5,
        "k1" : 1.3
    }
}

Vedi ancheSee also