Configure o algoritmo de classificação de semelhança na Pesquisa Cognitiva AzureConfigure the similarity ranking algorithm in Azure Cognitive Search

A Azure Cognitive Search suporta dois algoritmos de classificação de semelhança:Azure Cognitive Search supports two similarity ranking algorithms:

  • Um algoritmo clássico de semelhança, usado por todos os serviços de pesquisa até 15 de julho de 2020.A classic similarity algorithm, used by all search services up until July 15, 2020.
  • Uma implementação do algoritmo Okapi BM25, utilizado em todos os serviços de pesquisa criados após 15 de julho.An implementation of the Okapi BM25 algorithm, used in all search services created after July 15.

O ranking BM25 é o novo padrão porque tende a produzir rankings de pesquisa que se alinham melhor com as expectativas dos utilizadores.BM25 ranking is the new default because it tends to produce search rankings that align better with user expectations. Vem com parâmetros para afinação de resultados com base em fatores como o tamanho do documento.It comes with parameters for tuning results based on factors such as document size.

Para novos serviços criados após 15 de julho de 2020, o BM25 é utilizado automaticamente e é o único algoritmo de semelhança.For new services created after July 15, 2020, BM25 is used automatically and is the sole similarity algorithm. Se tentar definir semelhanças com a ClassicSimilarity num novo serviço, será devolvido um erro HTTP 400 porque esse algoritmo não é suportado pelo serviço.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.

Para os serviços mais antigos criados antes de 15 de julho de 2020, a semelhança clássica continua a ser o algoritmo padrão.For older services created before July 15, 2020, classic similarity remains the default algorithm. Os serviços mais antigos podem ser atualizados para BM25 por índice, como explicado abaixo.Older services can upgrade to BM25 on a per-index basis, as explained below. Se estiver a mudar de clássico para BM25, pode esperar ver algumas diferenças na forma como os resultados da pesquisa são encomendados.If you are switching from classic to BM25, you can expect to see some differences how search results are ordered.

Nota

O ranking semântico, atualmente em pré-visualização dos serviços standard em regiões selecionadas, constitui um passo adicional na produção de resultados mais relevantes.Semantic ranking, currently in preview for standard services in selected regions, is an additional step forward in producing more relevant results. Ao contrário dos outros algoritmos, é uma funcionalidade de complemento que itera sobre um conjunto de resultados existente.Unlike the other algorithms, it is an add-on feature that iterates over an existing result set. Para mais informações, consulte a visão geral da pesquisa semântica e o ranking semântico.For more information, see Semantic search overview and Semantic ranking.

Ativar a pontuação de BM25 em serviços mais antigosEnable BM25 scoring on older services

Se estiver a executar um serviço de pesquisa criado antes de 15 de julho de 2020, pode ativar o BM25 definindo uma propriedade de semelhança em novos índices.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. A propriedade só está exposta em novos índices, pelo que se quiser O BM25 num índice existente, deve cair e reconstruir o índice com uma nova propriedade de similaridade definida para "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".

Uma vez que exista um índice com uma propriedade de semelhança, pode alternar entre BM25Similarity ou ClassicSimilarity.Once an index exists with a Similarity property, you can switch between BM25Similarity or ClassicSimilarity.

Os seguintes links descrevem a propriedade de semelhança nos Azure SDKs.The following links describe the Similarity property in the Azure SDKs.

Biblioteca de clienteClient library Propriedade de semelhançaSimilarity property
.NET.NET SearchIndex.SimilaridadeSearchIndex.Similarity
JavaJava SearchIndex.setSimilaritySearchIndex.setSimilarity
JavaScriptJavaScript SearchIndex.SimilaridadeSearchIndex.Similarity
PythonPython propriedade de semelhança no SearchIndexsimilarity property on SearchIndex

Exemplo DE REPOUSOREST example

Também pode utilizar a API REST,como ilustra o seguinte exemplo: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"
    }
}

Definir parâmetros BM25Set BM25 parameters

A semelhança BM25 adiciona dois parâmetros personalizáveis ao utilizador para controlar a pontuação de relevância calculada.BM25 similarity adds two user customizable parameters to control the calculated relevance score. Pode definir parâmetros BM25 durante a criação de índices ou como uma atualização de índice se o algoritmo BM25 foi especificado durante a criação do índice.You can set BM25 parameters during index creation, or as an index update if the BM25 algorithm was specified during index creation.

PropriedadeProperty TipoType DescriptionDescription
k1k1 númeronumber Controla a função de escala entre a frequência do termo de cada termos correspondentes à pontuação de relevância final de um par de consultas de documento.Controls the scaling function between the term frequency of each matching terms to the final relevance score of a document-query pair. Os valores são geralmente de 0,0 a 3,0, com 1.2 como padrão.Values are usually 0.0 to 3.0, with 1.2 as the default.

Um valor de 0.0 representa um "modelo binário", em que a contribuição de um único termo correspondente é a mesma para todos os documentos correspondentes, independentemente do número de vezes que esse termo aparece no texto, enquanto um valor k1 maior permite que a pontuação continue a aumentar à medida que mais instâncias do mesmo termo são encontradas no documento.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.

A utilização de um valor k1 superior pode ser importante nos casos em que esperamos que vários termos sejam parte de uma consulta de pesquisa.Using a higher k1 value can be important in cases where we expect multiple terms to be part of a search query. Nesses casos, podemos querer favorecer documentos que correspondam a muitos dos diferentes termos de consulta que estão a ser pesquisados sobre documentos que apenas correspondem a um único, várias vezes.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. Por exemplo, ao consultar o índice de documentos que contenham os termos "Apollo Spaceflight", talvez queiramos baixar a pontuação de um artigo sobre mitologia grega que contém o termo "Apollo" algumas dezenas de vezes, sem menções de "Spaceflight", em comparação com outro artigo que menciona explicitamente tanto "Apollo" como "Spaceflight" apenas algumas vezes.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 númeronumber Controla como o comprimento de um documento afeta a pontuação de relevância.Controls how the length of a document affects the relevance score. Os valores estão entre 0 e 1, com 0,75 como o padrão.Values are between 0 and 1, with 0.75 as the default.

Um valor de 0.0 significa que o comprimento do documento não influenciará a pontuação, enquanto um valor de 1.0 significa que o impacto da frequência de prazo na pontuação de relevância será normalizado pelo comprimento do 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.

Normalizar a frequência do termo pelo comprimento do documento é útil nos casos em que queremos penalizar documentos mais longos.Normalizing the term frequency by the document's length is useful in cases where we want to penalize longer documents. Em alguns casos, documentos mais longos (como um romance completo), são mais propensos a conter muitos termos irrelevantes, em comparação com documentos muito mais curtos.In some cases, longer documents (such as a complete novel), are more likely to contain many irrelevant terms, compared to much shorter documents.

Definição de parâmetros k1 e bSetting k1 and b parameters

Para definir ou modificar valores b ou k1, adicione-os ao objeto de semelhança BM25.To set or modify b or k1 values, add them to the BM25 similarity object. A definição ou alteração destes valores num índice existente irá desativar o índice durante pelo menos alguns segundos, fazendo com que os pedidos de indexação e consulta ativos falhem.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. Consequentemente, deve definir o parâmetro "allowIndexDowntime=true" do pedido de atualização: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
    }
}

Ver tambémSee also