Skip to main content

Présentation Embeddings & stockage vectoriel

Cette page propose une vision générale de ce que sont les embeddings, comment ils sont générés, et comment les stocker pour les exploiter dans des cas d’usage comme la recherche sémantique ou le RAG.

1. Qu’est-ce qu’un embedding ?

Un embedding est une représentation numérique (un vecteur de nombres réels) d’un contenu :

  • texte (phrases, paragraphes, documents)
  • parfois images, audio, code, etc.

Objectif : rapprocher dans l’espace vectoriel les contenus qui se ressemblent sémantiquement.

  • Textes similaires → vecteurs proches
  • Textes très différents → vecteurs éloignés

Cette propriété permet d’utiliser des opérations mathématiques simples (produit scalaire, cosinus, distance euclidienne…) pour faire de la recherche par sens plutôt que par mots-clés exacts.

2. Cas d’usage typiques

Les embeddings sont utilisés pour :

  • Recherche sémantique Trouver les documents « qui parlent de la même chose » que la requête d’un utilisateur, même si les mots exacts ne sont pas les mêmes.

  • RAG (Retrieval-Augmented Generation)

    • Convertir les documents en embeddings
    • Les stocker dans un index vectoriel
    • À chaque question utilisateur, chercher les passages les plus proches
    • Donner ces passages au LLM comme contexte
  • Clustering & classification assistée

    • Regrouper automatiquement des documents par thématique
    • Faire de la classification légère via KNN/similarité cosinus

3. Génération des embeddings

Les embeddings sont générés par un modèle d’embedding (par ex. ClovisEmbeddings), via une API dédiée.

Bonnes pratiques de génération (rappel)

  • Utiliser le même modèle pour :

    • indexer tous les documents
    • générer les embeddings de requêtes utilisateur
  • Faire du chunking sur les documents longs :

    • chunks de 300–1 000 tokens
    • léger overlap si besoin (10–15 %)
  • Nettoyer le texte avant vectorisation :

    • supprimer menus, headers/footers répétitifs, numéros de page, boilerplate…

4. Stockage des embeddings (index vectoriel)

Une fois les embeddings générés, il faut les stocker pour les requêter efficacement. On parle alors d’index vectoriel ou de vector store.

4.1. Ce qu’on stocke

Pour chaque chunk/document, on stocke généralement :

  • le vecteur d’embedding : [0.0123, -0.9821, 0.4421, ...]

  • un identifiant : doc_id, chunk_id, etc.

  • des métadonnées :

    • source (Confluence, PDF, SharePoint…)
    • titre, auteur
    • date
    • tags (projet, produit, client…)
  • le texte brut ou une clé permettant de le récupérer

4.2. Types de stores possibles

Selon le contexte technique :

  • Bases vectorielles spécialisées

    • (ex : Pinecone, Qdrant, Weaviate, etc.) – optimisées pour la recherche de similarité.
  • Moteurs de recherche hybrides

    • (ex : OpenSearch, Elasticsearch avec champs vectoriels) – mélangent recherche full-text et vectorielle.
  • Bases de données classiques + extension

    • PostgreSQL + extension vectorielle
    • Autres moteurs avec type « vector »

5. Pipeline typique : de la donnée brute à la recherche sémantique

  • Ingestion

    • Récupération des sources (Confluence, fichiers, tickets, etc.)
    • Extraction du texte
  • Pré-traitement

    • Nettoyage (enlever le bruit)
    • Normalisation (encodage, caractères spéciaux…)
  • Chunking

    • Découpage des documents en segments exploitables
    • Ajout de métadonnées (document_id, section, langue, etc.)
  • Génération d’embeddings

    • Appel à /v1/embeddings avec model: "ClovisEmbeddings"
    • Récupération du vecteur pour chaque chunk
  • Stockage dans l’index vectoriel

    • Insertion des paires (vecteur + métadonnées) dans le store choisi
  • Requête utilisateur

    • L’utilisateur saisit une question en langage naturel
    • Génération de l’embedding de la requête
    • Recherche des vecteurs les plus proches dans l’index
  • Exploitation du résultat

    • RAG : passages pertinents fournis au LLM
    • Recherche sémantique : affichage direct des documents correspondants
    • Analytique : clustering, détection de doublons, etc.

6. Points d’attention & bonnes pratiques de stockage

  • Cohérence de modèle

    • Ne pas changer de modèle d’embedding sans re-indexer l’existant.
  • Gouvernance des données

    • Gérer les droits d’accès (qui peut requêter quoi ?)
    • Traçabilité des documents indexés (source, date de mise à jour)
  • Mise à jour de l’index

    • Stratégie de rafraîchissement (full vs incrémental)
    • Gestion des suppressions / archivage
  • Qualité des métadonnées

    • Plus les métadonnées sont riches, plus on peut filtrer finement (par projet, client, langue…)

7. Où aller ensuite ?