Partilhar via


Pesquisa de texto completo no Azure Cosmos DB para NoSQL (visualização)

O Azure Cosmos DB para NoSQL agora oferece um poderoso recurso de Pesquisa de Texto Completo na visualização, projetado para aprimorar os recursos de pesquisa de seus aplicativos.

Nota

A Pesquisa Híbrida de Texto Completo está em pré-visualização antecipada e pode não estar disponível em todas as regiões no momento.

O Azure Cosmos DB para NoSQL agora oferece um poderoso recurso de Pesquisa de Texto Completo na visualização, projetado para aprimorar seus recursos de consulta de dados. Este recurso inclui técnicas avançadas de processamento de texto, como derivação, remoção de palavras paradas e tokenização, permitindo pesquisas de texto eficientes e eficazes através de um índice de texto especializado. A pesquisa de texto completo também inclui pontuação de texto completo com uma função que avalia a relevância dos documentos para uma determinada consulta de pesquisa. BM25, ou Best Matching 25, considera fatores como frequência de termos, frequência de documentos inversos e comprimento do documento para pontuar e classificar documentos. Isso ajuda a garantir que os documentos mais relevantes apareçam na parte superior dos resultados da pesquisa, melhorando a precisão e a utilidade das pesquisas de texto.

A Pesquisa de Texto Completo é ideal para uma variedade de cenários, incluindo:

  • Comércio eletrônico: encontre rapidamente produtos com base em descrições, avaliações e outros atributos de texto.
  • Gerenciamento de conteúdo: pesquise com eficiência artigos, blogs e documentos.
  • Suporte ao cliente: recupere tíquetes de suporte relevantes, perguntas frequentes e artigos da base de dados de conhecimento.
  • Conteúdo do usuário: analise e pesquise o conteúdo gerado pelo usuário, como postagens e comentários.
  • RAG para chatbots: melhore as respostas do chatbot recuperando informações relevantes de corpora de texto grande, melhorando a precisão e a relevância das respostas.
  • Aplicativos de IA multiagente: permita que vários agentes de IA pesquisem e analisem de forma colaborativa grandes quantidades de dados de texto, fornecendo insights abrangentes e matizados.

Nota

Texto completo & Pesquisa híbrida (visualização) pode não estar disponível em todas as regiões no momento.

  1. Habilite o recurso de visualização "Full Text & Hybrid Search for NoSQL".
  2. Configure um contêiner com uma política de texto completo e um índice de texto completo.
  3. Insira seus dados com propriedades de texto.
  4. Execute consultas híbridas nos dados.

Habilite o texto completo e a pesquisa híbrida para o recurso de visualização do NoSQL

A pesquisa de texto completo, a pontuação de texto completo e a pesquisa híbrida exigem a habilitação do recurso de visualização em sua conta do Azure Cosmos DB para NoSQL antes de usar. Siga os passos abaixo para se inscrever:

  1. Navegue até a página de recursos do Azure Cosmos DB para NoSQL.
  2. Selecione o painel "Recursos" no item de menu "Configurações".
  3. Selecione o recurso "Full-Text & Hybrid Search for NoSQL API (preview)".
  4. Leia a descrição do recurso para confirmar que deseja ativá-lo.
  5. Selecione "Ativar" para ativar a indexação vetorial e a capacidade de pesquisa.

Captura de ecrã da funcionalidade de pré-visualização de pesquisa híbrida e de texto completo no portal do Azure.

Para usar os recursos de pesquisa de texto completo, primeiro você precisará definir duas políticas:

  • Uma política de texto completo no nível do contêiner que define quais caminhos conterão texto para as novas funções do sistema de consulta de texto completo.
  • Um índice de texto completo adicionado à política de indexação que permite uma pesquisa eficiente.

Política de texto integral

Para cada propriedade de texto que você deseja configurar para pesquisa de texto completo, você deve declarar a path da propriedade com texto e a language do texto. Uma política de texto completo simples pode ser:

{
   "defaultLanguage": "en-US",
   "fullTextPaths": [
       {
           "path": "/text",
           "language": "en-US"
       }
   ]
}

A definição de vários caminhos de texto é feita facilmente adicionando outro elemento à fullTextPolicy matriz:

{
   "defaultLanguage": "en-US",
   "fullTextPaths": [
       {
           "path": "/text1",
           "language": "en-US"
       },
       {
           "path": "/text2",
           "language": "en-US"
       }
   ]
}

Nota

Inglês ("en-us" como o idioma) é o único idioma suportado no momento.

Importante

Atualmente, não há suporte para caracteres curinga (*, []) na política de texto completo ou no índice de texto completo.

Índice de texto completo

Qualquer operação de pesquisa de texto completo deve utilizar um índice de texto completo. Um índice de texto completo pode ser facilmente definido em qualquer política de índice do Azure Cosmos DB para NoSQL de acordo com o exemplo abaixo.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        }
    ]
}

Assim como acontece com as políticas de texto completo, os índices de texto completo podem ser definidos em vários caminhos.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        },
        {
            "path": "/text2"
        }
    ]
}

Consultas de pesquisa de texto completo

As operações de pesquisa e pontuação de texto completo são executadas usando as seguintes funções do sistema na linguagem de consulta do Azure Cosmos DB para NoSQL:

  • FullTextContains: Retorna true se uma determinada cadeia de caracteres estiver contida na propriedade especificada de um documento. Isso é útil em uma WHERE cláusula quando você deseja garantir que palavras-chave específicas sejam incluídas nos documentos retornados pela consulta.
  • FullTextContainsAll: Retorna true se todas as cadeias de caracteres fornecidas estiverem contidas na propriedade especificada de um documento. Isso é útil em uma WHERE cláusula quando você deseja garantir que várias palavras-chave sejam incluídas nos documentos retornados pela consulta.
  • FullTextContainsAny: Retorna true se qualquer uma das cadeias de caracteres fornecidas estiver contida na propriedade especificada de um documento. Isso é útil em uma WHERE cláusula quando você deseja garantir que pelo menos uma das palavras-chave seja incluída nos documentos retornados pela consulta.
  • FullTextScore: Devolve uma pontuação. Isso só pode ser usado em uma ORDER BY RANK cláusula, onde os documentos devolvidos são ordenados pela classificação da pontuação de texto completo, com os documentos mais relevantes (pontuação mais alta) na parte superior e os documentos menos relevantes (pontuação mais baixa) na parte inferior.

Aqui estão alguns exemplos de cada função em uso.

FullTextContém

Neste exemplo, queremos obter os primeiros 10 resultados onde a palavra-chave "bicicleta" está contida na propriedade c.text.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")

FullTextContainsAll

Neste exemplo, queremos obter os primeiros 10 resultados onde as palavras-chave "vermelho" e "bicicleta" estão contidas na propriedade c.text.

SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")

FullTextContémAny

Neste exemplo, queremos obter os primeiros 10 resultados onde as palavras-chave "vermelho" e "bicicleta" ou "skate" estão contidas na propriedade c.text.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")

FullTextScore

Neste exemplo, queremos obter os primeiros 10 resultados onde "montanha" e "bicicleta" estão incluídos, e classificados por ordem de relevância. Ou seja, documentos que possuem esses termos com mais frequência devem aparecer mais acima na lista.

SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])

Importante

FullTextScore só pode ser usado na ORDER BY RANK cláusula e não projetado na SELECT instrução ou em uma WHERE cláusula.