
Notre mission est de permettre à Josiane, l’agent d’accueil, de fournir des réponses rapides, précises et adaptées aux citoyens, qu’il s’agisse d’une question sur les horaires d’ouverture, les démarches administratives ou les délibérations municipales. Pour atteindre cet objectif, nous devons doter notre système RAG des outils nécessaires pour comprendre et exploiter efficacement les informations disponibles.
L’étape clé que nous abordons ici consiste à transformer les données textuelles de la mairie,comme les courriers, la FAQ ou encore les comptes-rendus de conseils municipaux, en vecteurs numériques compréhensibles par le modèle de langage. Ces vecteurs permettront de relier les questions des agents aux informations pertinentes en quelques millisecondes.
Prêt à franchir ce cap essentiel pour équiper Josiane d’un assistant numérique performant ?
Qu’est-ce que la vectorisation ?
La vectorisation est une étape clé en intelligence artificielle, qui consiste à convertir des données textuelles (mots, phrases ou documents) en vecteurs numériques. Ces vecteurs sont des représentations mathématiques permettant aux machines d’analyser, comprendre et traiter le langage humain. En d'autres termes, la vectorisation agit comme un "interprète" entre le langage humain et les algorithmes.
Imaginons que votre mairie souhaite analyser les demandes des citoyens reçues via un formulaire en ligne. La vectorisation permet de transformer chaque message (par exemple, "Demande de renouvellement de carte d’identité" ou "Problème avec l’éclairage public dans ma rue") en vecteurs numériques. Cela facilite leur tri automatique en catégories comme "État civil", "Infrastructure", ou "Services publics".
Pourquoi la vectorisation est-elle importante ?
La vectorisation est très importante et vous permet de :
Faciliter l’analyse automatique des textes : Les modèles d’intelligence artificielle peuvent identifier des thèmes récurrents dans les messages citoyens.
Capturer les relations entre les mots : Par exemple, "ordures ménagères" et "déchets" sont proches en signification et peuvent être traités comme des synonymes.
Permettre des comparaisons : Cela aide à analyser un volume important de courriers électroniques, de signalements ou de suggestions en les regroupant par similitude.
Supposons que votre équipe veuille détecter rapidement les demandes urgentes, comme un signalement de panne d’électricité. Grâce à la vectorisation, les textes similaires (ex. : "panne électrique dans mon quartier" ou "coupure de courant rue des Lilas") peuvent être regroupés automatiquement, permettant une réponse rapide et ciblée.
Pourquoi en avons-nous besoin ?
Les embeddings transforment des données complexes (texte, image, audio, etc.) en vecteurs numériques dans un espace continu. Cette conversion est essentielle pour permettre aux algorithmes d’IA d’exploiter des informations non structurées en capturant leurs relations sémantiques. De la vectorisation de mots à l’intégration dans de vastes modèles de langage, ces techniques révolutionnent notre manière de concevoir et d’interagir avec le langage et d’autres données.
Grâce aux embeddings, il devient possible de :
Rechercher des informations (par exemple, trouver un article correspondant à une requête).
Classer des textes dans des catégories (comme trier des e-mails en "spam" ou "non spam").
Comparer des documents pour évaluer leur similarité.
À l’origine, les embeddings ont été introduits pour remédier aux limites des représentations one-hot, qui génèrent des vecteurs très dispersés et de très haute dimension. Les méthodes classiques telles que Word2Vec, GloVe ou FastText convertissent chaque mot en un vecteur dense dont les coordonnées capturent la proximité sémantique entre termes – par exemple, les vecteurs de « chat » et « chien » se retrouvent proches dans l’espace vectoriel.
Exemple : Considérons le mot « souris ».
Dans la phrase « La souris se faufile dans la cuisine », le mot « souris » désigne l'animal.
Dans la phrase « J'utilise une souris pour cliquer sur les icônes de mon ordinateur », il désigne le dispositif informatique.
Les modèles classiques comme Word2Vec attribuent un unique vecteur dense à « souris » sans tenir compte du contexte global. Ainsi, le vecteur associé à « souris » sera identique dans les deux phrases, même si les significations sont très différentes. Cela montre bien que, sans information contextuelle globale, ces modèles ne peuvent pas distinguer les sens multiples d’un même mot.
Les avancées récentes ont mené au développement d’embeddings contextuels (BERT, GPT, Sentence-BERT, etc.) qui adaptent la représentation d’un mot en fonction de son contexte. Contrairement aux modèles statiques, ces méthodes permettent de distinguer des homonymes ou de saisir la nuance de sens d’un mot selon la phrase.
En résumé, la vectorisation et les embeddings sont des outils essentiels qui permettent aux machines d’interagir avec le langage humain, rendant possible une multitude d’applications en intelligence artificielle.
Le Massive Text Embedding Benchmark (MTEB) peut vous aider à choisir un modèle d'embedding adapté pour la mairie en vous fournissant une évaluation comparative de différents modèles sur une série de tâches Il permet en autre :
Sélection des tâches pertinentes
Évaluation détaillée sur des tâches spécifiques
Comparaison selon vos contraintes
Nous allons choisir ensemble le modèle d’embedding le plus adapté à notre besoin. Premièrement, définissons les critères de sélection.
Avant d’examiner les modèles, identifions les critères clés pour notre cas d’usage. Pour répondre aux questions administratives, nous nous focaliserons sur :
Retrieval (recherche d’information) : Permet d’identifier les documents les plus pertinents.
Clustering (regroupement de textes similaires) : Utile pour organiser les informations administratives.
MTEB ne fournit pas qu’un score global, il permet aussi de comparer les modèles sur des tâches précises. Nous examinerons les performances :
Sur des textes administratifs pour voir si le modèle est pertinent pour notre usage.
Sur les sous-tâches spécifiques (documents juridiques, techniques, etc.).
Sur la capacité zéro-shot (performance sans entraînement spécifique).
Comparons les modèles selon nos critères :
💡 Exemple d’analyse :
Langue : Français
Tâches : Retrieval, Clustering, Speed
Domaine : Gouvernement
Critères de sélection : Performance, compatibilité, rapidité
Notre sélection faite, nous allons tester les modèles sur un échantillon de documents administratifs pour vérifier leur efficacité en conditions réelles.
Dans le cadre de notre projet de RAG à la mairie de Trifouillis-sur-Loire, l'utilisation des embeddings améliorera la pertinence des réponses fournies par le système. En représentant les documents municipaux et les requêtes des citoyens sous forme de vecteurs, nous pourrons effectuer des recherches sémantiques plus efficaces et fournir des informations plus précises.
En combinant les capacités des plateformes Hugging Face et Mistral AI, nous pouvons tester et déployer différents modèles d'embeddings pour identifier ceux qui offrent les meilleures performances pour nos besoins spécifiques. Cette approche garantit une flexibilité et une efficacité accrues dans le traitement des requêtes des citoyens.
Hugging Face est une plateforme open source reconnue dans le domaine du traitement du langage naturel (NLP) et du machine learning. Elle propose la bibliothèque Transformers, qui offre un accès à une vaste collection de modèles pré-entraînés pour diverses tâches, y compris la génération d'embeddings.
Parmi les outils proposés, on trouve également Datasets pour la gestion de grands ensembles de données, Tokenizers pour le prétraitement du texte, et Spaces, un environnement interactif pour héberger et partager des applications d'IA. Soutenue par une communauté active, la plateforme vise à démocratiser l'accès à l'intelligence artificielle en simplifiant le développement et le déploiement de modèles de pointe.
Voici un exemple d’utilisation :
from sentence_transformers import SentenceTransformer
# Chargement du modèle SBERT
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
# Textes à vectoriser
textes = ["Le chat dort sur le tapis.", "Le chien joue dans le jardin."]
# Obtention des embeddings
embeddings = model.encode(textes)
print(embeddings)Dans cet exemple, nous chargeons le modèle 'all-MiniLM-L6-v2' et générons des embeddings pour deux phrases. Ces vecteurs peuvent ensuite être utilisés pour calculer la similarité entre les textes. Pour mesurer la similarité entre deux embeddings, on utilise généralement la similarité cosinus :
import numpy as np
# Vecteurs des deux textes
vec1 = embeddings[0]
vec2 = embeddings[1]
# Calcul de la similarité cosinus
similarité = np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))
print(f"Similarité : {similarité}")Une similarité proche de 1 indique que les textes sont sémantiquement similaires, tandis qu'une valeur proche de 0 suggère une dissemblance.
Nous allons maintenant exploiter les modèles d'embedding de Mistral, accessibles via des API serverless. Cette approche simplifie grandement notre démarche, car elle élimine la nécessité de gérer la capacité de calcul requise pour faire fonctionner ces modèles.
Voici un exemple :
from mistral.embedding import EmbeddingClient
# Initialisation du client
client = EmbeddingClient(api_key='YOUR_API_KEY')
# Texte à vectoriser
text = "Le chat dort sur le tapis."
# Obtention de l'embedding
embedding = client.get_embedding(text)
print(embedding)Cette approche nous permet d’utiliser un modèle d’embedding très performant sans se soucier de l’infrastructure et des ressources nécessaires à son exécution.
Dans cette vidéo, nous avons vu :
Découverte et accès à la plateforme Mistral : Présentation des fonctionnalités et de l'accès via API pour utiliser leurs modèles open source.
Obtention des clés API : Instructions pour générer une clé API et configurer l'accès aux services de Mistral.
Tester un modèle avec Hugging Face : Guide rapide pour récupérer un modèle via la bibliothèque Transformers et l'exécuter dans un environnement Python.

Dans le cadre du projet de la mairie de Trifouillis-sur-Loire, nous disposons d'un corpus de documents municipaux:
L'objectif est de visualiser comment se distribuent ces documents dans l'espace vectoriel, afin de mieux comprendre leurs relations sémantiques. Cette analyse est essentielle pour optimiser notre système RAG (Retrieval-Augmented Generation).
1. Comparez plusieurs textes issus du corpus municipal et mesurez leur similarité à l'aide de :
Mistral embeddings
Sentence-BERT
FastText
2. Visualisez les embeddings de ces textes sous forme graphique.
La vectorisation est essentielle pour rendre le texte compréhensible aux machines.
Les embeddings capturent les similarités sémantiques entre les textes.
Les modèles comme SBERT, BERT et Mistral sont populaires pour la vectorisation.
Les applications incluent la recherche, la classification, le clustering et le reranking.
Des plateformes comme Hugging Face et Mistral simplifient la mise en œuvre.
Maintenant que nous avons appris à vectoriser nos données, intégrons-les dans une base vectorielle !