Alertes sur les sites GenAI : pourquoi notre extension affiche-t-elle des faux positifs ?

Ça Bloom ?

Alertes sur les sites GenAI : pourquoi notre extension affiche-t-elle des faux positifs ?

Next utilise un filtre de Bloom pour afficher des alertes sur les médias utilisant de l’IA générative pour tout ou partie de ses articles. Comment fonctionne notre algorithme de détection et pourquoi y a-t-il des faux positifs ? On vous explique.

Le 08 avril à 10h50

Commentaires (14)

votre avatar
Merci pour votre travail et vos explications !
Je ne connaissais pas ce genre de filtre, cela donne envie de plonger plus dedans.

Petite remarque, mais j'ignore si je dois le faire ici. Je travaille beaucoup avec la console des navigateurs, le souci, c'est que l'extension laisse quelques traces de logs sur chaque page, par exemple :


Congratulations!!Service Worker Registered ServiceWorker scope: https://next.ink/


Ce n'est pas non plus très gênant, mais c'était surtout pour prévenir ! Je sais que sous Chrome, je peux masquer ce genre de message :)

Encore une fois super extension et merci pour vos explications.

PS : J'aurais bien report l'issue sur Github, mais je n'ai trouvé que le code pour Firefox :)
votre avatar
PS : J'aurais bien report l'issue sur Github, mais je n'ai trouvé que le code pour Firefox :)
A confirmer par @SébastienGavois, mais le code est sans doute le même. En tout cas, j'ai pu le prendre tel quel et il fonctionne sous Chrome.

C'est juste l'empaquetage et la distribution qui doivent changer.
votre avatar
Ah d'accord, merci !
votre avatar
De mon côté, je me demande si Google n'a pas pris en compte, de manière "discrète", le résultat de l'enquête.

Je retrouve beaucoup moins de lien GenAI dans le résultat de recherche ces derniers jours (j'utilise une version modifiée de l'extension, qui barre en rouge les liens qui sont des liens de sites GenAI, évitant de devoir se rendre sur ledit site pour s'en rendre compte)
votre avatar
Pourquoi ne pas avoir simplement fait une liste de noms de domaines hashés ?
C'est masqué et ne laisse pas de place au hasard.
votre avatar
Je laisse bien sûr l'équipe infirmer / confirmer, mais voici mon analyse :
- la taille du filtre de Bloom est "indépendante" du nombre d'éléments (c'est le facteur de faux positif qui en dépend)
- impossible de savoir le nombre exact d'éléments à l'intérieur
- inverser le filtre de Bloom nécessitera un peu plus de compétence et de temps que d'inverser une fonction de hashage classique
- la complexité de la vérification via un filtre de Bloom est en temps constant O(1) par rapport aux nombres d'éléments (car la taille du filtre ne dépend pas du nombre d'éléments), contrairement à une liste de hashage où elle serait, au mieux en O(log(n)).
votre avatar
Au moment ou j'ai élaboré le POC pour l'extension j'ai été confronté a ce choix.

En choisissant la table de hash j'aurais dû exposer le nombre d'éléments dans le set, cela aurait grandement augmenté la taille de l'extension, le bloom filter réduit considérablement la taille de la structure de donnée contenant le set d'URLs.

Cela aurait aussi entraîné une complexification importante du process de mise a jour de la liste, le sérialisation du bloom filter est beaucoup plus simple.

Dernièrement, un attaquant expérimenté aurait eu une plus grande surface d'attaque sur une hash table possédant plus d'informations a exploiter

Ces raisons sont les principales qui m'ont poussé a choisir la solution du bloom filter.

Après j'aime bien me dire que l'aspect probabiliste avec la possibilité de faux positifs est une feature plutôt qu'un bug, ça te force a faire marcher ton esprit critique en te demandant si le site est vraiment généré par IA ou pas, plutôt que du suivre aveuglément une figure d'autorité :windu:

Celui qui cesse de douter, cesse de progresser :mrgreen:

PS: D'après les retours de mes collègues j'ai des tendances a overengineer, si vous avez une solution plus simple et élégante je serais ravi d'avoir vos perspectives.
votre avatar
Merci pour les précisions.
Je suppose qu’héberger la liste des domaines IA pose des problème de confidentialité ?
votre avatar
J’avais lu un truc sur la manière dont Firefox vérifie (ou vérifiait ?) les domaines pour voir s’ils sont malveillants. Si je me souviens, le domaine est hashé, le début du hash est envoyé à Mozilla, Mozilla répond avec tous les domaines malveillants commençant par ce bout de hash, et le navigateur vérifie dans cette liste si le domaine est présent.

Ainsi, la seule chose que sait Mozilla, c’est que telle adresse IP veut visiter un site dont le début du hash est pareil à ceux dans la liste. Mozilla ne sait même pas s’il est dans la liste : ce peut être un site légitime, mais ayant le même début de hash.
votre avatar
C'est une solution que nous avions envisagé quand j'ai discuté de la structure de l'extension avec JM et Seb.

Cette stratégie nous aurait en effet évité d'avoir a implémenter un mécanisme d'obfuscation mais la grande contrepartie en termes d'appels réseaux nécessaires et de bande passante dédiée a cela sur les serveurs de Next nous a fait éluder cette option.

Bien que nous l'ayons envisagé, le format actuel semble représenter un bon compromis entre les nécessités d'économies réseaux tout en préservant notre liste d'URL
votre avatar
Et ça correspond à quoi le 1485 ? (expectedElements)
Le nombre estimé de sites qui seront bloqués ?
votre avatar
La mort de Richard III :D
votre avatar
D'où sort ce chiffre ?... Comme indiqué, il y a plus de 3 000 NDD dans la liste (près de 3 500 en fait, depuis)
votre avatar
Des formules et des valeurs à la fin : -1485*log(0,01)/log(2)^2 = 32 774,56 ≈ 32 772

Alertes sur les sites GenAI : pourquoi notre extension affiche-t-elle des faux positifs ?

  • Cachez cette liste que je ne saurais voir…

  • Contre les faux positifs, la liste blanche

  • Notre algorithme, côté technique

  • L’influence de la précision

Fermer