Embeddings : La technologie derrière Google et ChatGPT (et comment l’utiliser)

Bonjour à vous, pionniers de l’IA ! Si vous êtes ici, c’est probablement parce que vous êtes passionné par l’intelligence artificielle et désireux de comprendre les technologies qui la sous-tendent. Les embeddings sont au cœur des moteurs de recherche intelligents et des IA conversationnelles comme ChatGPT.

Vous êtes-vous déjà demandé comment Google trouve les résultats les plus pertinents pour votre recherche ? Ou comment ChatGPT génère des réponses aussi humaines ? Une des technologies clés derrière ces avancées impressionnantes est celle des embeddings.

Dans cet article, nous allons vous révéler tout ce que vous devez savoir sur les embeddings :

  • Qu’est-ce qu’un embedding et pourquoi est-ce si important ?
  • Comment les embeddings sont-ils utilisés dans les moteurs de recherche et l’IA conversationnelle ?
  • Comment pouvez-vous utiliser les embeddings pour améliorer votre propre site web ou application ?

Si vous débutez en NLP, cet article vous donnera les connaissances nécessaires pour maîtriser cette technologie puissante.

Accrochez-vous, car les choses vont devenir passionnantes !

Qu’est-ce qu’un embedding ?

Un embedding (plongement lexical ou plongement sémantique) est une représentation numérique d’un élément d’information, tel que du texte, des images ou de l’audio. Cette représentation capture la signification sémantique de l’élément, ce qui permet une multitude d’applications industrielles.

Imaginez que vous transformiez chaque mot, phrase ou image en une série de nombres qui capturent son essence. Par exemple, un embedding de la phrase “Quel est le principal avantage du vote ?” pourrait être représenté par une liste de nombres qui capture le sens de la phrase.

Les embeddings permettent de représenter des informations complexes de manière compacte et significative. Cette capacité est essentielle pour des applications telles que :

  • la recherche sémantique,
  • la classification d’images
  • et les systèmes de recommandation.

Pensez-y comme à un traducteur universel qui rend vos données compréhensibles pour les algorithmes de machine learning.

Les différents types d’embeddings

Les word embeddings

Les word embeddings transforment des mots individuels en vecteurs numériques. Ils capturent les relations sémantiques entre les mots en les plaçant dans un espace vectoriel où des mots similaires sont proches les uns des autres.

Des modèles comme Word2Vec et GloVe sont des exemples populaires de word embeddings.

  • Word2Vec : Développé par Google, ce modèle crée des embeddings en entraînant un réseau de neurones sur de grandes quantités de texte pour prédire les mots voisins dans une phrase. Il capture efficacement les relations sémantiques et syntaxiques entre les mots.
  • GloVe : Développé par Stanford, ce modèle se base sur des statistiques globales de cooccurrence de mots dans un corpus. Il permet de capturer des relations de cooccurrence et de similitude entre les mots.

Sentence embeddings

Les sentence embeddings vont plus loin en représentant des phrases entières sous forme de vecteurs. Ces embeddings capturent le contexte global de la phrase, ce qui permet de comparer des phrases entre elles. Les modèles comme Universal Sentence Encoder et Sentence-BERT sont couramment utilisés pour générer des sentence embeddings.

  • Universal Sentence Encoder : Développé par Google, ce modèle produit des embeddings de phrases de manière à ce qu’elles puissent être comparées et utilisées dans des tâches de traitement du langage naturel.
  • Sentence-BERT : Ce modèle adapte BERT, une architecture de réseau de neurones, pour produire des embeddings de phrases. Il est particulièrement utile pour les tâches de recherche sémantique et de similarité de texte.

Les avantages et les limites

Les embeddings présentent de nombreux avantages, notamment la capacité de capturer des relations sémantiques et de permettre des comparaisons efficaces. Cependant, ils ont aussi des limites, comme la difficulté à gérer des informations très spécifiques ou contextuelles. Et c’est tout naturel, puisque si des concepts sont récents, ils n’ont pas encore étés intégrés aux bibliothèques ou modèles d’embeding.

Il est donc crucial de choisir le bon type d’embeddings en fonction des besoins de votre application.

