Béranger THOMAS

ForzaEmbed

Framework Python de benchmarking pour modèles d'embedding textuel : grid search sur les stratégies de chunking et métriques de similarité, avec heatmap textuelle et visualisations des espaces d'embeddings.

Fiche technique
Statut Stable Date de sortie 2025-07-23 Catégorie NLP & RAG Langage Python Stack FastEmbed · sentence-transformers · t-SNE · SQLite Licence MIT

Contexte

Dans les pipelines RAG (Retrieval-Augmented Generation), la qualité du filtrage sémantique repose sur plusieurs leviers interdépendants : stratégie de découpage du texte (chunking), modèle de représentation vectorielle (embeddings), etc. En pratique, leurs performances varient selon la langue des documents, la taille des segments, le taux de recouvrement et la métrique de similarité retenue. L’absence d’outil d’évaluation systématique conduit à des choix d’architecture souvent empiriques, sans garantie que la configuration retenue soit optimale. ForzaEmbed est né de ce constat : il s’agit d’un projet dérivé de SmartWatch, où le besoin d’optimiser le filtre sémantique a nécessité la création d’un framework d’évaluation dédié.

Objectif

Le défi consistait à concevoir un outil automatisé capable d’explorer de façon exhaustive l’espace des hyperparamètres liés aux embeddings, et d’en restituer les résultats sous une forme visuelle immédiatement interprétable. Le livrable attendu est un framework Python open source, couplé à un moteur de rendu HTML interactif, produisant des rapports autonomes exploitables à la fois par des data scientists en phase de R&D et par des équipes projets devant justifier des choix techniques.

Démarche

Le framework s’organise autour d’un pipeline logiciel structuré en trois composants :

  1. Génération de l’espace de recherche (Grid Search) : à partir d’un fichier de configuration YAML, l’outil produit le produit cartésien de tous les hyperparamètres déclarés : modèles d’embedding (sentence-transformers, FastEmbed, API OpenAI ou Mistral), stratégies de chunking (LangChain, raw, semchunk, NLTK, spaCy), tailles de segments (jusqu’à 7 paliers, de 10 à 1000 caractères), taux de recouvrement (0 à 200), métriques de similarité (cosinus, euclidienne, Manhattan, produit scalaire, Chebyshev), et listes de mots-clés thématiques. Les combinaisons impossibles (ex : overlap supérieur à la taille du chunk) sont automatiquement exclues.

  2. Exécution parallélisée et cache persistant : Pour chaque combinaison valide, le texte source est segmenté et les embeddings sont calculés via la librairie FastEmbed – qui supporte nativement l’exécution multi-CPU/multi-GPU – complétée par un client HuggingFace pour les modèles additionnels. Une base de données SQLite locale sert de cache persistant : chaque chunk est haché et son vecteur est stocké, ce qui permet de ne pas recalculer les embeddings lors des variations de paramètres externes (par ex. métrique). Les segments sont ensuite évalués par similarité avec les thématiques utilisateur. Avec 7 tailles de chunk × 7 chevauchements × 5 stratégies × 5 métriques × 3 thèmes × 8 modèles (soit ~21 000 combinaisons), ce cache évite des redondances massives.

  3. Moteur de rendu autonome : Les résultats sont compilés dans un unique fichier HTML. Un bandeau semi-transparent flottant permet de manipuler les curseurs des hyperparamètres en temps réel. Le rapport intègre :

    • Une heatmap textuelle interactive : le texte est apparent, découpé en chunks, chaque chunk est coloré (rouge = similarité élevée, bleu = faible), avec affichage de la valeur normalisée (0–1) au survol.
    • Des projections 2D de l’espace d’embedding via t-SNE, UMAP ou PCA, avec séparation des chunks en deux clusters par seuil thématique.
    • Les scores de silhouette intra- et inter-clusters ainsi que les temps d’exécution par combinaison.

Caractéristiques

Exploitation pour le projet SmartWatch

ForzaEmbed a été utilisé pour optimiser le filtre sémantique de SmartWatch, une application de veille automatisée des horaires d’ouverture d’établissements publics. Plusieurs analyses ont été menées :

Impact

ForzaEmbed fournit aux ingénieurs RAG un outil de mesure objectif pour structurer leurs phases de R&D :