Pesquisa de texto completo no Azure Cosmos DB for NoSQL (versão prévia)
O Azure Cosmos DB for NoSQL agora oferece um poderoso recurso de Pesquisa de Texto Completo na versão prévia, projetado para aprimorar os recursos de pesquisa de seus aplicativos.
Observação
A Pesquisa de Texto e Híbrida Completa está em visualização inicial e pode não estar disponível em todas as regiões neste momento.
O que é pesquisa de texto completo?
O Azure Cosmos DB for NoSQL agora oferece um poderoso recurso de Pesquisa de Texto Completo na versão prévia, projetado para aprimorar seus recursos de consulta de dados. Esse recurso inclui técnicas avançadas de processamento de texto, como lematização, remoção de palavras e tokenização, permitindo pesquisas de texto eficientes e eficazes por meio de um índice de texto especializado. A pesquisa de texto completo também inclui a pontuação de texto completo com uma função que avalia a relevância dos documentos para uma determinada consulta de pesquisa. BM25, ou Melhor Correspondência 25, considera fatores como frequência de termos, frequência inversa de documentos 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: localize rapidamente produtos com base em descrições, revisõ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 por meio de conteúdo gerado pelo usuário, como postagens e comentários.
- RAG para chatbots: aprimore as respostas de chatbot recuperando informações relevantes de grandes corporações de texto, melhorando a precisão e a relevância das respostas.
- Aplicativos de IA de vários agentes: habilite vários agentes de IA para pesquisar e analisar de forma colaborativa grandes quantidades de dados de texto, fornecendo insights abrangentes e com nuances.
Como usar a pesquisa de texto completo
Observação
A Pesquisa de Texto e Híbrida Completa (versão prévia) pode não estar disponível em todas as regiões neste momento.
- Ative o recurso de visualização "Pesquisa de Texto e Híbrida Completa para NoSQL".
- Configure um contêiner com uma política de texto completo e um índice de texto completo.
- Insira seus dados com propriedades de texto.
- Execute consultas híbridas nos dados.
Habilitar o texto completo e a pesquisa híbrida para a versão prévia do recurso do NoSQL
Pesquisa de texto completo, pontuação de texto completo e pesquisa híbrida exigem habilitar a versão prévia do recurso em sua conta do Azure Cosmos DB for NoSQL antes de usar. Siga as etapas abaixo para se inscrever:
- Navegue até a página de recursos do Azure Cosmos DB for NoSQL.
- Selecione o painel "Recursos" no item de menu "Configurações".
- Selecione o recurso "API noSQL (versão prévia) de "Pesquisa híbrida e texto completo".
- Leia a descrição do recurso para confirmar se você deseja habilitá-lo.
- Selecione "Habilitar" para ativar a funcionalidade de indexação e pesquisa de vetor.
Configurar políticas e índices de contêiner para pesquisa híbrida
Para usar recursos completos de pesquisa de texto, 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 completo
Para cada propriedade de texto que você deseja configurar para pesquisa de texto completo, você deve declarar o path
da propriedade com texto e o 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 à matriz fullTextPolicy
:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Observação
O inglês ("en-us" como idioma) é o único idioma com suporte 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
Todas as operações de pesquisa de texto completo devem usar um índice de texto completo. Um índice de texto completo pode ser facilmente definido em qualquer política de índice do Azure Cosmos DB for 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, í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 for NoSQL:
FullTextContains
: retornatrue
se uma determinada cadeia de caracteres estiver contida na propriedade especificada de um documento. Isso é útil em uma cláusulaWHERE
quando você deseja garantir que palavras-chave específicas sejam incluídas nos documentos retornados pela consulta.FullTextContainsAll
: retornatrue
se todas as cadeias de caracteres fornecidas estiverem contidas na propriedade especificada de um documento. Isso é útil em uma cláusulaWHERE
quando você deseja garantir que várias palavras-chave sejam incluídas nos documentos retornados pela consulta.FullTextContainsAny
: retornatrue
se qualquer uma das cadeias de caracteres determinadas estiver contida na propriedade especificada de um documento. Isso é útil em uma cláusulaWHERE
quando você deseja garantir que pelo menos uma das palavras-chave esteja incluída nos documentos retornados pela consulta.FullTextScore
: retorna uma pontuação. Isso só pode ser usado em uma cláusulaORDER BY RANK
, em que os documentos retornados são ordenados pela classificação da pontuação de texto completo, com documentos mais relevantes (pontuação mais alta) na parte superior e documentos menos relevantes (pontuação mais baixa) na parte inferior.
Aqui estão alguns exemplos de cada função em uso.
FullTextContains
Neste exemplo, queremos obter os primeiros 10 resultados em que 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 em que as palavras-chave "vermelho" e "bicicleta" estão contidas na propriedade c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
Neste exemplo, queremos obter os primeiros 10 resultados em que 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 em que "montanha" e "bicicleta" estão incluídos e classificados por ordem de relevância. Ou seja, os documentos que têm esses termos com mais frequência devem aparecer mais alto na lista.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Importante
FullTextScore só pode ser usado na cláusula ORDER BY RANK
e não projetado na instrução SELECT
ou em uma cláusula WHERE
.