Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ /
Centro de Arquitetura Atlas
/ / /

Sugestões relevantes durante a digitação

Adicione sugestões de digitação rápidas e relevantes ao seu aplicativo, incorporando o contexto do usuário e fatores de classificação específicos do domínio.

Casos de uso: Gerenciamento de conteúdo, Catálogo

Setores: Varejo

Produtos: MongoDB Atlas, MongoDB Atlas Vector Search

A funcionalidade conforme você digita — também conhecida como preenchimento automático, sugestão automática ou pesquisa preditiva — geralmente se refere à correspondência de caracteres de baixo nível, em vez de uma solução abrangente e criada especificamente. Essa funcionalidade ajuda você a navegar rapidamente para o conteúdo relevante desejado. Procurar o filme "Matriz" digitando "matr" na barra de pesquisa é um exemplo de funcionalidade conforme você digita.

A Vector Search e a pesquisa de texto completo são ótimas para combinar conteúdo semanticamente quando há uma query completa ou correspondências de palavras muito próximas. No entanto, uma funcionalidade integrada conforme você digita pode retornar resultados relevantes com ainda menos caracteres e mais distância entre a entrada de texto e a palavra-chave de destino. Essa solução lexical facilita a correspondência parcial e fornece resultados relevantes e sensíveis ao contexto.

A solução de sugestão conforme você digita é arquiteturalmente direta. Conforme você digita, as solicitações são enviadas ao Atlas Search, que retorna resultados relevantes. A arquitetura é estruturada em torno de uma coleção especializada de entities e as queries correspondentes.

Arquitetura de solução com pesquisa progressiva
clique para ampliar

Figura 1. Arquitetura de solução com pesquisa progressiva

Cada sugestão apresentada ao usuário representa uma entidade exclusiva do seu domínio. As entidades devem ser modeladas como documentos individuais em uma coleção especializada e ajustada para a sugestibilidade conforme você digita.

A collection principal geralmente representa um tipo de entidade como documentos e outras entidades de domínio como campos de metadados ou documentos incorporados. Por exemplo, considere utilizar os dados de filmes de amostra disponíveis no Atlas. Conforme você digita, a pesquisa sugere nomes de filmes. No entanto, você também pode pesquisar nomes de membros do elenco. Por exemplo, você pode encontrar filmes estrelados por Kaanu Reevers digitando apenas "kea".

O modelo de dados tem o seguinte esquema:

  • _id: ID exclusivo para esta collection no formato <type>-<natural id>.

  • type: tipo de entidade/ objeto , por exemplo filme, marca, produto pessoal e categoria.

  • name: o nome ou título da entidade, que geralmente seria exclusivo por tipo.

É importante que os documentos da entidade tenham identificadores estáveis e exclusivos, pois as entidades são atualizadas regularmente a partir da collection principal. Atribuir um type a cada entidade permite filtragem (sugerir membros do elenco em uma pesquisa específica de atores), agrupamento (organizar as sugestões por tipo) ou aumentar por tipo (filmes de peso superiores aos nomes dos membros do elenco).

Modelar entidades diretamente como documentos individuais permite que cada uma carregue campos de metadados opcionais para auxiliar na classificação, na exibição, na filtragem ou no agrupamento.

O modelo de documento alimenta o campo name por meio de uma configuração de índice sofisticada, que divide os valores de diversas maneiras adequadas para consultas de várias maneiras. O poder dessa solução vem da união de várias estratégias de indexação e query.

{
"_id":"title-The Matrix",
"name":"The Matrix",
"type":"title"
}

Primeiro, identifique as entidades sugiríveis em seus dados. No cenário de filmes, eles incluiriam títulos de filmes, nomes de membros do elenco e talvez gêneros e nomes de diretor também.

A base desse sistema de sugestão conforme você digita é a seguinte:

  1. Crie uma coleção entities e preencha-a usando o esquema modelado acima. Sempre que necessário, atualize a coleção entities.

  2. Crie um Atlas Search entities_index utilizando uma configuração de índice como descrito abaixo.

  3. Crie um conjunto robusto de cláusulas de query, juntamente com quaisquer fatores de impulso pertinentes, dentro de um pipeline de agregação que usa $search.