De la même manière, et c’est surement la plus grande des limites… générer des embeddings peut être très gourmand en ressources computationnelles, il est donc nécessaire de connaître les limites de vos composants pour adapter la technologie utilisée. Des mécanismes pour contourner cette limite existent, mais le temps de calcul restera relativement long. Investir dans du matériel va être essentiel, puisque la phase de création de votre application est vouée à de nombreux échecs pour arriver à sa version optimale. Imaginez un embeddings qui met plus de 3h pour vous produire une erreure ou encore une version pas assez précise. Itérer devient alors difficile et risque de vous dégouter dans votre progession.

Comment générer des embeddings ?

exemple d'embedding

Les outils et bibliothèques courraments utilisés

Pour générer des embeddings, plusieurs outils et bibliothèques open-source sont disponibles. Voici quelques-uns des plus courants :

Sentence Transformers

Sentence Transformers est une bibliothèque puissante qui permet de créer des embeddings de phrases et de textes. Elle est facile à utiliser et offre des modèles pré-entraînés pour diverses langues et tâches.

Gensim

Gensim est une autre bibliothèque populaire pour la génération de word embeddings. Elle est souvent utilisée pour entraîner des modèles Word2Vec et Doc2Vec.

TensorFlow et PyTorch

Ces deux frameworks de deep learning peuvent également être utilisés pour créer des embeddings personnalisés. Ils offrent une grande flexibilité et permettent d’entraîner des modèles sur des jeux de données spécifiques.

Utilisez l’API Hugging Face

L’API d’inférence Hugging Face est un outil puissant pour générer des embeddings sans avoir à entraîner des modèles à partir de zéro. Voici un exemple de code pour créer un embedding à partir d’une question de la FAQ Medicare :

import requests

api_url = "<https://api-inference.huggingface.co/pipeline/feature-extraction/sentence-transformers/all-MiniLM-L6-v2>"
headers = {"Authorization": "Bearer YOUR_HF_TOKEN"}

texts = ["How do I get a replacement Medicare card?"]
response = requests.post(api_url, headers=headers, json={"inputs": texts, "options": {"wait_for_model": True}})
output = response.json()

Ce code génère un embedding pour une question spécifique, qui peut ensuite être utilisé pour des comparaisons sémantiques. Nous reviendrons sur Hugging Face dans un autre article dédié, car c’est une plateforme ultra puissante et qui permet notament de se servire du travail d’autres passionnés par l’IA.

💡 Hugging Face est une plateforme et une bibliothèque open-source spécialisée dans le traitement du langage naturel (NLP), proposant des modèles pré-entraînés de pointe et des outils accessibles via des API, permettant de simplifier et d’accélérer l’intégration de fonctionnalités NLP dans divers projets.

L’utilisation d’embedding avec TensorFlow

Pour montrer une approche plus concrète, voici un exemple d’utilisation de TensorFlow pour générer des embeddings de texte :

import tensorflow as tf
import tensorflow_hub as hub

# Charger le modèle Universal Sentence Encoder
embed = hub.load("<https://tfhub.dev/google/universal-sentence-encoder/4>")

# Embedding de phrases
sentences = ["Quel est le principal avantage du vote ?", "Comment puis-je obtenir une carte de remplacement Medicare ?"]
embeddings = embed(sentences)

print(embeddings)

Ce code utilise le modèle Universal Sentence Encoder pour générer des embeddings de phrases en quelques lignes de code.

💡 PyTorch est une bibliothèque open-source de deep learning développée par Facebook AI Research, offrant une flexibilité et une facilité d’utilisation exceptionnelles pour l’entraînement de modèles d’apprentissage automatique et l’exploration de nouvelles architectures neuronales.

Pourquoi utilise t’on les embeddings ?

Dans la recherche sémantique : révolutionner les moteurs de recherche

Les moteurs de recherche sémantique utilisent des embeddings pour améliorer la précision des résultats. Contrairement à la recherche par mots-clés traditionnelle, la recherche sémantique prend en compte le sens des phrases.

Google, par exemple, utilise des embeddings pour faire correspondre des textes à d’autres textes ou à des images, améliorant ainsi la pertinence des résultats de recherche. Cela lui permet d’aller interpréter si des pages de sites répondent correctement aux intentions de recherches.

Moteurs de FAQ : trouver la réponse en un clin d’oeil

Les embeddings sont également utilisés pour créer des moteurs de FAQ efficaces. En intégrant un ensemble de données de questions fréquentes, il est possible de comparer une requête utilisateur avec ces questions intégrées et d’identifier la question la plus similaire. Cela simplifie la recherche d’informations et améliore l’expérience utilisateur. Nous en montrerons l’exemple un peu plus tard dans l’article.

