Geração de filtros e facetas usando aprendizado de máquina.
Explorando as vantagens e desvantagens de automatizar a criação de filtros e facetas em uma experiência de busca usando modelos de aprendizado de máquina versus a abordagem clássica de codificação fixa.
Filtros e facetas são mecanismos usados para refinar os resultados da pesquisa, ajudando os usuários a encontrar conteúdo ou produtos relevantes mais rapidamente. Na abordagem clássica, as regras são definidas manualmente. Por exemplo, em um catálogo de filmes, atributos como gênero são predefinidos para uso em filtros e facetas. Por outro lado, com modelos de IA, novos atributos podem ser extraídos automaticamente das características dos filmes, tornando o processo mais dinâmico e personalizado. Neste blog, exploramos as vantagens e desvantagens de cada método, destacando suas aplicações e desafios.
Filtros vs facetas
Antes de começarmos, vamos definir o que são filtros e facetas. Os filtros são atributos predefinidos usados para restringir um conjunto de resultados. Em um mercado online, por exemplo, os filtros estão disponíveis mesmo antes de uma busca ser realizada. O usuário pode selecionar uma categoria, como "Videogames", antes de pesquisar por "PS5", refinando a busca para um subconjunto mais específico em vez de toda a base de dados. Isso aumenta significativamente as chances de se obter resultados mais relevantes.

Os facets funcionam de forma semelhante aos filtros, mas só ficam disponíveis após a realização da pesquisa. Em outras palavras, a pesquisa retorna resultados e, com base neles, é gerada uma nova lista de opções de refinamento. Por exemplo, ao pesquisar um console PS5, características como capacidade de armazenamento, custo de envio e cor podem ser exibidas para ajudar os usuários a escolher o produto ideal.

