Générer des filtres et des facettes à l'aide de la ML
Exploration des avantages et des inconvénients de l'automatisation de la création de filtres et de facettes dans une expérience de recherche à l'aide de modèles ML par rapport à l'approche classique codée en dur.
Les filtres et les facettes sont des mécanismes utilisés pour affiner les résultats de la recherche et aider les utilisateurs à trouver plus rapidement le contenu ou les produits pertinents. Dans l'approche classique, les règles sont définies manuellement. Par exemple, dans un catalogue de films, des attributs tels que le genre sont prédéfinis pour être utilisés dans les filtres et les facettes. D'autre part, les modèles d'intelligence artificielle permettent d'extraire automatiquement de nouveaux attributs à partir des caractéristiques des films, ce qui rend le processus plus dynamique et plus personnalisé. Dans ce blog, nous explorons les avantages et les inconvénients de chaque méthode, en mettant en évidence leurs applications et leurs défis.
Filtres vs facettes
Avant de commencer, définissons ce que sont les filtres et les facettes. Les filtres sont des attributs prédéfinis utilisés pour restreindre un ensemble de résultats. Sur une place de marché, par exemple, des filtres sont disponibles avant même qu'une recherche ne soit effectuée. L'utilisateur peut sélectionner une catégorie, telle que "Jeux vidéo", avant de rechercher "PS5", ce qui permet d'affiner la recherche à un sous-ensemble plus spécifique plutôt qu'à l'ensemble de la base de données. Cela augmente considérablement les chances d'obtenir des résultats plus pertinents.

Les facettes fonctionnent de la même manière que les filtres, mais elles ne sont disponibles qu'une fois la recherche effectuée. En d'autres termes, la recherche renvoie des résultats et, sur la base de ceux-ci, une nouvelle liste d'options d'affinage est générée. Par exemple, lors de la recherche d'une console PS5, des aspects tels que la capacité de stockage, les frais d'expédition et la couleur peuvent être affichés pour aider les utilisateurs à choisir le produit idéal.

