Template n8n · Pack Assistant RAG
Ingérer des PDF dans Supabase pgvector avec n8n
Premier maillon d'un RAG : ce workflow expose un webhook qui accepte vos PDF, en extrait le texte, le découpe en fragments, calcule les embeddings et insère le tout dans une table Supabase pgvector. Un curl suffit pour indexer un document.
- Dépôt de PDF (Webhook)triggerWebhook
- Insérer dans la base vectorielleBase vectorielle Supabase
- Confirmer l'ingestionRéponse webhook
Sous-nodes IA rattachés
- Chargeur de PDFChargeur de documents
- Découpage du texteDécoupage de texte
- Embeddings OpenAIEmbeddings OpenAI
$ n8n import:workflow --input=ingestion-pdf-supabase-pgvector.json ✔ Import réussi — 6 nodes, connexions valides
Le problème que ça règle
Un chatbot documentaire ne vaut que par son index : sans pipeline d'ingestion fiable, la base vectorielle se remplit à la main, mal, puis plus du tout. L'ingestion est la partie ingrate du RAG — extraction, découpage, vectorisation, métadonnées — et c'est précisément celle qu'on gagne à standardiser.
En l'exposant comme un simple endpoint HTTP, ce template rend l'indexation triviale : depuis un terminal, un formulaire interne ou un autre workflow, tout ce qui sait envoyer un fichier peut alimenter votre assistant.
Comment le workflow fonctionne, node par node
- 01
Dépôt de PDF (Webhook)
WebhookReçoit le PDF en multipart (curl -F) sur le chemin flowkit-ingest. Le fichier arrive en donnée binaire, prêt pour l'extraction.
- 02
Insérer dans la base vectorielle
Base vectorielle SupabaseNode racine en mode insert vers la table documents : il orchestre chargement, découpage et embeddings de ses trois sous-nodes, puis écrit fragments, métadonnées et vecteurs dans Supabase.
- 03
Chargeur de PDF
Chargeur de documentsSous-node ai_document : extrait le texte du binaire PDF page par page — aucune conversion préalable nécessaire.
- 04
Découpage du texte
Découpage de texteSous-node ai_textSplitter : fragments de 1 000 caractères avec 150 de chevauchement, le meilleur compromis précision/rappel pour des documents professionnels.
- 05
Embeddings OpenAI
Embeddings OpenAISous-node ai_embedding : text-embedding-3-small (1 536 dimensions), aligné avec la colonne vector(1536) de la table — la dimension doit correspondre des deux côtés.
- 06
Confirmer l'ingestion
Réponse webhookRenvoie une confirmation JSON à l'appelant une fois l'indexation terminée : intégrable dans un script de chargement en masse.
Ce qu'il faut pour le faire tourner
- n8n ≥ 1.60 avec les nodes LangChain
- Un projet Supabase avec pgvector activé et la fonction match_documents (SQL complet dans le guide du pack)
- Une clé API OpenAI (embeddings)
- Vos PDF au format texte (pour des scans, ajoutez une étape OCR en amont)
Pistes de personnalisation
- Ajouter des métadonnées (client, version, confidentialité) au chargeur pour filtrer les recherches ensuite
- Ajuster chunkSize et chunkOverlap selon vos documents : plus courts pour des FAQ, plus longs pour des contrats
- Chaîner l'ingestion depuis Google Drive : un trigger Drive remplace le webhook, le reste ne bouge pas
FAQ
Questions fréquentes
Comment importer ce template dans n8n ?
Importez ingestion-pdf-supabase-pgvector.json via « Import from File », associez vos credentials Supabase et OpenAI, exécutez le SQL pgvector fourni dans le guide, activez, puis testez : curl -F 'file=@document.pdf' https://votre-n8n/webhook/flowkit-ingest.
Quelle taille de PDF le workflow accepte-t-il ?
Des rapports de plusieurs centaines de pages passent sans problème ; la limite vient surtout du corps de requête maximal de votre reverse proxy (souvent 100 Mo par défaut sur n8n self-hosted). Pour des corpus entiers, appelez le webhook en boucle, un fichier à la fois.
Puis-je réingérer un document mis à jour ?
Oui, mais pensez à supprimer d'abord ses anciens fragments (delete from documents where metadata->>'source' = '…'), sinon les deux versions coexisteront dans les résultats de recherche.