Recherche par image en temps réel avec Gemini et BigQuery

Evenbytes a développé pour une plateforme leader de l’achat-vente en Espagne un système qui, en temps réel, transforme les images de chaque nouvelle annonce en vecteurs d’embedding et en extrait les métadonnées de sécurité avec Gemini. Le résultat est un vectorhouse dans BigQuery : une base de vecteurs qui complète la recherche par mots-clés par une recherche sur le contenu des photos, et qui offre une information détaillée sur chaque article. Elle réunit déjà environ 4 To de données.
Le projet est une preuve de concept. Grâce à elle, l’équipe de Data Scientists de la plateforme valide l’architecture et les premiers cas d’usage.
Pourquoi en temps réel
La recherche par mots-clés ne trouve que ce que le vendeur a écrit. Avec le vecteur de chaque image, la plateforme peut comparer les annonces selon ce que montrent leurs photos. Et si chaque annonce arrive dans BigQuery peu après sa publication, l’application peut :
- Chercher par similarité d’image : trouver des articles semblables à partir d’une photo.
- Détecter les annonces en double, un signal fréquent de fraude.
- Repérer les contenus interdits grâce à des métadonnées de sécurité (nudité, armes…) générées par l’IA.
Comment ça fonctionne
Les annonces et leurs photos sont hébergées sur AWS et traitées sur Google Cloud, avec Dataflow comme orchestrateur :
- Les métadonnées de chaque annonce sont publiées sous forme d’événements Kafka.
- Les images sont copiées d’Amazon S3 vers Cloud Storage en temps réel avec Storage Transfer Service, et Eventarc signale chaque nouvelle image.
- Dataflow consomme les événements Kafka et regroupe avec chaque annonce les événements de ses images. C’est la partie la plus délicate : il faut réunir en temps réel deux flux qui arrivent séparément.
- Pour chaque annonce, Dataflow appelle trois services sur Cloud Run : l’un redimensionne les images, un autre obtient le vecteur de chaque image avec le modèle d’embeddings de Gemini et un troisième extrait les métadonnées de sécurité avec un modèle Gemini Flash.
- Le résultat est stocké dans BigQuery, où Vector Search permet des recherches par similarité en SQL. Les annonces qui ne peuvent pas être traitées vont dans une table à part pour être revues, sans interrompre le flux.

Six mois d’historique en batch
Pour que la recherche fonctionne dès le premier jour, le système a aussi traité les annonces des six derniers mois. Ce chargement s’est fait en batch : Storage Transfer Service a rapatrié depuis S3 les images et l’historique Kafka, et plusieurs Cloud Run Jobs ont généré les vecteurs et les métadonnées avec les mêmes services que le flux en temps réel. Les résultats ont été réunis dans BigQuery et ajoutés à la table finale.

Un modèle choisi aussi pour son coût
Le système traite 1,2 million d’images par jour. À ce volume, une petite variation du coût par appel se transforme en une grosse dépense sur la facture finale et décide de la viabilité de la solution. Pour extraire les métadonnées de sécurité, plusieurs versions de Gemini ont été comparées : la sortie de la plus récente était nettement plus chère et faisait grimper les coûts, si bien que les deux flux, en temps réel et en batch, utilisent un modèle Flash antérieur, plus économique et suffisant pour cette tâche.
La suite
L’architecture validée, la plateforme peut intégrer la recherche par image à son application et étudier de nouveaux cas d’usage sur les mêmes vecteurs. Si votre entreprise souhaite appliquer la recherche vectorielle ou l’IA générative à ses données, découvrez nos services d’ingénierie des données et nos services cloud, ou parlez à un expert d’Evenbytes.