Maintenant que nous avons défini les filtres et les facettes, examinons l'impact de l'approche classique et de l'approche basée sur l'apprentissage automatique sur leur mise en œuvre et leur utilisation. Chaque méthode présente des avantages et des inconvénients qui influencent l'efficacité de la recherche.
Approche classique des filtres et des facettes
Dans cette approche, les filtres et les facettes sont définis manuellement sur la base de règles prédéfinies. Cela signifie que les attributs disponibles pour affiner la recherche sont fixés et planifiés à l'avance, en tenant compte de la structure du catalogue et des besoins de l'utilisateur.
Par exemple, sur une place de marché, les catégories telles que "Électronique" ou "Mode" peuvent avoir des filtres spécifiques tels que la marque, le format et la fourchette de prix. Ces règles sont créées de manière statique, ce qui garantit la cohérence de l'expérience de recherche, mais nécessite des ajustements manuels lorsque de nouveaux produits ou de nouvelles catégories apparaissent.
Bien que cette approche permette de prévoir et de contrôler les filtres et les facettes affichés, elle peut s'avérer limitée lorsque de nouvelles tendances apparaissent et exigent un affinement dynamique.
Pour :
Prévisibilité et contrôle : Les filtres et les facettes étant définis manuellement, la gestion devient plus facile.
Faible complexité : Il n'est pas nécessaire de former des modèles.
Facilité de maintenance : Les règles étant prédéfinies, les ajustements et les corrections peuvent être effectués rapidement.
Cons :
Réindexation nécessaire pour les nouveaux filtres : Chaque fois qu'un nouvel attribut doit être utilisé comme filtre, l'ensemble du jeu de données doit être réindexé pour s'assurer que les documents contiennent cette information.
Absence d'adaptation dynamique : Les filtres sont statiques et ne s'adaptent pas automatiquement aux changements de comportement des utilisateurs.
Mise en œuvre des filtres/facettes - Approche classique
Dans Dev Tools, Kibana, nous allons créer une démonstration de filtres/facettes en utilisant l'approche classique.
Tout d'abord, nous définissons la correspondance pour structurer l'index :
PUT videogames
{
"mappings": {
"properties": {
"name": { "type": "text" },
"brand": { "type": "keyword" },
"storage": { "type": "keyword" },
"price": { "type": "float" },
"description": { "type": "text" }
}
}
}Les champs marque et stockage sont définis comme des mots-clés, ce qui permet de les utiliser directement dans les agrégations(facettes). Le champ prix est de type flottant, ce qui permet de créer des fourchettes de prix.
L'étape suivante consiste à indexer les données relatives aux produits :
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." }Retrouvons maintenant des facettes classiques en regroupant les résultats par marque, rangement et gamme de prix. Dans la requête, la taille:0 a été définie. Dans ce scénario, l'objectif est de récupérer uniquement les résultats de l'agrégation sans inclure les documents correspondant à la requête.
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 }
]
}
}
}
}La réponse comprendra des comptes pour la marque, le stockage et le prix, ce qui permettra de créer des filtres et des facettes.
"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
}
]
}
}Approche basée sur le Machine Learning et l’IA pour les filtres et les facettes
Dans cette approche, les modèles d'apprentissage automatique (ML), y compris les techniques d'intelligence artificielle (IA), analysent les attributs des données pour générer des filtres et des facettes pertinents. Au lieu de s'appuyer sur des règles prédéfinies, la ML/AI exploite les caractéristiques des données indexées. Cela permet la découverte dynamique de nouvelles facettes et de nouveaux filtres.
Pour :
Mises à jour automatiques : Les nouveaux filtres et facettes sont générés automatiquement, sans qu'il soit nécessaire de procéder à des ajustements manuels.
Découverte de nouveaux attributs : Il peut identifier des caractéristiques de données précédemment non prises en compte en tant que filtres, enrichissant ainsi l'expérience de recherche.
Réduction des efforts manuels : L'équipe n'a pas besoin de définir et de mettre à jour en permanence les règles de filtrage, car l'IA apprend à partir des données disponibles.
Cons :
Complexité de la maintenance : L'utilisation de modèles peut nécessiter une prévalidation pour garantir la cohérence des filtres générés.
Nécessite une expertise en ML et en IA : La solution exige des professionnels qualifiés pour affiner et surveiller les performances du modèle.
Risque de filtres non pertinents : Si le modèle n'est pas bien calibré, il peut générer des facettes qui ne sont pas utiles aux utilisateurs.
Coût : L'utilisation de la ML et de l'IA peut nécessiter des services tiers, ce qui augmente les coûts opérationnels.
Il convient de noter que même avec un modèle bien calibré et une invite bien rédigée, les facettes générées doivent toujours passer par une étape de révision. Cette validation peut être manuelle ou basée sur des règles de modération, garantissant que le contenu est approprié et sûr. Bien qu'il ne s'agisse pas nécessairement d'un inconvénient, il est important de s'assurer de la qualité et de l'adéquation des facettes avant de les mettre à la disposition des utilisateurs.
Mise en œuvre de filtres/façades - Approche IA
Dans cette démonstration, nous utiliserons un modèle d'intelligence artificielle pour analyser automatiquement les caractéristiques des produits et suggérer des attributs pertinents. Avec une invite bien structurée, nous extrayons des informations du catalogue et les transformons en filtres et facettes. Nous présentons ci-dessous chaque étape du processus.
Dans un premier temps, nous utiliserons l'API Inference pour enregistrer un point de terminaison en vue d'une intégration avec un service de ML. Vous trouverez ci-dessous un exemple d'intégration avec le service OpenAI.
PUT _inference/completion/generate_filter_ia
{
"service": "openai",
"service_settings": {
"api_key": "your-key",
"model_id": "gpt-4o-mini"
}
}Nous définissons maintenant le pipeline permettant d'exécuter l'invite et d'obtenir les nouveaux filtres générés par le modèle.
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"
}
}
]
}Lancer une simulation de ce pipeline pour le produit "PlayStation 5", avec la description suivante :
Des jeux époustouflants : Admirez des graphismes époustouflants et découvrez les fonctionnalités de la nouvelle PS5.
Une immersion à couper le souffle : Découvrez une expérience de jeu plus profonde grâce à la prise en charge du retour haptique, des déclencheurs adaptatifs et de la technologie audio 3D.
Un design élancé : Avec la PS5 Digital Edition, les joueurs bénéficient d'une technologie de jeu puissante dans un design élégant et compact.
1 To de stockage : Vos jeux préférés sont prêts à être joués grâce à 1 To de stockage SSD intégré.
Rétrocompatibilité et boost de jeux : La console PS5 peut lire plus de 4 000 jeux PS4. Avec Game Boost, vous pouvez même profiter de taux de rafraîchissement plus rapides et plus fluides dans certains des meilleurs jeux de la console PS4.
Observons la sortie rapide générée par cette simulation.
{
"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"
}
}
}
]
}Un nouveau champ, dynamic_facets, sera ajouté au nouvel index pour stocker les facettes générées par l'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" } } }
}
}
}En utilisant l'API Reindex, nous allons réindexer l'index videogames en videogames_1, en appliquant le pipeline generate_filter_ai pendant le processus. Ce pipeline génère automatiquement des facettes dynamiques lors de l'indexation.
POST _reindex?wait_for_completion=false
{
"source": {
"index": "videogames"
},
"dest": {
"index": "videogames_1",
"pipeline": "generate_filter_ai"
}
}Nous allons maintenant lancer une recherche et obtenir les nouveaux filtres :
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"
}
}
}
}
}
}
}
}Résultats :
"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
}
]
}
}
]
}
}
}Pour illustrer la mise en œuvre des facettes, nous présentons ci-dessous une interface simple :