Agora que definimos filtros e facetas, vamos discutir o impacto das abordagens clássicas e baseadas em Aprendizado de Máquina (ML) em sua implementação e uso. Cada método possui vantagens e desafios que influenciam a eficiência da busca.
Abordagem clássica de filtros e facetas
Nessa abordagem, os filtros e as facetas são definidos manualmente com base em regras predefinidas. Isso significa que os atributos disponíveis para refinar a busca são fixos e planejados antecipadamente, levando em consideração a estrutura do catálogo e as necessidades do usuário.
Por exemplo, em um marketplace, categorias como "Eletrônicos" ou "Moda" podem ter filtros específicos como marca, formato e faixa de preço. Essas regras são criadas estaticamente, garantindo consistência na experiência de busca, mas exigindo ajustes manuais sempre que novos produtos ou categorias surgirem.
Embora essa abordagem proporcione previsibilidade e controle sobre os filtros e facetas exibidos, ela pode ser limitada quando surgem novas tendências que exigem refinamento dinâmico.
Prós:
Previsibilidade e controle: Como os filtros e as facetas são definidos manualmente, o gerenciamento torna-se mais fácil.
Baixa complexidade: Não há necessidade de treinar modelos.
Facilidade de manutenção: Como as regras são predefinidas, ajustes e correções podem ser feitos rapidamente.
Contras:
Reindexação necessária para novos filtros: Sempre que um novo atributo precisar ser usado como filtro, todo o conjunto de dados deverá ser reindexado para garantir que os documentos contenham essa informação.
Falta de adaptação dinâmica: os filtros são estáticos e não se ajustam automaticamente às mudanças no comportamento do usuário.
Implementação de filtros/facetas – Abordagem clássica
Nas Ferramentas de Desenvolvimento, Kibana, criaremos uma demonstração de filtros/facetas usando a abordagem clássica.
Primeiro, definimos o mapeamento para estruturar o índice:
PUT videogames
{
"mappings": {
"properties": {
"name": { "type": "text" },
"brand": { "type": "keyword" },
"storage": { "type": "keyword" },
"price": { "type": "float" },
"description": { "type": "text" }
}
}
}Os campos de marca e armazenamento são definidos como palavras-chave, permitindo que sejam usados diretamente em agregações (facetas). O campo de preço é do tipo float, permitindo a criação de intervalos de preço.
Na próxima etapa, os dados do produto serão indexados:
POST videogames/_bulk
{ "index": { "_id": 1 } }
{ "name": "Play Station 5", "brand": "Sony", "storage": "1TB", "price": 499.99, "description": "Stunning Gaming: Marvel at stunning graphics and experience the features of the new PS5. Breathtaking Immersion: Discover a deeper gaming experience with support for haptic feedback, adaptive triggers, and 3D Audio technology. Slim Design: With the PS5 Digital Edition, gamers get powerful gaming technology in a sleek, compact design. 1TB of Storage: Have your favorite games ready and waiting for you to play with 1TB of built-in SSD storage. Backward Compatibility and Game Boost: The PS5 console can play over 4,000 PS4 games. With Game Boost, you can even enjoy faster, smoother frame rates in some of the best PS4 console games." }
{ "index": { "_id": 2 } }
{ "name": "Xbox Series X", "brand": "Microsoft", "storage": "1TB", "price": 499.99, "description": "Fastest, most powerful Xbox console ever. Play thousands of titles: Every game looks and plays better on Xbox Series X. At the heart of Series X is the Xbox Velocity. Architecture, which combines a custom SSD and built-in software to significantly reduce load times in and out of game. Switch between multiple games in an instant with Quick Resume. Explore new worlds and experience the action like never before with an unparalleled 12 teraflops of graphics processing power. Enjoy 4K gaming at up to 120 frames per second, premium advanced 3D sound, and more. 4K at 120 FPS: requires compatible content and display X version - with disc drive" }
{ "index": { "_id": 3 } }
{ "name": "Nintendo Switch", "brand": "Nintendo", "storage": "512GB", "price": 299.99, "description": "SHARPER, VIBRANT VISUALS. The new 7-inch screen on the Nintendo Switch OLED takes your gaming to the next level: vibrant colors with sharp contrasts for every moment. INTEGRATED GAMEPLAY. Enjoy the console's many multiplayer modes and connect with other players. Online or locally, the fun on the Nintendo Switch is guaranteed. ENJOY IMMERSION FOR LONGER. In addition to delivering an unparalleled experience, thanks to its improved audio, the Nintendo Switch has a rechargeable battery while you play. From 4.5 hours to 9 hours of battery life. INCLUDES SUPER MARIO BROS. WONDER. Transform your world with the phenomenal flowers in this new Mario game, full of amazing adventures, power-ups and new abilities. NINTENDO SWITCH ONLINE SUBSCRIPTION. Access online games, play with friends and enjoy the exclusive benefits of the Nintendo Switch Online subscription." }
{ "index": { "_id": 4 } }
{ "name": "Steam Deck", "brand": "Valve", "storage": "512GB", "price": 399.99, "description": "You can save games, apps, photos and videos without worrying about space. High-Level Performance: The 4-core processor and graphics ensure a dynamic experience and fast responses. High-Definition Images: Smooth transitions and sharp images provide complete immersion in the game. Wireless Connectivity: Wi-Fi technology allows you to play wherever you want, without wires or cables limiting your fun" }
{ "index": { "_id": 5 } }
{ "name": "Nintendo Switch Lite", "brand": "Nintendo", "storage": "512GB", "price": 299.99, "description": "MADE TO BE PORTABLE. Nintendo Switch Lite is designed specifically for portable gaming. The console lets you jump into your favorite games wherever you are. COMPACT AND LIGHTWEIGHT. With its sleek, lightweight design, this console is ready to hit the road wherever you are. COMPATIBLE GAMES. The Nintendo Switch Lite system plays the library of Nintendo Switch games that work in handheld mode. A WORLD OF COLOR TO CHOOSE FROM. Available in a variety of vibrant and unique colors, Nintendo Switch Lite lets you bring even more personality wherever you go." }Agora, vamos recuperar as características clássicas agrupando os resultados por marca, armazenamento e faixa de preço. Na consulta, foi definido o tamanho:0. Nesse cenário, o objetivo é recuperar apenas os resultados da agregação, sem incluir os documentos correspondentes à consulta.
POST videogames/_search
{
"size": 0,
"aggs": {
"brands": {
"terms": { "field": "brand" }
},
"storage_sizes": {
"terms": { "field": "storage" }
},
"price_ranges": {
"range": {
"field": "price",
"ranges": [
{ "to": 300 },
{ "from": 300, "to": 500 },
{ "from": 500 }
]
}
}
}
}A resposta incluirá contagens para Marca, Armazenamento e Preço, ajudando a criar filtros e segmentações.
"aggregations": {
"brands": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Microsoft",
"doc_count": 1
},
{
"key": "Nintendo",
"doc_count": 1
},
{
"key": "Sony",
"doc_count": 1
},
{
"key": "Valve",
"doc_count": 1
}
]
},
"storage_sizes": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1TB",
"doc_count": 2
},
{
"key": "512GB",
"doc_count": 2
}
]
},
"price_ranges": {
"buckets": [
{
"key": "*-300.0",
"to": 300,
"doc_count": 1
},
{
"key": "300.0-500.0",
"from": 300,
"to": 500,
"doc_count": 3
},
{
"key": "500.0-*",
"from": 500,
"doc_count": 0
}
]
}
}Abordagem baseada em machine learning/IA para filtros e facetas
Nessa abordagem, modelos de Aprendizado de Máquina (ML), incluindo técnicas de Inteligência Artificial (IA), analisam atributos de dados para gerar filtros e facetas relevantes. Em vez de depender de regras predefinidas, o aprendizado de máquina/inteligência artificial aproveita as características dos dados indexados. Isso possibilita a descoberta dinâmica de novas facetas e filtros.
Prós:
Atualizações automáticas: Novos filtros e facetas são gerados automaticamente, sem a necessidade de ajustes manuais.
Descoberta de novos atributos: Pode identificar características de dados anteriormente não consideradas como filtros, enriquecendo a experiência de busca.
Redução do esforço manual: a equipe não precisa definir e atualizar constantemente as regras de filtragem, pois a IA aprende com os dados disponíveis.
Contras:
Complexidade de manutenção: O uso de modelos pode exigir pré-validação para garantir a consistência dos filtros gerados.
Requer experiência em aprendizado de máquina e inteligência artificial: A solução exige profissionais qualificados para ajustar e monitorar o desempenho do modelo.
Risco de filtros irrelevantes: Se o modelo não estiver bem calibrado, poderá gerar facetas que não sejam úteis para os usuários.
Custo: O uso de aprendizado de máquina e inteligência artificial pode exigir serviços de terceiros, aumentando os custos operacionais.
Vale ressaltar que, mesmo com um modelo bem calibrado e um prompt bem elaborado, as facetas geradas ainda devem passar por uma etapa de revisão. Essa validação pode ser manual ou baseada em regras de moderação, garantindo que o conteúdo seja apropriado e seguro. Embora não seja necessariamente uma desvantagem, é importante considerar a qualidade e a adequação dos recursos antes que sejam disponibilizados aos usuários.
Implementação de filtros/facetas – abordagem de IA
Nesta demonstração, utilizaremos um modelo de IA para analisar automaticamente as características do produto e sugerir atributos relevantes. Com um prompt bem estruturado, extraímos informações do catálogo e as transformamos em filtros e facetas. A seguir, apresentamos cada etapa do processo.
Inicialmente, usaremos a API de Inferência para registrar um endpoint para integração com um serviço de aprendizado de máquina. Abaixo, segue um exemplo de integração com o serviço da OpenAI.
PUT _inference/completion/generate_filter_ia
{
"service": "openai",
"service_settings": {
"api_key": "your-key",
"model_id": "gpt-4o-mini"
}
}Agora, definimos o pipeline para executar o prompt e obter os novos filtros gerados pelo modelo.
PUT /_ingest/pipeline/generate_filter_ai
{
"processors": [
{
"script": {
"source": """ctx.prompt = "You are an expert in data organization for search and product categorization. Your task is to analyze the following product and identify the best dynamic facets that can be used in an e-commerce search experience. Product: " + ctx.name + "description: " + ctx.description + "Instructions: - Analyze the product name and description. - Extract only the dynamic facets (technological features or product characteristics that can be inferred from the description, try to create max 3 facets by characteristics found). Put the values into an array. Using key and value, e.g. dynamic_facets: [{ \"name\": \"Gaming Experience\", \"value\": \"Haptic Feedback\" },{ \"name\": \"Gaming Experience\", \"value\": \"Adaptive Triggers\" } - Return only a JSON."
"""
}
},
{
"inference": {
"model_id": "generate_filter_ia",
"input_output": {
"input_field": "prompt",
"output_field": "result"
}
}
},
{
"gsub": {
"field": "result",
"pattern": "```json",
"replacement": ""
}
},
{
"json" : {
"field" : "result",
"strict_json_parsing": false,
"add_to_root" : true
}
},
{
"remove": {
"field": "result"
}
},
{
"remove": {
"field": "prompt"
}
}
]
}Executando uma simulação desse pipeline para o produto "PlayStation 5", com a seguinte descrição:
Jogabilidade impressionante: Maravilhe-se com gráficos deslumbrantes e experimente os recursos do novo PS5.
Imersão de tirar o fôlego: Descubra uma experiência de jogo mais profunda com suporte para feedback tátil, gatilhos adaptáveis e tecnologia de áudio 3D.
Design fino: Com o PS5 Digital Edition, os jogadores têm acesso a uma poderosa tecnologia de jogos em um design elegante e compacto.
1 TB de armazenamento: Tenha seus jogos favoritos prontos para jogar com 1 TB de armazenamento SSD integrado.
Compatibilidade com versões anteriores e Game Boost: O console PS5 pode rodar mais de 4.000 jogos de PS4. Com o Game Boost, você pode desfrutar de taxas de quadros mais rápidas e suaves até mesmo em alguns dos melhores jogos para PS4.
Vamos observar a saída de comando gerada por esta simulação.
{
"docs": [
{
"doc": {
"_index": "index",
"_version": "-3",
"_id": "1",
"_source": {
"name": "Play Station 5",
"result": """```json
{
"dynamic_facets": [
{ "name": "Storage Capacity", "value": "1TB SSD" },
{ "name": "Graphics Technology", "value": "Stunning Graphics" },
{ "name": "Audio Technology", "value": "3D Audio" }
]
}
```""",
"description": "Stunning Gaming: Marvel at stunning graphics and experience the features of the new PS5. Breathtaking Immersion: Discover a deeper gaming experience with support for haptic feedback, adaptive triggers, and 3D Audio technology. Slim Design: With the PS5 Digital Edition, gamers get powerful gaming technology in a sleek, compact design. 1TB of Storage: Have your favorite games ready and waiting for you to play with 1TB of built-in SSD storage. Backward Compatibility and Game Boost: The PS5 console can play over 4,000 PS4 games. With Game Boost, you can even enjoy faster, smoother frame rates in some of the best PS4 console games.",
"model_id": "generate_filter_ia",
"prompt": """You are an expert in data organization for search and product categorization. Your task is to analyze the following product and identify the best dynamic facets that can be used in an e-commerce search experience. Product: Play Station 5description: Stunning Gaming: Marvel at stunning graphics and experience the features of the new PS5. Breathtaking Immersion: Discover a deeper gaming experience with support for haptic feedback, adaptive triggers, and 3D Audio technology. Slim Design: With the PS5 Digital Edition, gamers get powerful gaming technology in a sleek, compact design. 1TB of Storage: Have your favorite games ready and waiting for you to play with 1TB of built-in SSD storage. Backward Compatibility and Game Boost: The PS5 console can play over 4,000 PS4 games. With Game Boost, you can even enjoy faster, smoother frame rates in some of the best PS4 console games.Instructions: - Analyze the product name and description. - Extract only the dynamic facets (technological features or product characteristics that can be inferred from the description, try create max 3 facets by characteristics found). Put the values like arrays. Using key and value, e.g. dynamic_facets: [{ "name": "Gaming Experience", "value": "Haptic Feedback" },{ "name": "Gaming Experience", "value": "Adaptive Triggers" } - Return only a JSON."""
},
"_ingest": {
"timestamp": "2025-03-19T22:14:32.0161803Z"
}
}
}
]
}Agora, um novo campo, dynamic_facets, será adicionado ao novo índice para armazenar as facetas geradas pela IA.
PUT videogames_1
{
"mappings": {
"properties": {
"name": { "type": "text" },
"brand": { "type": "keyword" },
"storage": { "type": "keyword" },
"price": { "type": "float" },
"description": { "type": "text" },
"dynamic_facets": { "type": "nested",
"properties": { "name": { "type": "keyword" },
"value": { "type": "keyword" } } }
}
}
}Utilizando a API Reindex, vamos reindexar o índice de videogames para videogames_1, aplicando o pipeline generate_filter_ai durante o processo. Este pipeline irá gerar automaticamente facetas dinâmicas durante a indexação.
POST _reindex?wait_for_completion=false
{
"source": {
"index": "videogames"
},
"dest": {
"index": "videogames_1",
"pipeline": "generate_filter_ai"
}
}Agora, vamos executar uma pesquisa e obter os novos filtros:
GET videogames_1/_search
{
"size": 0,
"query": {
"match": {
"name": "nintendo"
}
},
"aggs": {
"dynamic_facets": {
"nested": {
"path": "dynamic_facets"
},
"aggs": {
"facets": {
"terms": {
"field": "dynamic_facets.name"
},
"aggs": {
"facets": {
"terms": {
"field": "dynamic_facets.value"
}
}
}
}
}
}
}
}Resultados:
"aggregations": {
"dynamic_facets": {
"doc_count": 3,
"facets": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Frame Rate",
"doc_count": 1,
"facets": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "120 FPS",
"doc_count": 1
}
]
}
},
{
"key": "Gaming Resolution",
"doc_count": 1,
"facets": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "4K",
"doc_count": 1
}
]
}
},
{
"key": "Graphics Processing Power",
"doc_count": 1,
"facets": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "12 Teraflops",
"doc_count": 1
}
]
}
}
]
}
}
}Para simbolizar a implementação das facetas, segue abaixo um exemplo simples de interface:

O código da interface do usuário apresentado está aqui.
Conclusão
Ambas as abordagens para a criação de filtros e facetas têm seus benefícios e pontos de atenção. A abordagem clássica, baseada em regras manuais, oferece controle e custos mais baixos, mas requer atualizações constantes e não se adapta dinamicamente a novos produtos ou recursos.
Por outro lado, a abordagem baseada em IA e Aprendizado de Máquina automatiza a extração de facetas, tornando a busca mais flexível e permitindo a descoberta de novos atributos sem intervenção manual. No entanto, essa abordagem pode ser mais complexa de implementar e manter, exigindo calibração para garantir resultados consistentes.
A escolha entre as abordagens clássicas e as baseadas em IA depende das necessidades e da complexidade do negócio. Para cenários mais simples, onde os atributos dos dados são estáveis e previsíveis, a abordagem clássica pode ser mais eficiente e fácil de manter, evitando custos desnecessários com infraestrutura e modelos de IA. Por outro lado, o uso de aprendizado de máquina/inteligência artificial para extrair facetas pode agregar valor significativo, melhorando a experiência de busca e tornando a filtragem mais inteligente.
O importante é avaliar se a automação justifica o investimento ou se uma solução mais tradicional já atende às necessidades do negócio de forma eficaz.
Perguntas frequentes
O que são filtros?
Os filtros são atributos predefinidos usados para restringir um conjunto de resultados.
O que são facetas?
Facetas são uma nova lista de opções de refinamento que é gerada após realizar uma busca.
Qual é a abordagem clássica de filtros e facetas?
Na abordagem clássica de filtros e facetas, os atributos disponíveis para refinar a busca são fixos e planejados. A abordagem é boa para previsibilidade, mas precisa de adaptação dinâmica e exige a criação de novos filtros para reindexação.
Qual é a abordagem de machine learning (ML) para filtros e facetas?
A abordagem de machine learning (ML) para filtros e facetas é baseada em IA. Modelos de ML analisam atributos de dados para gerar filtros e facetas relevantes. Em vez de depender de regras pré-definidas, ML/IA aproveita características de dados indexados.




