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 →
{
"createdAt": "2025-03-04T21:00:50.553Z",
"updatedAt": "2025-03-04T21:05:32.839Z",
"id": "TUCu8CjPCWQDJsnd",
"name": "Agent: Local AI RAG: Ollama & Supabase Vector",
"active": false,
"nodes": [
{
"parameters": {},
"id": "aca6c210-f4a0-44de-9584-9ff7778498e1",
"name": "Postgres Chat Memory",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"typeVersion": 1.1,
"position": [
480,
340
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": "qwen2.5:7b-instruct-q4_K_M",
"options": {}
},
"id": "7293ab90-9636-4f18-a16b-890fb075ed77",
"name": "Ollama Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOllama",
"typeVersion": 1,
"position": [
360,
340
],
"credentials": {
"ollamaApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": "qwen2.5:7b-instruct-q4_K_M",
"options": {}
},
"id": "d5817e54-3c1c-4839-8bb4-3dd9d3869507",
"name": "Ollama Model",
"type": "@n8n/n8n-nodes-langchain.lmOllama",
"typeVersion": 1,
"position": [
1400,
280
],
"credentials": {
"ollamaApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"name": "documents",
"topK": 3
},
"id": "cfa32d6c-ed12-4172-82b5-f0a690c4b6d7",
"name": "Vector Store Tool",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"typeVersion": 1,
"position": [
1180,
100
]
},
{
"parameters": {
"operation": "text",
"destinationKey": "=data",
"options": {}
},
"id": "53db5742-9d63-4706-80fb-a59c5f02d9c3",
"name": "Extract Document Text",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
920,
640
],
"alwaysOutputData": true
},
{
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "file_id",
"value": "={{ $('Local File Trigger').item.json.path }}"
}
]
}
}
},
"id": "0f4f6e4a-57a5-4dbc-853d-4482bc16c689",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
1300,
880
]
},
{
"parameters": {
"chunkSize": 100,
"options": {}
},
"id": "f5fc5cb6-a623-4ce3-ad75-0cb4e9dc050d",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"typeVersion": 1,
"position": [
1300,
1100
]
},
{
"parameters": {
"model": "nomic-embed-text:latest"
},
"id": "05523be0-5e28-419a-8cff-af0b61095479",
"name": "Embeddings Ollama1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"typeVersion": 1,
"position": [
1140,
880
],
"credentials": {
"ollamaApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "## Local RAG AI Agent with Chat Interface",
"height": 527.3027193303974,
"width": 969.0343804425795
},
"id": "8601e018-ed3a-4728-bd37-5b95f49b180d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
0,
0
]
},
{
"parameters": {
"content": "## Agent Tools for Local RAG",
"height": 528.85546469693,
"width": 583.4552380860637,
"color": 4
},
"id": "fc68f56e-6b80-4072-880a-8f2a627ce583",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
980,
0
]
},
{
"parameters": {
"content": "## Workflow to Create Local Knowledgebase",
"height": 705.2695614889159,
"width": 1568.9362829025763,
"color": 5
},
"id": "b45f60c4-eeea-42f9-96cb-b6d2315f2a59",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
0,
540
]
},
{
"parameters": {
"options": {}
},
"id": "ce836ae2-5e05-49c9-a623-97b0a074fc4b",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.1,
"position": [
60,
120
]
},
{
"parameters": {
"options": {}
},
"id": "d3332611-612e-45a9-8958-32ee01f78e57",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
780,
120
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "invoke_n8n_agent",
"responseMode": "responseNode",
"options": {}
},
"id": "ff99f9d2-754d-4b34-b4ff-14f4b03cb634",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
60,
300
]
},
{
"parameters": {
"options": {}
},
"id": "c521db8d-663f-43a4-a711-2bb25ad5f435",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.6,
"position": [
440,
120
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "75ebfdef-c8e2-4c3e-b716-1479d0cc2a73",
"name": "chatInput",
"value": "={{ $json?.chatInput || $json.body.chatInput }}",
"type": "string"
},
{
"id": "59b7a20f-0626-4861-93e2-015d430c266e",
"name": "sessionId",
"value": "={{ $json?.sessionId || $json.body.sessionId}}",
"type": "string"
}
]
},
"options": {}
},
"id": "6db3fb56-0dc0-4374-8e30-3082b2d5d013",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
260,
120
]
},
{
"parameters": {
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
1000,
240
],
"id": "d671da50-d7be-454e-bca0-16955b39c4ca",
"name": "Supabase Vector Store",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": "nomic-embed-text:latest"
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"typeVersion": 1,
"position": [
1180,
380
],
"id": "f72cfb4a-5993-4abf-a430-fd09999be3d8",
"name": "Embeddings Ollama2",
"credentials": {
"ollamaApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
1180,
640
],
"id": "9a35ffde-3ae5-45c1-b535-e921a47c5b79",
"name": "Supabase Vector Store1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "delete",
"tableId": "documents",
"filterType": "string",
"filterString": "=metadata->>file_id=like.*{{ $json.path }}*"
},
"id": "7e66d80b-1f94-4407-8ade-70a39a1a76bb",
"name": "Delete Old Doc Rows",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
460,
840
],
"alwaysOutputData": true,
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"triggerOn": "folder",
"path": "/data/shared",
"events": [
"add",
"change"
],
"options": {
"followSymlinks": true,
"usePolling": true
}
},
"type": "n8n-nodes-base.localFileTrigger",
"typeVersion": 1,
"position": [
60,
840
],
"id": "11030626-a250-4430-9d0e-7969a9dac80f",
"name": "Local File Trigger"
},
{
"parameters": {
"fileSelector": "/data/shared/test.txt",
"options": {
"dataPropertyName": "=data"
}
},
"type": "n8n-nodes-base.readWriteFile",
"typeVersion": 1,
"position": [
640,
640
],
"id": "ec4be9f6-d01d-482a-81e0-53c8e870886b",
"name": "Read/Write Files from Disk"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "e051736f-949a-4230-bf32-c9ade2674b12",
"leftValue": "={{ $json.event }}",
"rightValue": "add",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
280,
660
],
"id": "2e3f2b6b-06d7-4528-a233-6f0bd9d7cc2d",
"name": "If"
}
],
"connections": {
"Postgres Chat Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Ollama Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Ollama Model": {
"ai_languageModel": [
[
{
"node": "Vector Store Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Extract Document Text": {
"main": [
[
{
"node": "Supabase Vector Store1",
"type": "main",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_document",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Embeddings Ollama1": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Vector Store Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Supabase Vector Store": {
"ai_vectorStore": [
[
{
"node": "Vector Store Tool",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Embeddings Ollama2": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Delete Old Doc Rows": {
"main": [
[
{
"node": "Read/Write Files from Disk",
"type": "main",
"index": 0
}
]
]
},
"Local File Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Read/Write Files from Disk": {
"main": [
[
{
"node": "Extract Document Text",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Read/Write Files from Disk",
"type": "main",
"index": 0
}
],
[
{
"node": "Delete Old Doc Rows",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "2f64f7f0-e6df-4a22-80e0-f5bd8b64e274",
"triggerCount": 0,
"tags": [
{
"createdAt": "2025-03-04T21:04:04.627Z",
"updatedAt": "2025-03-04T21:04:04.627Z",
"id": "DLlZ8ewOauMHjTtK",
"name": "agent"
}
]
}
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.
ollamaApipostgressupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Agent: Local AI RAG: Ollama & Supabase Vector. Uses memoryPostgresChat, lmChatOllama, lmOllama, toolVectorStore. Chat trigger; 23 nodes.
Source: https://github.com/LLemonStack/llemonstack/blob/2f1cc4dcf8939a3fa79fccacf59addd5c0d563a3/examples/n8n/workflows/Agent_RAG-Supabase_TUCu8CjPCWQDJsnd.json — 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.
• Create a Google Drive folder to watch. • Connect your Google Drive account in n8n and authorize access. • Point the Google Drive Trigger node to this folder (new/modified files trigger the flow).
The workflow operates through a three-step process that handles incoming chat messages with intelligent tool orchestration: Message Trigger: The node triggers whenever a user message arrives and passe
Build an All-Source Knowledge Assistant with Claude, RAG, Perplexity, and Drive. Uses chatTrigger, memoryPostgresChat, embeddingsOpenAi, rerankerCohere. Chat trigger; 40 nodes.
An extendable RAG template to build powerful, explainable AI assistants — with query understanding, semantic metadata, and support for free-tier tools like Gemini, Gemma and Supabase.
RAG Agent Integration Hub mit Knowledge Management. Uses memoryPostgresChat, lmChatOllama, lmOllama, toolVectorStore. Chat trigger; 27 nodes.