Aller au contenu principal

RAG dans n8n

Qu'est-ce que le RAG ?

La génération augmentée par la recherche (RAG, Retrieval-Augmented Generation) est une technique qui améliore la qualité des réponses générées par les modèles de langage en les combinant à des sources de données externes. Plutôt que de s’appuyer uniquement sur les connaissances intégrées au modèle lors de son entraînement, un système RAG récupère des documents pertinents pour ancrer ses réponses dans des connaissances récentes, spécifiques à un domaine ou privées. Les workflows RAG utilisent généralement des bases de données vectorielles pour gérer et interroger efficacement ces données externes.

Qu'est-ce qu'une base de données vectorielle ?

Une base de données vectorielle est une base de données spécialisée conçue pour stocker et récupérer des vecteurs de haute dimension, qui représentent numériquement du texte, des images ou d'autres types de données. Lorsque vous téléchargez un document, la base de données vectorielle le divise en segments (ou chunks), puis utilise un modèle d’embedding pour convertir chacun de ces segments en un vecteur.

Vous pouvez interroger ces vecteurs à l’aide d’une recherche par similarité, qui repose sur la signification sémantique plutôt que sur la correspondance exacte de mots-clés. Cela fait des bases de données vectorielles une fondation puissante pour les systèmes RAG et d’autres applications d’intelligence artificielle nécessitant de récupérer et raisonner à partir de grandes quantités de connaissances.

Comment utiliser le RAG dans n8n ?

Commencez avec un modèle RAG

👉 Utilisez le modèle de démarrage RAG pour découvrir rapidement le RAG dans n8n. Ce modèle inclut deux workflows préconstruits : l’un pour télécharger des fichiers, l’autre pour les interroger.

Insérer des données dans une base de données vectorielle

Avant qu’un agent puisse accéder à votre base de connaissances personnalisée, vous devez d’abord y insérer vos données :

  1. Ajoutez les nœuds nécessaires pour récupérer vos données sources.
  2. Insérez un nœud de base de données vectorielle (par exemple Simple Vector Store) et sélectionnez l’opération Insérer des documents.
  3. Choisissez un modèle d’embedding pour convertir le texte en vecteurs. Pour plus d’informations sur le choix du bon modèle, consultez la section FAQ.
  4. Ajoutez un nœud Default Data Loader pour diviser le contenu en segments. Vous pouvez utiliser les paramètres par défaut ou personnaliser votre stratégie de découpage :
    • Découpage par caractères : division selon une longueur fixe en caractères.
    • Découpage récursif par caractères : découpage récursif tenant compte de la structure (Markdown, HTML, blocs de code, etc.) avant de recourir à une division par caractères simples (recommandé dans la plupart des cas).
    • Découpage par tokens : division selon un nombre fixe de tokens.
  5. (Facultatif) Ajoutez des métadonnées à chaque segment pour enrichir le contexte et faciliter le filtrage ultérieur.

Interroger les données

Vous pouvez interroger vos données de deux manières principales : via un agent ou directement via des nœuds.

Utiliser un agent

  1. Ajoutez un agent à votre workflow.
  2. Ajoutez votre base de données vectorielle en tant qu’outil, et fournissez-lui une description pour aider l’agent à comprendre quand l’utiliser :
    • Définissez le nombre maximal de segments à retourner.
    • Activez Inclure les métadonnées pour fournir un contexte supplémentaire à chaque segment.
  3. Ajoutez le même modèle d’embedding que celui utilisé lors de l’insertion des données.

💡 Conseil d’expert

Pour économiser des tokens coûteux sur les grands modèles, vous pouvez d’abord utiliser l’outil Vector Store Question Answer Tool pour récupérer les données pertinentes, puis transmettre ces résultats à l’agent. Consultez ce modèle pour voir cela en action.

Utiliser directement les nœuds

  1. Ajoutez un nœud de base de données vectorielle sur le canevas et sélectionnez l’opération Obtenir plusieurs.
  2. Saisissez votre requête ou question :
    • Définissez le nombre maximal de segments à retourner.
    • Activez Inclure les métadonnées si nécessaire.

FAQ

Comment choisir le bon modèle d’embedding ?

Le choix du modèle dépend fortement de votre cas d’usage.

En général, les modèles plus petits (comme text-embedding-ada-002) sont plus rapides et moins coûteux, ce qui les rend adaptés aux documents courts, aux scénarios génériques ou aux workflows RAG légers. Les modèles plus grands (comme text-embedding-3-large) offrent une meilleure compréhension sémantique et conviennent mieux aux documents longs, aux sujets complexes ou aux cas où la précision est critique.

Quelle méthode de découpage de texte convient le mieux à mon cas d’usage ?

Cela dépend largement de la nature de vos données :

  • Des segments petits (par exemple 200 à 500 tokens) permettent une récupération plus fine.
  • Des segments plus grands peuvent contenir davantage de contexte, mais risquent aussi de devenir flous ou bruyants.

Configurer un chevauchement adéquat entre les segments est essentiel pour que l’IA comprenne correctement le contexte. C’est pourquoi le découpage basé sur la structure (Markdown, blocs de code, etc.) donne souvent de meilleurs résultats.

Une autre bonne pratique consiste à enrichir chaque segment avec davantage de contexte (par exemple, en indiquant le document source). Si vous souhaitez approfondir ce sujet, nous vous recommandons cet excellent article d’Anthropic.