Embora haja várias maneiras de preencher a coleção entities, uma maneira direta de preenchê-la é executar um pipeline de agregação na coleção principal para trazer os títulos exclusivos de todos os filmes:

[
{
$group: {
_id: "$title",
},
},
{
$project: {
_id: {$concat: [ "title", "-", "$_id" ]},
type: "title",
name: "$_id"
}
},
{ $merge: { into: "entities" } }
]

O estágio $project converte cada título de filme exclusivo no esquema entities necessário. Como essa coleção digita cada documento, o type é codificado como um prefixo do _id gerado e anexado ao título real do filme, criando um identificador reproduzível para cada título exclusivo. A inclusão de type nos identificadores de entidade permite que diferentes tipos de entities com o mesmo nome sejam independentes uns dos outros (pode haver um filme chamado "Aventura", bem como o gênero "Aventura").

Finalmente, o estágio $merge adiciona todos os novos títulos e deixa os existentes intocados.

O documento do tipo título resultante para "The Matrix" é simplesmente:

{
"_id":"title-The Matrix",
"name":"The Matrix",
"type":"title"
}

Cada tipo de entidade potencialmente precisa de sua própria técnica para mesclar na coleção entities, como no caso das entidades "genre" e "cast", que precisam ser desenroladas de suas arrays aninhadas usando $unwind.

Essa importação de entidades específicas do elenco inclui “Keanu Reeves” como:

{
"_id":"cast-Keanu Reeves",
"name":"Keanu Reeves",
"type":"cast",
"weight": 6.637
}

O campo name é indexado de várias maneiras, o que facilitará a correspondência parcial e a classificação na query.

Várias estratégias de indexação

Figura 2. Várias estratégias de indexação

O recurso de vários analisadores usa a configuração de índice do Atlas Search para permitir que um único campo de documento seja indexado de diversas maneiras.

O campo type é indexado tanto como um campo token, para filtragem equals ou in, quanto como um campo stringFacet para fornecer um meio de obter contagens nos resultados de cada tipo de entidade.

A definição de índice lida com quaisquer outros campos adicionados além de _id, type e name, por meio de mapeamento dinâmico ou das definições estáticas que você fornece. Neste exemplo, weight é personalizado e tratado dinamicamente como um tipo numérico.

O índice de pesquisa especializada resultante fornece a base para queries conforme você digita. O campo name é indexado de várias maneiras e comparado a usuários que digitam vários operadores de query ajustáveis. A ideia é comparar os operadores de query com os mapeamentos analisados de forma diferente e ver o que corresponde. Quanto mais correspondências forem encontradas, maior será a classificação da sugestão. Cada uma das cláusulas de query pode ser aumentada e somada independentemente, dando uma pontuação de relevância para a entidade correspondente. Essas pontuações podem ser aumentadas ainda mais por outros fatores, como um campo de entidade weight opcional.

Exemplo de consulta e cálculo de pontuação de relevância
clique para ampliar

Figura 3. Exemplo de consulta e cálculo de pontuação de relevância

Geralmente, um usuário que seleciona uma sugestão executa uma pesquisa tradicional direcionada para o item selecionado. A pesquisa retorna todos os itens correspondentes.

Visite o repositório GitHub para esta solução.

  • Use uma configuração de índice especializada para modelar entidades sugestíveis como documentos: Siga as etapas acima para criar uma collection separada que contenha todas as entidades de qualquer fonte.

  • Crie um índice com estas configurações: Use essas configurações de índice quando sua collection principal modelar todas as entidades sugiríveis como documentos de nível superior.

  • Use a estrutura de índice para criar queries inteligentes: use seu índice para corresponder entidades e classificar sugestões conforme desejado.

  • Erik Hatcher, MongoDB

  • Varejo impulsionado por IA: personalização e precisão

  • Automatização de descrições de produtos usando IA generativa

  • Sistema de gerenciamento de inventário orientado por eventos

Voltar

Pesquisa de produtos por AI

Nesta página