- Les embeddings offrent récemment un potentiel de progrès révolutionnaire dans le domaine de la rédaction technique
- Ils ont la particularité de renvoyer un tableau numérique de dimension fixe, quelle que soit la taille du texte d’entrée
- Ce tableau numérique permet une comparaison mathématique entre des textes arbitraires
- Les embeddings calculent la distance entre les significations des textes dans un espace multidimensionnel, ce qui permet des usages variés comme les recommandations par similarité, l’analyse sémantique, etc.
- À l’avenir, les sites de documentation technique pourraient publier leurs données d’embedding, ce qui devrait élargir les nouveaux outils et les cas d’usage communautaires
Vue d’ensemble de la technologie d’embedding fondée sur le machine learning
- Dans les technologies de machine learning, contrairement aux modèles de génération de texte, les embeddings ont le potentiel d’avoir un impact révolutionnaire sur la rédaction technique
- Ces dernières années, l’usage des embeddings est devenu bien plus accessible
- Grâce aux embeddings, les rédacteurs techniques peuvent effectuer des comparaisons et analyses sémantiques entre différents textes
Se forger une intuition des embeddings
- Un embedding prend en entrée un texte (mot, phrase, ensemble de documents, etc.) et renvoie un tableau numérique de taille fixe
- Quelle que soit la longueur du texte d’entrée, il produit toujours des données de même taille
- Cela rend possible une comparaison mathématique même entre des textes arbitraires de longueurs différentes
Comment générer des embeddings
- Il est possible de générer des embeddings en quelques lignes de code via les principaux fournisseurs de services
- Selon le modèle utilisé, la taille du tableau d’embedding varie : dans le cas de Gemini, 768 valeurs sont renvoyées, et dans le cas de Voyage AI, 1024
- Comme la signification des embeddings diffère totalement selon le fournisseur ou le modèle, ils ne sont pas interopérables
Coût et impact environnemental
- La génération d’embeddings en elle-même n’est pas très coûteuse
- On estime que le processus consomme moins de ressources de calcul qu’un modèle de génération de texte, mais davantage d’informations seront nécessaires à l’avenir pour évaluer son impact environnemental
Critères de choix d’un modèle d’embedding
- Le modèle le plus adapté dépend notamment de sa capacité à prendre en charge de grands volumes de données en entrée
- En 2024, le voyage-3 de Voyage AI offre la limite d’entrée la plus élevée
- Il est important de choisir un modèle adapté à l’objectif et aux besoins
La notion d’espace multidimensionnel
- Chaque valeur du tableau numérique d’embedding correspond à une coordonnée dans un espace multidimensionnel, où les caractéristiques du texte sont représentées par une position sémantique
- Par exemple, une opération comme
king - man + woman ≈ queen montre qu’il est possible de représenter des relations sémantiques
- Les caractéristiques de chaque dimension de l’espace d’embedding sont, pour la plupart, obscures et abstraites
- Ce processus permet à la machine d’apprendre le sens et d’inférer la signification des textes
Comparaison et stockage des embeddings
- Les embeddings générés sont stockés pour chaque texte (par exemple, chaque page) dans une base de données ou un système équivalent
- En calculant la distance mathématique entre deux embeddings (au moyen de l’algèbre linéaire), il est possible d’évaluer leur similarité sémantique
- Avec des bibliothèques comme NumPy ou scikit-learn, il est peu nécessaire d’implémenter soi-même des formules complexes
Exemples d’application des embeddings
- Sur les sites de documentation technique, les embeddings sont utilisés efficacement pour les fonctions de recommandation de pages associées
- Après avoir généré un embedding pour chaque page, on peut recommander des documents liés sémantiquement en regroupant les pages ayant une forte similarité numérique
- Il suffit de régénérer l’embedding à chaque modification du contenu d’une page, ce qui offre une excellente efficacité
- Les résultats obtenus sur la documentation [Sphinx] ont montré des performances positives
Communauté et potentiel des données ouvertes
- À l’avenir, les sites de documentation pourraient fournir des données d’embedding via une API REST ou des well-known URIs
- Cela permettrait à la communauté de développer divers outils et services applicatifs
Conclusion
- Il est fascinant de pouvoir relier la notion d’espace à plusieurs centaines de dimensions au travail quotidien
- L’adoption des embeddings laisse entrevoir un potentiel de progrès majeur pour la maintenance documentaire et l’extension des fonctionnalités
1 commentaires
Avis Hacker News
Bonjour, je voulais remercier l’auteur de cet article
Je signale qu’une discussion similaire avait déjà eu lieu il y a 6 mois
Dire que « les embeddings sont sous-estimés » visait à souligner qu’ils sont un outil plus utile aux rédacteurs techniques qu’aux praticiens du machine learning
Je suis conscient qu’il manque dans cet article des détails précis sur la manière d’utiliser les embeddings en rédaction technique
Je prépare des projets et des billets de blog sur l’utilisation des embeddings
Les embeddings sont importants parce qu’ils peuvent aider à résoudre trois problèmes difficiles en rédaction technique
Pour permettre d’expérimenter publiquement le problème de la difficulté à trouver facilement l’information voulue par l’utilisateur, j’ai appliqué une couche UX de « semantic scrolling »
Plutôt qu’une recherche, on peut parcourir des clusters sous forme d’une arborescence
<details>/<summary>[1] est le point de départ, et [2] est la collection complète (livres, films, musique, animation, etc.)
Je partage aussi les liens
Il vaudrait mieux structurer le contenu pour qu’il parle davantage aux rédacteurs techniques qu’aux experts du machine learning
Par exemple, il serait bien d’expliquer plus en détail la partie sur « découvrir les connexions entre textes à une échelle auparavant impossible »
Placer des exemples d’application plus tôt dans le texte serait plus efficace pour les lecteurs
Comme exemple d’application directe des embeddings à la rédaction technique, je recommande un article académique connexe
Lien fourni
Après lecture, je me demande quelle était la qualité des résultats
Sans aller jusqu’aux evals si appréciées côté machine learning, j’aimerais savoir si, globalement, les résultats semblaient raisonnables
J’ai lu l’article mais je n’y ai pas trouvé d’explication de ce qu’est un « embedding »
Le troisième paragraphe parle de ses usages, mais il manque au début une définition de l’embedding lui-même
Pour un débutant, cela semble trop élémentaire
Après lecture, je n’en ai retiré ni information nouvelle ni véritable insight
Si l’article avait au moins montré un aperçu d’un exemple central d’usage des embeddings, j’aurais davantage attendu la suite
Merci pour le partage
Un autre avantage des embeddings et de la recherche par embeddings est qu’on peut les mettre en œuvre côté client avec une charge limitée
Les modèles ONNX peuvent être chargés et exécutés avec transformer.js
On peut aussi créer un index comme hnsw et l’héberger statiquement
J’ai moi-même réalisé une démo open source
Il suffit de représenter l’index sous forme de fichier Parquet interrogeable et de le requêter avec duckdb
Avec Github Pages, c’est faisable gratuitement ou presque
Le fait qu’on puisse faire des embeddings côté client en JS est une découverte pour moi
J’ai hâte de voir les nouvelles applications que cela pourrait ouvrir pour les sites de documentation
J’ai commencé à m’intéresser à Parquet et Polars grâce à un article que j’avais lu auparavant
J’avais justement des questions sur ce type d’implémentation
J’hésitais à adopter la recherche par embeddings à cause des inquiétudes sur la latence
Si l’on garde le modèle en local pour le rendu, je me demande quelle est la qualité par rapport à OpenAI/Google
Le gratuit et l’instantanéité sont des avantages
Ce serait bien d’expliquer en détail ce qui se passe dans la démo
J’ai du mal à comprendre le résultat
J’aimerais que la partie disant que « les embeddings renvoient toujours un tableau de nombres de même taille quelle que soit la taille du texte d’entrée, ce qui permet de comparer mathématiquement des textes arbitraires entre eux » soit expliquée plus clairement
Une fonction de hash produit elle aussi un résultat de taille fixe quelle que soit la taille de l’entrée, mais la comparaison mathématique de ce résultat et celle d’un embedding sont totalement différentes dans leur sens
Il faut insister sur le fait que la qualité d’un embedding dépend de son processus d’entraînement
Il n’existe pas d’« embedding universel » permettant des comparaisons pertinentes pour des textes arbitraires
Je partage aussi les liens
Les embeddings compressent et représentent une entrée volumineuse un peu comme un hash, mais contrairement à un hash, ils portent un sens intrinsèque
Du coup, je me demande s’il existe des recherches sur un « cracking » consistant à générer en sens inverse un texte de signification proche à partir d’un embedding
On pourrait peut-être aussi inclure, dans l’évaluation du token suivant d’une sortie de LLM, la similarité avec l’embedding ou l’évolution de sa direction
Comme l’auteur mentionne des opérations entre vecteurs d’embedding, j’imagine si une « algèbre du sens » pourrait aussi s’appliquer à des textes de grande taille comme des paragraphes entiers ou des livres
Je me demande aussi s’il serait possible de vectoriser un concept central comme « l’affinité » et de l’ajouter à un texte existant
« Générer en sens inverse un texte de sens proche à partir d’un embedding » s’appelle embedding inversion, ou Universal Zero-shot Embedding Inversion
Il existe des articles sur le sujet, et les usages d’embeddings CLIP avec la diffusion en image sont également liés
En gros, les embeddings jouent un rôle comparable à celui des fuzzy hashes
Je ne suis pas spécialiste du domaine, mais des recherches sur l’inference-time intervention semblent aussi liées
Lien vers l’article joint
Dire que « les embeddings permettent des avancées de tout premier plan en rédaction technique » n’est pas assez concret et ne m’aide pas en tant que lecteur
En lisant ou en écrivant de la documentation technique, je n’ai généralement jamais souhaité un widget de « pages similaires »
La thèse figure dans le deuxième paragraphe
Les embeddings permettent aux rédacteurs techniques de trouver des liens entre textes d’une manière auparavant impossible à découvrir
Je reconnais que le billet ne montre pas concrètement cette thèse par des exemples
Je pense que les embeddings peuvent résoudre plusieurs difficultés de la rédaction technique, et je présenterai des exemples directs plus tard
Au-delà des documents liés, une excellente recherche dans la documentation technique est très utile
Les embeddings sont particulièrement utiles pour le « fuzzy matching » et permettent de retrouver la fonctionnalité réellement cherchée même si l’utilisateur ne se souvient pas des termes exacts
Une approche hybride combinant recherche par mots-clés et recherche par similarité vectorielle est efficace
J’aimerais trouver davantage d’exemples d’usage concrets
L’analogie avec une carte en 2D est un bon point de départ pour comprendre, mais les embeddings fonctionnent dans des centaines, voire des milliers de dimensions
Le sens de chaque dimension n’est pas clair non plus, et l’exemple
king - man + woman = queenn’est pas dû à l’existence d’une « dimension du genre », mais à celle d’une « direction » particulièreEn n dimensions, il existe de manière exponentielle une très grande variété de directions presque orthogonales
C’est la raison pour laquelle on peut faire tenir des milliards de concepts dans un espace à 1000 dimensions
Dans les vrais articles arXiv, si l’on injecte 1000 mots masculins dans un embedding, on n’obtient pas précisément 950 mots féminins
Une vingtaine se regroupent de façon visible, mais comme il y a beaucoup de dimensions, dès qu’on projette, n’importe quoi peut avoir l’air de « coller »
Quand N augmente, les résultats deviennent facilement ambigus
Les embeddings fondés sur les transformers prennent en compte le contexte et sont donc bien supérieurs aux anciens word vectors
Même en recherche plein texte, les embeddings sensibles au contexte résolvent efficacement des problèmes de recherche d’information tentés depuis 50 ans, notamment sur le traitement des synonymes
Merci pour cette critique détaillée ; je reconnais qu’expliquer cela comme si une dimension unique correspondait univoquement à un concept était une erreur conceptuelle
Je vais retravailler l’article pour mieux préciser le concept, ainsi que le fonctionnement de la similarité cosinus
J’ai le sentiment que ces commentaires améliorent la qualité de ma réflexion
Il faut souligner que l’expression correcte n’est pas « dimensions presque orthogonales », mais « directions presque orthogonales »
Je m’interroge, avec le Johnson-Lindenstrauss lemma, sur la conservation des dimensions et la précision de préservation des distances dans les embeddings
Pour préserver les distances avec une erreur de 10 %, il faudrait environ 18 000 dimensions
Un lien Wikipédia est également indiqué
Plus précisément encore, il ne s’agit pas de « dimensions presque orthogonales », mais de « directions presque orthogonales »
Si chaque dimension correspondait à un concept significatif, par exemple une dimension du genre, il serait alors facile de voir que la différence entre
kingetqueenne se situe que sur une seule dimensionSi chaque concept avait sa propre dimension, on pourrait suivre intuitivement les concepts selon leurs différences
Je présente un bon article sur le concept de vecteurs presque orthogonaux
Lien partagé
Je me demande s’il s’agit du principe selon lequel on peut encoder
2^ndirections en traitant chaque dimension comme un bit, ou si je me trompeSi le genre est représenté sur deux dimensions, est-ce qu’on ne risque pas de ne plus pouvoir distinguer « le genre est différent » de « chaque dimension a une composante différente » ?
Même si la visualisation est impossible, on peut quand même calculer la distance euclidienne
On peut réduire les dimensions avec des outils comme UMAP
À propos de l’exemple
king-man+woman=queen, l’addition vectorielle ne fonctionne pas toujours comme on le souhaiteLe sens peut être limité à la seule direction et à la seule magnitude d’un vecteur, et comme le réseau apprend des comportements non linéaires, le sens peut varier selon le point de départ
Il y a donc des limites à généraliser à partir de simples opérations vectorielles sans preuve expérimentale
Les embeddings constituent un nouveau bond vers l’universalité, comme l’alphabet ou les nombres
Lien partagé
Question à un expert
Si les embeddings capturent le contenu, autrement dit le sens lui-même, sous forme de vecteur, je me demande s’il existe un vecteur séparé uniquement pour le « style »
Si les embeddings pouvaient aussi s’utiliser facilement dans la recherche qui analyse le style d’écriture, ce serait un grand progrès
Je suis entièrement d’accord sur l’intérêt des embeddings
En développant quelque chose appelé Recallify, j’ai pu retrouver rapidement même des informations rares lues en ligne
Même avec seulement 1024 dimensions, cela relie efficacement des contenus non pas par mots-clés mais par similarité sémantique
C’est un outil révolutionnaire pour transformer des concepts vagues en insights exploitables
Je recrute aussi des bêta-testeurs pour l’application iOS
Je ne sais pas si l’article présentait des cas d’usage directs pour les rédacteurs techniques
Les embeddings sont très importants dans les LLM, la recherche sémantique, etc., mais l’explication de l’utilité directe suggérée par l’auteur fait défaut
Il n’y avait pas d’exemple d’application directe
Je voulais traiter divers usages des embeddings dans un billet de suivi et un projet, mais cela a pris du retard à cause de l’arrivée récente d’un bébé de 3 mois
Je prépare d’autres projets et articles sur le sujet, et les embeddings aident à résoudre trois problèmes importants de la rédaction technique
Les usages pratiques des embeddings sont la recherche sémantique, la classification et le clustering
Il y a une grande avancée en recherche environ tous les dix ans
On peut créer des embeddings puis les injecter dans des algorithmes de ML existants pour classifier efficacement
Les approches Bag-of-Words donnent désormais des résultats insuffisants, et embeddings + algorithmes simples suffisent à produire de bons clusters
Pour trouver des vecteurs proches, ce n’est pas tant de l’algèbre linéaire qu’un simple produit scalaire qui suffit
Utiliser les embeddings pour rechercher sémantiquement des articles scientifiques, de la littérature, etc. serait extrêmement utile
Mais les embeddings eux-mêmes n’incluent pas d’informations de provenance, donc en recherche RAG on ne peut relier qu’à la page source
Les problèmes de citation et de vérification restent entiers
Des modèles de citation fondés sur des graphes comme GraphRAG sont plus prometteurs
J’ai créé un classificateur de flux RSS avec une recherche sémantique fondée sur les embeddings
Une classification basée sur des catégories arbitraires est aussi possible
Le service est actuellement arrêté depuis mon départ d’AWS