Le workflow pour parvenir à cette application :

  • Collection des FAQ
  • Tokenisation pour diviser le texte en unité plus petites
  • POS tagging pour attribuer à chaque étiquette sa catégorie grammaticale
  • Lemmatisation pour réduire les mots à leur forme ou racine (ex: embedding ==> embed, <embed> ==> embed) pour regrouper les mots.
  • Génération d’embeddings pour chaque question
  • Embedding de la requête utilisateur
  • Calcul de similarité (par exemple, similarité cosinus)
  • Identification et affichage de la question la plus similaire

Recommandation de contenu

Les systèmes de recommandation utilisent des embeddings pour proposer du contenu pertinent aux utilisateurs. En analysant les préférences et les comportements des utilisateurs, les embeddings permettent de suggérer des articles, vidéos ou produits qui correspondent à leurs intérêts.

Le workflow pour parvenir à cette application :

  • Collecte des données utilisateur (historique de navigation, clics, etc.)
  • Tokenisation du contenu (articles, vidéos, produits)
  • Génération d’embeddings pour chaque élément de contenu
  • Génération d’embeddings pour le profil utilisateur
  • Calcul de similarité entre les embeddings de l’utilisateur et ceux du contenu
  • Classement et recommandation des éléments les plus pertinents

Analyse de sentiment

Les embeddings sont également utilisés pour l’analyse de sentiment, permettant de comprendre les émotions et les opinions exprimées dans le texte. Cela est particulièrement utile pour le suivi des avis clients, des commentaires sur les réseaux sociaux et des enquêtes de satisfaction.

Le workflow pour parvenir à cette application :

  • Collecte des avis ou commentaires
  • Tokenisation des textes
  • Génération d’embeddings
  • Classification des sentiments (positif, négatif, neutre) via un modèle pré-entraîné
  • Analyse des résultats et visualisation des tendances

Traduction automatique

Les embeddings jouent un rôle crucial dans la traduction automatique en aidant les modèles à comprendre et à générer des textes dans différentes langues. Des modèles comme BERT et GPT-3 utilisent des embeddings pour améliorer la qualité et la précision des traductions.

Le workflow pour parvenir à cette application :

  • Tokenisation du texte source
  • Génération d’embeddings pour chaque token
  • Transformation des embeddings via un modèle de traduction
  • Génération du texte traduit à partir des nouveaux embeddings
  • Dé-tokenisation pour produire le texte final traduit

Étude de Cas : Utilisation des Embeddings chez Meta

Meta (anciennement Facebook) utilise des embeddings pour améliorer ses services de recherche et de recommandation. Par exemple, les embeddings sont utilisés pour faire correspondre les annonces publicitaires aux utilisateurs en fonction de leurs intérêts et de leurs comportements en ligne. Cela permet d’optimiser l’expérience utilisateur et d’augmenter l’efficacité des campagnes publicitaires.

Le workflow pour parvenir à cette application :

  • Collecte des données utilisateur (interactions, préférences, etc.)
  • Tokenisation des descriptions d’annonces publicitaires
  • Génération d’embeddings pour les annonces et les profils utilisateur
  • Calcul de similarité entre les embeddings des utilisateurs et ceux des annonces
  • Classement et affichage des annonces les plus pertinentes pour chaque utilisateur

Comparaison et recherche d’embeddings

Techniques de comparaison : trouver la similitude

Pour comparer des embeddings, la similarité cosinus est souvent utilisée. Cette méthode mesure l’angle entre deux vecteurs, déterminant ainsi leur similarité sémantique. Voici comment la similarité cosinus fonctionne :

similariteˊ cosinus=∥A∥∥B∥A⋅B

Cette formule calcule le cosinus de l’angle entre deux vecteurs, donnant une valeur comprise entre -1 et 1. Une valeur proche de 1 indique une forte similarité, tandis qu’une valeur proche de -1 indique une dissimilarité.

Utilisation de Faiss pour la recherche d’embeddings

Faiss est une bibliothèque développée par Facebook AI Research pour la recherche efficace de vecteurs de haute dimension. Elle est particulièrement utile pour trouver rapidement des vecteurs similaires dans de grands ensembles de données.

Voici un exemple d’utilisation de Faiss pour trouver les embeddings les plus proches :

import faiss
import numpy as np

