Ce qu'il faut retenir
Un embedding est la projection d'un contenu textuel (phrase, document, entité) dans un espace vectoriel dense où la proximité géométrique traduit la similarité sémantique. En 2026, text-embedding-3-large (OpenAI), Cohere Embed 3 et BGE-M3 (BAAI) sont les références pour les applications B2B, avec des tradeoffs distincts sur le coût, le multilinguisme et la portabilité.
Le choix de la dimension (256 à 3 072) et la quantization (float32 → int8) déterminent votre compromis précision/coût. Pour la plupart des projets B2B, 1 024 dimensions en float32 offrent le meilleur équilibre. Sur des volumes > 10 millions de vecteurs, la quantization int8 réduit l'empreinte mémoire de 4× avec moins de 1 % de perte de précision.
Les embeddings ouvrent trois cas d'usage à fort ROI pour les ETI françaises : la recherche sémantique dans une base documentaire (RAG), la déduplication et le clustering de données métier, et la recommandation produit/contenu par similarité cosine. Chacun impose des contraintes différentes sur la base vectorielle — pgvector pour les projets déjà sur PostgreSQL, Qdrant ou Weaviate pour des volumes > 1 million de vecteurs avec filtres métadonnées.

Embeddings vectoriels 2026 : guide pratique pour applications métier
Les embeddings sont la brique invisible derrière toutes vos applications IA : RAG, recherche sémantique, déduplication, recommandation. Ce guide couvre les modèles, les bases vectorielles, les tradeoffs dimensionnels et la conformité RGPD pour les équipes techniques B2B.
Adapté à toute taille de structure
#Comprendre les embeddings : de la définition mathématique à l'usage concret
Un embedding est une représentation numérique d'un contenu — texte, image, audio ou vidéo — sous la forme d'un vecteur dense dans un espace à haute dimension. Pour du texte, cela signifie qu'une phrase ou un document est traduit en une liste de nombres flottants (ex. 1 024 ou 1 536 valeurs) qui capture sa signification sémantique.
La propriété fondamentale des embeddings est leur préservation de la similarité sémantique : deux phrases proches par le sens produisent des vecteurs proches dans l'espace géométrique. La distance entre deux vecteurs se mesure le plus souvent par la similarité cosine — valeur entre -1 et 1, où 1 signifie identiques et 0 orthogonaux.
import numpy as np
def cosine_similarity(vec_a: list[float], vec_b: list[float]) -> float:
a, b = np.array(vec_a), np.array(vec_b)
return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))
# Exemple : deux phrases sémantiquement proches
v1 = embed("Quel est le délai de livraison standard ?") # → vecteur 1536-dim
v2 = embed("Combien de temps faut-il pour recevoir ma commande ?") # → vecteur 1536-dim
print(cosine_similarity(v1, v2)) # → ~0.91 (très similaire)
Cette propriété est l'origine de toutes les applications pratiques : trouver des documents similaires, détecter des doublons, grouper des entités par thème, ou proposer des contenus proches de ce qu'un utilisateur vient de consulter.
Pour saisir l'intuition géométrique : imaginez un espace à 1 536 dimensions où chaque direction représente une notion sémantique abstraite. Les mots «facture», «avoir» et «bon de commande» se trouvent dans une région dense du même sous-espace — proche de «finance» et «comptabilité» — tandis que «recrutement» et «DPAE» occupent un autre sous-espace distant. Le modèle d'embedding a appris cette géographie sémantique en s'entraînant sur des milliards de paires de phrases.
Pourquoi maintenant ? Les embeddings existent depuis word2vec (2013) et GloVe (2014). Ce qui change en 2026, c'est la qualité des modèles de représentation — entraînés sur des corpus bien plus larges, multilingues, avec des techniques contrastives (SBERT, E5, BGE) qui maximisent précisément la propriété de similarité — et la disponibilité d'infrastructures vectorielles prêtes pour la production (pgvector, Qdrant, Weaviate) qui permettent des recherches par similarité sur des dizaines de millions de vecteurs en quelques dizaines de millisecondes.
#Modèles d'embeddings en 2026 : text-embedding-3, Cohere Embed 3, BGE-M3, Mistral Embed
Le marché des modèles d'embeddings s'est consolidé autour de quatre références en 2026. Voici leur positionnement précis pour les applications B2B.
#text-embedding-3-large (OpenAI)
Lancé en janvier 2024 et resté la référence commerciale en 2026, text-embedding-3-large produit des vecteurs de 3 072 dimensions (réductibles à 256-1 536 via la fonctionnalité de matryoshka). Ses atouts : des scores MTEB parmi les plus élevés sur les tâches de retrieval anglais, une API stable et bien documentée, et une intégration native dans l'écosystème Azure OpenAI.
Ses limites pour le B2B français : un coût de 0,13 $/million de tokens (3× plus cher que text-embedding-3-small), une dépendance à l'infrastructure OpenAI (hébergement US), et des performances en multilinguisme légèrement en retrait sur les langues européennes comparé à BGE-M3.
from openai import OpenAI
client = OpenAI()
response = client.embeddings.create(
input="Conditions générales de vente — Délai de paiement 30 jours net",
model="text-embedding-3-large",
dimensions=1536 # réduction matryoshka
)
vector = response.data[0].embedding # liste de 1536 floats
#Cohere Embed 3 (english-v3.0 + multilingual-v3.0)
Cohere Embed 3 se distingue par son modèle multilingual-v3.0 — 1 024 dimensions, 100+ langues, y compris le français avec des performances nettement supérieures à text-embedding-3 sur les corpus francophones. Son architecture est optimisée pour les tâches de classification et de clustering, ce qui en fait un choix privilégié pour la catégorisation automatique de tickets ou de documents métier.
Cohere propose également une API de re-ranking (rerank-3) qui s'intègre naturellement après un premier retrieval vectoriel pour affiner les résultats — un composant souvent sous-estimé dans les architectures RAG.
#BGE-M3 (BAAI)
BGE-M3 (Beijing Academy of AI) est le modèle open-weights de référence en 2026 pour les applications multilingues et souveraines. Ses caractéristiques clés :
- Trois modes de retrieval : dense (embedding classique), sparse (BM25-like) et multi-vector (ColBERT) dans un seul modèle
- 100+ langues avec des performances de pointe sur le MTEB Multilingual Leaderboard
- Fenêtre de 8 192 tokens (vs 512 pour la plupart des modèles) — fondamental pour l'indexation de longs documents sans chunking agressif
- Open-weights : déployable on-premise sur vos propres serveurs, sans appel API externe
Pour une ETI française soucieuse de souveraineté des données, BGE-M3 sur une instance OVH est la solution de référence. Le modèle tourne sur un GPU A100 ou H100 avec une latence < 50 ms par document de 512 tokens.
#Mistral Embed
Mistral Embed est le modèle d'embedding de Mistral AI, disponible via API depuis 2024. Ses atouts : une excellente qualité sur le français (Mistral est une entreprise française, le corpus d'entraînement intègre davantage de contenus francophones), un prix compétitif (0,1 $/million de tokens), et la possibilité d'un déploiement via OVH AI Deploy pour la souveraineté.
Sa limite principale est une fenêtre de contexte de 8 192 tokens et une seule dimension disponible (1 024), sans option de réduction matryoshka.
#Tableau comparatif des modèles 2026
| Modèle | Dimensions | Fenêtre | Prix ($/M tokens) | Multilinguisme | Open-weights | MTEB Retrieval |
|---|---|---|---|---|---|---|
| text-embedding-3-large | 256–3 072 | 8 191 tokens | 0,13 $ | Bon | Non | 54,9 |
| text-embedding-3-small | 512–1 536 | 8 191 tokens | 0,02 $ | Moyen | Non | 44,0 |
| Cohere Embed 3 multilingual | 1 024 | 512 tokens | 0,10 $ | Excellent | Non | 52,3 |
| BGE-M3 | 1 024 | 8 192 tokens | Gratuit (self-hosted) | Excellent | Oui | 54,7 |
| Mistral Embed | 1 024 | 8 192 tokens | 0,10 $ | Très bon (FR) | Via API | 46,8 |
Scores MTEB Retrieval (moyenne BEIR benchmark) — source : MTEB Leaderboard HuggingFace, mai 2026.
#Embeddings multilingues : cas spécifique du français dans les applications B2B
Le français pose des défis spécifiques que les modèles entraînés majoritairement sur de l'anglais ne gèrent pas toujours bien. Trois points de vigilance s'imposent en contexte B2B francophone.
#1. Le vocabulaire métier et les abréviations sectorielles
Les sigles et abréviations du droit français (DPAE, URSSAF, SIRET, TVA récupérable, DAF, DSI) sont sous-représentés dans les corpus d'entraînement anglophones. Un modèle peu exposé au français B2B peut produire des embeddings aberrants pour ces termes — les plaçant loin de leur contexte sémantique réel.
Test empirique à réaliser : comparez la similarité cosine entre «URSSAF» et «cotisations sociales employeur» sur text-embedding-3-large vs BGE-M3. Sur nos tests, BGE-M3 produit une similarité de 0,78 contre 0,61 pour text-embedding-3-large — un écart significatif pour un moteur de recherche sur une base documentaire RH.
#2. La gestion de l'accentuation et des variantes morphologiques
Le français est une langue morphologiquement riche : «analyse», «analyser», «analysons», «analysé» sont des formes d'un même concept. Les modèles modernes gèrent bien cette invariance morphologique, mais des erreurs de tokenisation (accents manquants, majuscules non gérées) peuvent dégrader les embeddings.
Bonne pratique : normalisez systématiquement votre texte avant embedding — suppression des doubles espaces, encodage UTF-8 strict, conservation des accents (ne pas striper les diacritiques). Contrairement à BM25 keyword, les embeddings denses ne bénéficient pas d'un stemming agressif.
#3. Le code-switching français/anglais dans les documents techniques
Les documents B2B français mélangent souvent les deux langues : spécifications techniques en anglais, contexte métier en français. Les modèles monolingues échouent sur ces documents hybrides. BGE-M3 et Cohere Embed 3 multilingual gèrent nativement ce code-switching — ils ont été entraînés sur des paires de traduction et des documents mixtes.
Pour un corpus de documentation technique (ex. manuels ERP en anglais + emails opérationnels en français), BGE-M3 est systématiquement recommandé.
#Dimensions, quantization et tradeoffs : 256 vs 1 536 dimensions
Le choix de la dimensionnalité est l'un des tradeoffs les plus importants dans un projet d'embeddings. Il détermine simultanément la précision sémantique, la vitesse de recherche et le coût de stockage.
#L'impact des dimensions sur la précision
La relation entre le nombre de dimensions et la précision n'est pas linéaire. On observe typiquement :
- 256 dimensions : perte de 6 à 10 % de précision vs la dimension maximale. Acceptable pour des tâches de classification grossière ou des recommandations à faible enjeu.
- 512 dimensions : perte de 3 à 5 %. Bon compromis pour des volumes > 50 millions de vecteurs.
- 1 024–1 536 dimensions : moins de 2 % de perte. Le sweet spot pour la majorité des applications B2B.
- 3 072 dimensions (text-embedding-3-large max) : précision maximale, mais coût de stockage 3× supérieur à 1 024 dimensions pour un gain marginal sur les tâches de retrieval standard.
La fonctionnalité matryoshka de text-embedding-3 (OpenAI) permet de générer une seule fois le vecteur complet (3 072 dimensions) et d'en extraire un sous-vecteur tronqué (ex. 1 536 ou 256 dimensions) qui reste cohérent. C'est une approche élégante pour gérer des scénarios multi-niveaux : un premier filtre grossier à 256 dimensions, suivi d'un re-ranking à 1 536 dimensions sur les top-50 résultats.
#Quantization : float32, int8, binary
La quantization réduit la précision numérique de chaque composante du vecteur pour diminuer l'empreinte mémoire :
| Format | Bits/valeur | Mémoire (1M vecteurs × 1024 dim) | Perte de précision |
|---|---|---|---|
| float32 | 32 bits | ~4 GB | Référence (0 %) |
| float16 | 16 bits | ~2 GB | < 0,1 % |
| int8 | 8 bits | ~1 GB | 0,5 à 1 % |
| binary | 1 bit | ~128 MB | 3 à 8 % |
Pour la plupart des projets B2B avec des volumes inférieurs à 5 millions de vecteurs, float32 est recommandé — la mémoire requise reste inférieure à 20 GB, gérable sur une instance standard. Au-delà de 10 millions de vecteurs, la quantization int8 devient un choix rationnel : 4× moins de mémoire pour moins de 1 % de perte sur les tâches de retrieval.
Qdrant et Weaviate supportent nativement la quantization int8 et binary avec des benchmarks publiés. Pinecone applique sa propre quantization interne — vous n'en contrôlez pas les paramètres.
#La règle pratique pour les projets B2B
- < 500 000 documents, tâche de haute précision → 1 536 dimensions, float32
- 500 000 à 5 millions de documents → 1 024 dimensions, float32
- > 5 millions de documents → 1 024 dimensions, int8, ou 512 dimensions float32 avec re-ranking
- Contrainte mémoire sévère (edge, embarqué) → 256 dimensions binary avec un modèle matryoshka
#Base vectorielle : pgvector, Pinecone, Qdrant, Weaviate — quand choisir quoi
Une base vectorielle est un système de stockage et d'indexation spécialisé pour les vecteurs denses, optimisé pour les requêtes de similarité approximative (ANN — Approximate Nearest Neighbors). Le choix de la base vectorielle dépend de votre volume, de vos contraintes d'infrastructure et de vos besoins en filtrage.
#pgvector : la solution pour les projets PostgreSQL existants
pgvector est une extension PostgreSQL open-source qui ajoute le type de données vector et les opérateurs de similarité cosine, L2 et produit scalaire. Si votre application repose déjà sur PostgreSQL, c'est le point de départ naturel — pas de nouvelle infrastructure à gérer, transactions ACID natives, et jointures SQL entre vecteurs et métadonnées relationnelles.
CREATE EXTENSION vector;
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT,
embedding vector(1536),
category VARCHAR(50),
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100); -- IVFFlat index pour ANN
-- Recherche sémantique avec filtre métadonnée
SELECT id, content, 1 - (embedding <=> $1::vector) AS score
FROM documents
WHERE category = 'contrat'
ORDER BY embedding <=> $1::vector
LIMIT 10;
Limites de pgvector : l'index IVFFlat se dégrade en performance au-delà de 1 à 2 millions de vecteurs. L'index HNSW (disponible depuis pgvector 0.5) offre de meilleures performances en recall mais consomme davantage de mémoire. Pour les volumes > 5 millions de vecteurs avec des requêtes < 50 ms, une base vectorielle dédiée s'impose. Consultez notre guide complet sur la comparaison des bases vectorielles pgvector, Pinecone et Qdrant.
#Pinecone : la solution managée sans opérations
Pinecone est un service vectoriel entièrement managé (SaaS). Sa proposition de valeur est la simplicité opérationnelle : pas de serveur à gérer, autoscaling automatique, et une API Python/TypeScript intuitive.
Ses atouts : démarrage en 5 minutes, gestion transparente des index à très grande échelle (> 100 millions de vecteurs), et une fonctionnalité de namespaces qui permet de multi-tenant votre index sans coût de duplication.
Ses limites en contexte B2B français : hébergement US uniquement (AWS us-east-1 par défaut, AWS eu-west-1 disponible mais sans garantie SecNumCloud), et un modèle de tarification qui devient significatif au-delà de 10 millions de vecteurs (à partir de 70 $/mois pour le plan Standard).
#Qdrant : la solution haute performance open-source
Qdrant est une base vectorielle open-source écrite en Rust, déployable on-premise ou via Qdrant Cloud. Ses points forts :
- Filtrage sur payload : filtres complexes sur les métadonnées avant ou pendant la recherche vectorielle — fondamental pour les applications multi-tenant ou multi-catégorie
- Quantization native : int8, binary et product quantization configurables par collection
- Performances benchmarkées : 1 700 requêtes/seconde à 99 % de recall sur 1 million de vecteurs (1 536 dim) sur un serveur 4 vCPU / 16 GB RAM
- Déploiement OVH possible pour la souveraineté
Qdrant est le choix de prédilection de Nehos pour les projets RAG à fort volume avec des contraintes de filtrages complexes.
#Weaviate : la solution avec graphe sémantique intégré
Weaviate combine recherche vectorielle et graphe de connaissances. Son atout distinctif est sa capacité à modéliser des relations entre entités (documents → auteurs → projets → clients) et à les requêter conjointement avec la similarité vectorielle.
Son module hybrid search (BM25 + dense retrieval) est l'un des plus aboutis du marché — pertinent pour les bases documentaires où certaines requêtes sont keyword-based (numéros de référence, codes produits) et d'autres sémantiques.
#Matrice de décision
| Critère | pgvector | Pinecone | Qdrant | Weaviate |
|---|---|---|---|---|
| Volume max recommandé | < 2M vecteurs | Illimité | > 10M vecteurs | > 5M vecteurs |
| Hébergement souverain | Oui (PostgreSQL) | Partiel (EU-W1) | Oui (self-hosted) | Oui (self-hosted) |
| Filtrages métadonnées | SQL natif | Metadata filters | Payload filters avancés | GraphQL |
| Hybrid search (BM25 + dense) | Non (contrib) | Non | Oui | Oui (natif) |
| Complexité d'opération | Faible | Très faible | Moyenne | Moyenne |
| Coût (10M vecteurs) | Infrastructure PG | ~140 $/mois | Infrastructure | Infrastructure |
| Open-source | Oui | Non | Oui | Oui |
→ Pour aller plus loin : découvrez nos outils gratuits — calculateurs ROI, diagnostics techniques et quiz interactifs pour affiner votre réflexion.
#Cas d'usage n°1 : recherche sémantique dans une base documentaire (RAG)
La recherche sémantique sur base documentaire est le cas d'usage le plus déployé des embeddings en entreprise en 2026. Elle est au cœur des architectures RAG (Retrieval-Augmented Generation) qui permettent à un LLM de répondre à des questions en s'appuyant sur votre base de connaissances interne.
#Le pipeline RAG standard
Phase d'indexation (offline) :
- Extraction : parsing des documents sources (PDF, Word, HTML, emails) vers texte brut avec des outils comme pypdf2, pdfminer ou Docling
- Chunking : découpage du texte en segments de 256 à 512 tokens avec overlap de 50 tokens — un chunk trop court perd le contexte, un chunk trop long dilue le signal sémantique
- Embedding : chaque chunk est transformé en vecteur via le modèle d'embedding choisi
- Indexation : stockage du vecteur + métadonnées (source, date, catégorie, droits d'accès) dans la base vectorielle
Phase de requête (online) :
- La question utilisateur est transformée en vecteur avec le même modèle d'embedding
- ANN search sur la base vectorielle → top-k chunks les plus similaires (typiquement k=5 à 10)
- Re-ranking optionnel des chunks avec un cross-encoder (Cohere Rerank, BGE-Reranker) pour affiner la pertinence
- Injection des chunks dans le prompt LLM avec la question → génération de la réponse
→ Pour aller plus loin : découvrez nos outils gratuits — calculateurs ROI, diagnostics techniques et quiz interactifs pour affiner votre réflexion.
async def rag_query(question: str, collection: str = "documents") -> str:
# 1. Embedding de la question
q_vector = await embed_text(question)
# 2. Retrieval ANN (Qdrant)
results = qdrant_client.search(
collection_name=collection,
query_vector=q_vector,
query_filter=Filter(must=[FieldCondition(key="access_level", match=MatchValue(value="public"))]),
limit=8
)
# 3. Construction du contexte
context = "\n\n---\n\n".join([r.payload["text"] for r in results])
# 4. Génération LLM
prompt = f"""Réponds à la question suivante en te basant uniquement sur le contexte fourni.
Contexte :\n{context}\n\nQuestion : {question}"""
return await llm.generate(prompt)
Pour une présentation détaillée des patterns d'architecture RAG et des variantes avancées (RAG-Fusion, HyDE, Contextual Retrieval), consultez notre article dédié sur l'architecture RAG et les outils pour entreprise.
#Les métriques de performance RAG à surveiller
Trois métriques Ragas sont indispensables pour évaluer et maintenir un pipeline RAG en production :
- Context Recall (cible > 0,85) : les chunks nécessaires à la réponse sont-ils bien récupérés ?
- Faithfulness (cible > 0,90) : la réponse générée est-elle fidèle aux chunks récupérés ?
- Answer Relevancy (cible > 0,80) : la réponse répond-elle bien à la question posée ?
Un context recall < 0,80 signale un problème de chunking ou d'index — les documents pertinents ne remontent pas. Une faithfulness < 0,85 signale un problème de génération LLM — le modèle hallucine par-delà le contexte fourni. Consultez notre comparatif des LLM entreprise 2026 pour choisir le modèle adapté à votre pipeline RAG.
#Cas d'usage n°2 : déduplication et clustering de données métier
Les embeddings permettent de détecter la similarité entre enregistrements à une échelle impraticable avec des approches symboliques (règles métier, Levenshtein sur les chaînes). Deux applications à fort ROI.
#Déduplication de base clients ou fournisseurs
Une base CRM accumule inévitablement des doublons : "ACME FRANCE SAS", "Acme France", "ACME France S.A.S." représentent le même tiers mais ne matchent pas en comparaison exacte. Les embeddings capturent la similarité sémantique au-delà de la forme orthographique.
Méthode : générer un embedding composite pour chaque enregistrement (raison sociale + ville + secteur), calculer la matrice de similarité cosine sur les paires candidates, puis appliquer un seuil (ex. > 0,92) pour signaler les doublons potentiels à validation humaine.
Sur une base de 50 000 tiers, cette approche identifie typiquement 3 à 8 % de doublons non détectés par les règles classiques — avec un taux de faux positifs < 2 % pour un seuil bien calibré.
#Clustering de tickets de support
Grouper automatiquement des tickets de support en thèmes émergents permet d'identifier les problèmes récurrents sans définir les catégories a priori. Le workflow standard :
- Embedding des descriptions de tickets (modèle recommandé : BGE-M3 pour le français)
- Réduction dimensionnelle avec UMAP (2D pour visualisation, 50D pour clustering)
- Clustering avec HDBSCAN (algorithme robuste au bruit, sans nombre de clusters fixé a priori)
- Labellisation des clusters avec un LLM : demander à GPT-4o ou Mistral de générer un titre pour les 5 tickets les plus centraux de chaque cluster
Cette approche remplace avantageusement un clustering basé sur des règles de mots-clés, qui requiert une maintenance manuelle permanente.
import umap
import hdbscan
import numpy as np
# Réduction dimensionnelle
reducer = umap.UMAP(n_components=50, metric='cosine', random_state=42)
embeddings_reduced = reducer.fit_transform(np.array(ticket_embeddings))
# Clustering
clusterer = hdbscan.HDBSCAN(min_cluster_size=15, metric='euclidean')
labels = clusterer.fit_predict(embeddings_reduced)
# Résultats
print(f"{len(set(labels)) - 1} clusters détectés")
print(f"{sum(labels == -1)} tickets non clusterisés (bruit)")
#Cas d'usage n°3 : recommandation produit/contenu par similarité
La recommandation basée sur les embeddings est une alternative aux systèmes de filtrage collaboratif (qui nécessitent un historique d'interactions dense) et aux règles métier manuelles (qui ne passent pas à l'échelle).
#Recommandation de contenu éditorial
Pour un site B2B avec une base de ressources documentaires (articles, livres blancs, études de cas), les embeddings permettent de construire un moteur de recommandation «articles similaires» en quelques dizaines de lignes de code :
- Embedding de chaque article via son titre + premier paragraphe (ou résumé)
- Lors de la consultation d'un article, ANN search pour retrouver les top-5 articles les plus proches
- Filtrage par catégorie ou date si nécessaire
Contrairement aux approches collaborative filtering, ce moteur fonctionne dès le premier contenu publié — pas de cold start problem. Et il capture des similarités thématiques que des tags manuels manqueraient.
#Recommandation produit B2B
Dans un contexte de catalogue produits industriels (pièces détachées, équipements, références techniques), la recherche sémantique par embedding résout le problème de la description hétérogène : un client qui tape «joint torique 50mm étanchéité» doit trouver les références dont la description technique mentionne «O-ring DN50» ou «seal gasket Ø50».
La combinaison hybrid search (BM25 pour les codes exacts + dense retrieval pour les descriptions sémantiques) est l'architecture recommandée pour les catalogues B2B — elle maximise le recall sur les requêtes à la fois spécifiques et vagues. Cette architecture est nativement supportée par Weaviate et Qdrant.
Ce type de cas d'usage s'intègre dans des applications complètes gérées par des agents IA capables de combiner recherche vectorielle, appel d'API métier et génération de réponse. Notre guide sur les agents IA vs chatbots et RPA détaille les patterns architecturaux adaptés.
#RGPD et embeddings : les embeddings sont-ils des données personnelles ?
La question de la qualification juridique des embeddings est stratégique pour tout projet traitant des documents contenant des données personnelles (emails, contrats, dossiers RH). La réponse est nuancée et dépend du contexte.
#La position de principe : les embeddings sont potentiellement des données personnelles
Selon le RGPD (Règlement (UE) 2016/679), une donnée personnelle est «toute information se rapportant à une personne physique identifiée ou identifiable». La CNIL considère qu'un vecteur d'embedding peut constituer une donnée personnelle si :
- Le vecteur a été généré à partir de données personnelles (ex. embedding d'un email dont l'auteur est identifiable)
- Il est possible de reconstruire partiellement le contenu original à partir du vecteur (inversion partielle)
- Le vecteur permet d'identifier ou de ré-identifier la personne par comparaison avec d'autres vecteurs connus
La troisième condition est la plus débattue : une recherche ANN sur un embedding de référence (ex. le profil vectoriel d'un collaborateur connu) peut retrouver tous les documents proches — y compris des documents supposément anonymes mais qui lui sont attribuables par contenu.
#Les obligations qui en découlent
Si vos embeddings sont qualifiés de données personnelles (ou si vous opérez par précaution), les obligations RGPD s'appliquent :
- Licéité du traitement : base légale identifiée (consentement, intérêt légitime, contrat)
- Limitation des finalités : les embeddings générés pour la recherche documentaire ne peuvent pas être réutilisés pour du profilage comportemental
- Durée de conservation : les vecteurs doivent être supprimés en même temps que les documents sources lors d'une demande de suppression (droit à l'effacement)
- Localisation des données : les appels API vers OpenAI ou Cohere transfèrent le texte source vers des serveurs américains — ce transfert hors UE nécessite des garanties (clauses contractuelles types, DPA)
- Registre des traitements : le traitement d'embedding doit figurer dans votre registre RGPD
#Les mesures techniques recommandées
Anonymisation préalable : avant de générer les embeddings, anonymisez les données personnelles avec un outil de NER (Presidio de Microsoft, spaCy avec le modèle fr_core_news_lg). Remplacez noms, emails, SIRET, IBAN par des placeholders — «Jean Dupont» devient «[PERSONNE_1]».
Hébergement souverain : déployez BGE-M3 ou Mistral Embed on-premise (OVH AI Deploy) pour éviter le transfert de données vers des APIs tierces. Combinez avec pgvector ou Qdrant auto-hébergé sur infrastructure certifiée.
Isolation par tenant : dans une architecture multi-client, assurez-vous que les vecteurs d'un client ne sont pas requêtables par un autre. Qdrant's namespaces et les filtres de payload offrent cette isolation sans coût de duplication.
Pour une vue complète sur la double conformité RGPD + AI Act, notre article dédié détaille les obligations en 2026 : RGPD et AI Act — double conformité pour les entreprises françaises. Si vous traitez des données hébergées sur cloud souverain, consultez également notre analyse du cloud souverain en France : OVH, Scaleway et Outscale.
#La bonne question à poser à votre DPO
Plutôt que de demander «nos embeddings sont-ils des données personnelles ?» — question dont la réponse dépend de nombreux paramètres — posez les trois questions opérationnelles suivantes :
- Les documents sources contiennent-ils des données personnelles non anonymisées ? → Si oui, appliquez une anonymisation avant embedding
- Nos vecteurs sont-ils stockés sur des serveurs localisés hors UE ? → Si oui, vérifiez la base légale du transfert ou migrez vers une solution souveraine
- Peut-on croiser nos vecteurs avec d'autres datasets pour ré-identifier des personnes ? → Si oui, la segmentation des index et le contrôle d'accès fine-grained sont obligatoires
Ces questions structurées permettent d'engager une conversation productive avec le DPO et de documenter les mesures prises dans le registre des traitements. Pour aller plus loin sur la sécurité des pipelines IA, consultez notre checklist OWASP LLM pour les agents en entreprise et notre guide des outputs structurés JSON avec LLM pour sécuriser les interfaces entre embeddings et LLM dans vos pipelines.
Si votre projet intègre des LLM open source auto-hébergés en complément des embeddings, notre analyse des LLM open source en 2026 : LLaMA, Mistral, DeepSeek couvre les options disponibles. Enfin, si vous souhaitez évaluer objectivement vos modèles d'embeddings avant déploiement, notre guide de benchmark LLM pour entreprise détaille la méthodologie d'évaluation à appliquer.