FlowKitVoir les packs

Template n8n · Pack Assistant RAG

Exposer une API question-réponse sur ses documents avec n8n

Le chat n8n ne s'intègre pas partout — une API, si. Ce workflow expose un endpoint POST /ask : envoyez {"question": "…"} et recevez la réponse fondée sur vos documents en JSON structuré, prête à afficher dans votre site, votre CRM ou votre outil interne.

Pipelineapi-question-reponse-rag.json · 10 nodes
  1. POST /ask (Webhook)triggerWebhook
  2. Question valide ?IF (condition)
  3. Répondre depuis les documentsChaîne RAG (Q&R)
  4. Base vectorielle SupabaseBase vectorielle Supabase
  5. Formater la réponseSet (champs)
  6. Réponse JSONRéponse webhook
  7. Erreur 400Réponse webhook

Sous-nodes IA rattachés

  • Modèle OpenAIModèle OpenAI
  • RetrieverRetriever
  • Embeddings OpenAIEmbeddings OpenAI

Le problème que ça règle

Une fois le RAG en place, chaque équipe veut l'appeler depuis son propre outil : le widget du site, le back-office, un canal support. Multiplier les chatbots serait absurde ; il faut une interface programmatique unique devant la même base vectorielle.

Ce template est cette interface : validation d'entrée, erreur 400 explicite, réponse JSON horodatée. C'est aussi le point de départ naturel pour brancher un frontend maison sur votre assistant.

Comment le workflow fonctionne, node par node

  1. 01

    POST /ask (Webhook)

    Webhook

    Endpoint HTTP POST (chemin flowkit-ask) attendant un corps JSON {"question": "…"}. Le mode responseNode laisse le workflow contrôler entièrement la réponse HTTP.

  2. 02

    Question valide ?

    IF (condition)

    Rejette les requêtes sans question exploitable avant de dépenser le moindre token — hygiène de base d'une API.

  3. 03

    Répondre depuis les documents

    Chaîne RAG (Q&R)

    Même chaîne RAG que le chatbot du pack : passages récupérés injectés dans le prompt, réponse contrainte au contexte, citations des sources.

  4. 04

    Modèle OpenAI

    Modèle OpenAI

    Sous-node ai_languageModel (gpt-4o-mini) — même modèle que le chat pour des réponses cohérentes entre canaux.

  5. 05

    Retriever

    Retriever

    Recherche les 4 passages les plus pertinents dans la base vectorielle avant génération.

  6. 06

    Base vectorielle Supabase

    Base vectorielle Supabase

    Mode retrieve sur la table documents — la même que celle alimentée par les workflows d'ingestion du pack.

  7. 07

    Embeddings OpenAI

    Embeddings OpenAI

    Vectorise la question entrante dans le même espace que le corpus indexé.

  8. 08

    Formater la réponse

    Set (champs)

    Construit l'objet de sortie : réponse, modèle utilisé, horodatage — un contrat d'API stable pour vos intégrations.

  9. 09

    Réponse JSON

    Réponse webhook

    Renvoie le JSON final avec un statut 200.

  10. 10

    Erreur 400

    Réponse webhook

    Branche d'échec de la validation : {"error": "question manquante"} — l'appelant sait immédiatement corriger son appel.

Ce qu'il faut pour le faire tourner

  • n8n ≥ 1.60 avec les nodes LangChain
  • Une base Supabase pgvector alimentée (ingestion PDF ou Notion du pack)
  • Une clé API OpenAI
  • Recommandé : une authentification sur le webhook (header API key) avant exposition publique

Pistes de personnalisation

  • Ajouter l'authentification par en-tête dans les options du webhook avant toute exposition sur internet
  • Renvoyer aussi les sources utilisées en interrogeant les métadonnées des passages récupérés
  • Tracer les questions/réponses dans une table Supabase pour analyser ce que cherchent vos utilisateurs

FAQ

Questions fréquentes

Comment importer ce template dans n8n ?

Importez api-question-reponse-rag.json via « Import from File », associez OpenAI et Supabase, activez, puis testez : curl -X POST https://votre-n8n/webhook/flowkit-ask -H 'Content-Type: application/json' -d '{"question":"…"}'.

Quel temps de réponse attendre ?

De 2 à 5 secondes typiquement : recherche vectorielle (rapide) plus génération LLM (le gros du délai). Pour un widget web, affichez un indicateur d'attente ; le modèle mini maintient la latence basse.

Puis-je appeler cette API depuis un site public ?

Techniquement oui, mais ajoutez d'abord une authentification et une limitation de débit (reverse proxy ou node de comptage) : un endpoint LLM ouvert, c'est votre facture OpenAI ouverte.