Le code de l'interface utilisateur présenté est ici.
Conclusion
Les deux approches de la création de filtres et de facettes ont leurs avantages et leurs inconvénients. L'approche classique, basée sur des règles manuelles, permet de contrôler et de réduire les coûts, mais elle nécessite des mises à jour constantes et ne s'adapte pas de manière dynamique aux nouveaux produits ou aux nouvelles fonctionnalités.
D'autre part, l'approche basée sur l'IA et l'apprentissage automatique automatise l'extraction des facettes, ce qui rend la recherche plus flexible et permet de découvrir de nouveaux attributs sans intervention manuelle. Toutefois, cette approche peut être plus complexe à mettre en œuvre et à maintenir, et nécessite un étalonnage pour garantir des résultats cohérents.
Le choix entre l'approche classique et l'approche basée sur l'IA dépend des besoins et de la complexité de l'entreprise. Pour les scénarios plus simples, où les attributs des données sont stables et prévisibles, l'approche classique peut être plus efficace et plus facile à maintenir, en évitant les coûts inutiles liés à l'infrastructure et aux modèles d'IA. D'autre part, l'utilisation de la ML/AI pour extraire les facettes peut apporter une valeur ajoutée significative, en améliorant l'expérience de recherche et en rendant le filtrage plus intelligent.
L'important est d'évaluer si l'automatisation justifie l'investissement ou si une solution plus traditionnelle répond déjà efficacement aux besoins de l'entreprise.
Questions fréquentes
Que sont les filtres ?
Les filtres sont des attributs prédéfinis utilisés pour restreindre un ensemble de résultats.
Que sont les facettes ?
Les facettes sont une nouvelle liste d’options de filtrage générées une fois la recherche effectuée.
Quelle est l’approche classique des filtres et des facettes ?
Avec l’approche classique des filtres et des facettes, les attributs disponibles pour affiner la recherche sont définis à l’avance et planifiés. Cette approche offre une certaine prévisibilité, mais elle manque de flexibilité : tout changement implique la création de nouveaux filtres et une réindexation.
En quoi consiste l’approche Machine Learning (ML) pour les filtres et les facettes ?
L’approche Machine Learning (ML) appliquée aux filtres et aux facettes repose essentiellement sur l’IA. Les modèles de ML analysent les attributs des données afin de générer des filtres et des facettes pertinents. Plutôt que de s’appuyer sur des règles prédéfinies, le ML/l’IA exploite les caractéristiques des données indexées.
Pour aller plus loin




