This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "RAG_AI_Agent_PDFs_Excel",
"nodes": [
{
"parameters": {
"options": {}
},
"id": "c1599349-4107-46db-94e9-bc67754bc7ac",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
-1080,
1340
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"id": "c15fff33-c847-4aca-95e9-2823dd3a823d",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
0,
1220
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonMode": "expressionData",
"jsonData": "={{ $json.data || $json.text || $json.concatenated_data }}",
"options": {
"metadata": {
"metadataValues": [
{
"name": "=file_id",
"value": "={{ $('Set File ID').first().json.file_id }}"
}
]
}
}
},
"id": "9bf60a5c-1dff-4244-8731-4d61a8062d59",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
620,
1820
]
},
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "73d78892-6add-4daa-ab25-a55ead2140b6",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
480,
1820
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"name": "user_documents",
"description": "Contains all the user's documents that you can check for context to answer user questions."
},
"id": "ce467a39-29c8-4aee-b94e-f19ed42ef481",
"name": "Retrieve Documents",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"typeVersion": 1,
"position": [
-220,
1020
]
},
{
"parameters": {
"content": "## Agent Tools for RAG",
"height": 609,
"width": 583,
"color": 4
},
"id": "9f1d64cd-c956-41af-8343-05adf1a0de1e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
900
]
},
{
"parameters": {
"content": "## Tool to Add a FTP File to Vector DB",
"height": 667,
"width": 2593,
"color": 5
},
"id": "db1fd20d-0658-4b56-92d2-846953b3fc33",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1680,
1540
]
},
{
"parameters": {
"operation": "text",
"options": {}
},
"id": "762fc21d-ce49-4851-8fbb-5a6a3aeb5a4d",
"name": "Extract Document Text",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
-260,
2020
],
"alwaysOutputData": true,
"disabled": true
},
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "d53c5944-c182-4754-8edf-9bda3de12188",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
-240,
1380
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"tableName": "chat_memory"
},
"id": "93a7c0f1-01f2-450a-a084-e77374894bbc",
"name": "Postgres Chat Memory",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"typeVersion": 1,
"position": [
-900,
1340
],
"notesInFlow": false,
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "10646eae-ae46-4327-a4dc-9987c2d76173",
"name": "file_id",
"value": "={{ $json.name + $json.modifyTime }}",
"type": "string"
},
{
"id": "f4536df5-d0b1-4392-bf17-b8137fb31a44",
"name": "file_name",
"value": "={{ $json.name }}",
"type": "string"
},
{
"id": "e8d747a0-539e-4645-bcd2-1bdd23046834",
"name": "file_type",
"value": "={{ $json[\"name\"].split('.').pop() }}",
"type": "string"
}
]
},
"options": {}
},
"id": "26fe43e4-4a01-4a5b-b2aa-6f20b02323a1",
"name": "Set File ID",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1080,
1800
]
},
{
"parameters": {
"content": "## RAG AI Agent with Chat Interface",
"height": 605,
"width": 1036
},
"id": "cc23fc1a-bf97-4b88-ab4f-996392a30345",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1500,
900
]
},
{
"parameters": {
"options": {}
},
"id": "9e08e4e3-5888-4cc1-97f8-1a8dfc36d27b",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
-620,
1000
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "9a9a245e-f1a1-4282-bb02-a81ffe629f0f",
"name": "chatInput",
"value": "={{ $json.chatInput }}",
"type": "string"
},
{
"id": "b80831d8-c653-4203-8706-adedfdb98f77",
"name": "sessionId",
"value": "={{ $json?.sessionId || $json.body.sessionId}}",
"type": "string"
}
]
},
"options": {}
},
"id": "ae723c41-edff-49e6-98dc-b501f72197ef",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1200,
1120
]
},
{
"parameters": {
"public": true,
"options": {}
},
"id": "585375dd-8eb0-4114-b323-2f9882dbda51",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.1,
"position": [
-1460,
1240
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "9ba11544-5c4e-4f91-818a-08a4ecb596c5",
"authentication": "headerAuth",
"responseMode": "responseNode",
"options": {}
},
"id": "03e1c3a0-748e-4423-a20f-8b7659c1ad29",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-1460,
1040
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "pdf",
"options": {}
},
"id": "ce244c4d-2349-42a2-916e-701375018c07",
"name": "Extract PDF Text",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
-260,
1580
]
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"id": "0bff881b-06c1-4b98-aa5b-421db86fafa3",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
-100,
1800
],
"disabled": true
},
{
"parameters": {},
"id": "a8b76e49-1394-4d2f-b6db-275687477124",
"name": "Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
"typeVersion": 1,
"position": [
620,
2020
]
},
{
"parameters": {
"fieldsToSummarize": {
"values": [
{
"aggregation": "concatenate",
"field": "data"
}
]
},
"options": {}
},
"id": "65d00643-5fea-4a78-b69a-d2f9947511c7",
"name": "Summarize",
"type": "n8n-nodes-base.summarize",
"typeVersion": 1,
"position": [
80,
1700
],
"disabled": true
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "Sei un assistente fiscale che risponde in modo preciso e metodico, basandoti esclusivamente sulla documentazione fornita e non sulla conoscenza generale",
"passthroughBinaryImages": true
}
},
"id": "bed3184d-df9a-4e22-a9ba-26e77f6a224f",
"name": "RAG AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.6,
"position": [
-980,
1120
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict",
"version": 1
},
"conditions": [
{
"leftValue": "={{ $('Set File ID').item.json.file_type }}",
"rightValue": "pdf",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
}
}
]
},
"options": {
"ignoreCase": true
}
},
"id": "4a3e24fd-dc13-4c8a-8e96-40db9bae83f9",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"typeVersion": 3,
"position": [
-560,
1800
]
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"id": "a6948f46-30b2-4c71-a5ee-bfb91093eba5",
"name": "Insert into Supabase Vectorstore",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
560,
1620
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"id": "fc81c2ea-278d-4f29-b87e-4b6e205d2201",
"name": "Supabase Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
-340,
1220
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "xlsx",
"options": {}
},
"id": "e4bac85d-4b94-4956-9eff-622440e18bc8",
"name": "Extract from Excel",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
-260,
1800
],
"disabled": true
},
{
"parameters": {
"protocol": "sftp",
"operation": "list",
"path": "/home/dh_vqjiyh/testftp.gktgroup.it",
"recursive": true
},
"type": "n8n-nodes-base.ftp",
"typeVersion": 1,
"position": [
-1360,
1800
],
"id": "ae757a1f-7281-4089-b2e6-f759f0c62adc",
"name": "FTP1",
"credentials": {
"sftp": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "minutes"
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-1580,
1800
],
"id": "c465550a-2b1f-4ac7-ac48-28aa084b12b8",
"name": "Schedule Trigger"
},
{
"parameters": {
"protocol": "sftp",
"path": "=/home/dh_vqjiyh/testftp.gktgroup.it/{{ $json.file_name }}"
},
"type": "n8n-nodes-base.ftp",
"typeVersion": 1,
"position": [
-820,
1800
],
"id": "f95a6cde-cc1d-42ed-b9d0-b210465306ce",
"name": "FTP",
"credentials": {
"sftp": {
"name": "<your credential>"
}
}
}
],
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "RAG AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Retrieve Documents",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Retrieve Documents": {
"ai_tool": [
[
{
"node": "RAG AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Extract Document Text": {
"main": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "ai_document",
"index": 0
}
]
]
},
"Postgres Chat Memory": {
"ai_memory": [
[
{
"node": "RAG AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Set File ID": {
"main": [
[
{
"node": "FTP",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "RAG AI Agent",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Extract PDF Text": {
"main": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Summarize",
"type": "main",
"index": 0
}
]
]
},
"Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Summarize": {
"main": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "main",
"index": 0
}
]
]
},
"RAG AI Agent": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Extract PDF Text",
"type": "main",
"index": 0
}
],
[],
[]
]
},
"Supabase Vector Store": {
"ai_vectorStore": [
[
{
"node": "Retrieve Documents",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Extract from Excel": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"FTP1": {
"main": [
[
{
"node": "Set File ID",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "FTP1",
"type": "main",
"index": 0
}
]
]
},
"FTP": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "c6b75f67-8bcb-41a9-a8e3-b3059865ee5e",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "UtVcLfUm9ZG05ya0",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpHeaderAuthopenAiApipostgressftpsupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
RAG_AI_Agent_PDFs_Excel. Uses lmChatOpenAi, documentDefaultDataLoader, embeddingsOpenAi, toolVectorStore. Webhook trigger; 28 nodes.
Source: https://gist.github.com/ToX82/505c338ae958a14043b3133bf77081e8 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Hi! I’m Amanda, a creator of intelligent automations using n8n and Make. I’ve been building AI-powered workflows for over 2 years, always focused on usability and innovation. This one here is very spe
This workflow automates multi-channel AI-driven sales engagement for lead qualification, service information delivery, and consultation booking. It integrates WhatsApp, Facebook Messenger, Instagram D
Indoor Farming Agent. Uses lmChatOpenAi, documentDefaultDataLoader, embeddingsOpenAi, toolVectorStore. Webhook trigger; 36 nodes.
RAG AI Agent. Uses lmChatOpenAi, memoryBufferWindow, googleDrive, documentDefaultDataLoader. Webhook trigger; 20 nodes.
Grant Application Routing. Uses stickyNote, textSplitterCharacterTextSplitter, embeddingsOpenAi, vectorStoreSupabase. Webhook trigger; 12 nodes.