L'une des explications les plus simples de ce qu'est un "bloom filter" que j'ai pu trouver.
Contexte : Un "bloom filter" est une structure de données qui permet de vérifier si une donnée fait partie d'un ensemble ou non. Elle a des caractéristiques particulières qui peuvent être intéressantes :
- elle est très compacte en mémoire (vous avez besoin de peu de mémoire pour savoir si une donnée fait partie d'un ensemble puisque vous n'avez pas à stocker cet ensemble en entier).
- elle est très rapide (plus rapide que de rechercher une donnée dans l'ensemble en question)
- elle protège les données (vous pouvez donner un "bloom filter" à quelqu'un pour qu'il vérifie si une donnée fait partie d'un ensemble sans lui donner cet ensemble).
- c'est une structure probabiliste : Si elle vous dit que la donnée n'appartient pas à l'ensemble, c'est une certitude. Si elle vous dit qu'elle appartient à l'ensemble, c'est très probablement le cas (mais pas à 100%).
En choisissant la taille du filtre de bloom et les fonctions de hashage en fonction de la taille des données, on peut choisir cette probabilité de faux positif.
EDIT: Exemple pratique de l'utlisation d'un filtre de Bloom : L'extension de Next.ink pour signaler les sites créés par IA dans votre navigateur... sans pour autant diffuser cette liste.
https://next.ink/179523/alertes-sur-les-sites-genai-pourquoi-notre-extension-affiche-t-elle-des-faux-positifs/