# Créer un index de Faiss
d = 512  # Dimension des embeddings
index = faiss.IndexFlatL2(d)

# Ajouter des embeddings à l'index
embeddings = np.random.random((1000, d)).astype('float32')  # Exemple de données
index.add(embeddings)

# Rechercher les vecteurs les plus proches
query = np.random.random((1, d)).astype('float32')
D, I = index.search(query, k=5)  # k est le nombre de résultats souhaités

print(I)  # Indices des vecteurs les plus proches

Ce code montre comment utiliser Faiss pour rechercher des vecteurs similaires dans un grand ensemble de données.

Recherche sémantique avancée

Supposons qu’un utilisateur pose la question “How can Medicare help me?”. En créant un embedding de cette question et en le comparant aux embeddings d’un ensemble de FAQ, il est possible de trouver les questions les plus similaires :

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
queries = ["How can Medicare help me?"]
faq_embeddings = model.encode(["How do I get a replacement Medicare card?",
                               "What is the monthly premium for Medicare Part B?",
                               "How do I terminate my Medicare Part B (medical insurance)?"])
query_embeddings = model.encode(queries)

# Calculer la similarité cosinus
similarities = util.pytorch_cos_sim(query_embeddings, faq_embeddings)
print(similarities)

Autres techniques beaucoup plus avancées, qui méritent d’être abordées

Embeddings de code pour faciliter la recherche de code

Les embeddings ne sont pas limités au texte et aux images. Ils peuvent également être appliqués au code. Les modèles de recherche de code utilisent des emb eddings pour trouver des blocs de code pertinents basés sur des requêtes en langage naturel. Cela améliore l’efficacité des développeurs en facilitant la recherche de fragments de code spécifiques.

Cas d’usage et performances

De nombreuses entreprises utilisent des embeddings pour améliorer leurs produits et services. Par exemple, JetBrains Research utilise des embeddings pour analyser des rapports astronomiques, tandis que FineTune Learning améliore la recherche de contenu pédagogique grâce à des embeddings textuels. Ces exemples démontrent la polyvalence et l’efficacité des embeddings dans diverses applications.

Étude de cas : Utilisation des embeddings chez JetBrains

JetBrains Research utilise des embeddings pour analyser des rapports astronomiques, comme ceux de The Astronomer’s Telegram et des GCN Circulars de la NASA. Grâce aux embeddings, les chercheurs peuvent rechercher des événements comme des “éruptions du pulsar du Crabe” dans plusieurs bases de données et publications, avec une précision remarquable.

Embeddings dans la classification de données

Les embeddings peuvent également être utilisés pour des tâches de classification. Par exemple, FineTune Learning utilise des embeddings pour classer des contenus pédagogiques en fonction des objectifs d’apprentissage. Cela permet de trouver rapidement les contenus pertinents pour les étudiants et d’améliorer l’efficacité des boucles d’apprentissage adaptatives.

Les points clés à retenir

Les embeddings sont des outils puissants pour représenter et comparer des informations complexes de manière compacte et significative. Ils sont utilisés dans de nombreuses applications industrielles, de la recherche sémantique aux systèmes de recommandation, en passant par la recherche de code et l’analyse de sentiment.

Que peut-on imaginer pour l’avenir ?

L’avenir des embeddings est prometteur. Avec l’évolution rapide de la technologie, les embeddings continueront à jouer un rôle crucial dans le développement de solutions intelligentes et efficaces. Des améliorations dans les modèles d’embeddings et leur intégration dans diverses applications sont attendues, ce qui augmentera encore leur pertinence et leur utilité.

Nous vous encourageons à explorer davantage et à mettre en pratique vos connaissances sur les embeddings. Utilisez les outils et bibliothèques présentés dans cet article pour créer des solutions innovantes et améliorer vos projets actuels. Pour aller plus loin, consultez les ressources suivantes :

  • Hugging Face : Bibliothèque open-source pour les modèles de traitement du langage naturel.
  • TensorFlow Hub : Modules pré-entraînés pour diverses tâches d’apprentissage automatique.
  • Gensim : Bibliothèque pour le traitement du langage naturel avec des algorithmes d’apprentissage non supervisés.

En suivant ces conseils, vous êtes maintenant prêt à maîtriser les embeddings et à transformer vos données en informations précieuses. Que l’exploration commence !

Mathieu Klopp

Rédacteurs & Experts

Copyright: © 2024 All Of Meta. Tous droits réservés.

Index