From 0a6d1f430d82f3e8847a36e138fc9f4c81713a2f Mon Sep 17 00:00:00 2001 From: Cole Medin <47287758+coleam00@users.noreply.github.com> Date: Wed, 9 Oct 2024 17:15:20 -0500 Subject: [PATCH] n8n RAG AI Agent with PDFs, Excel documents, and more --- .../Supabase_RAG_AI_Agent_PDFs_Excel.json | 959 ++++++++++++++++++ 1 file changed, 959 insertions(+) create mode 100644 n8n-rag-pdfs-excel/Supabase_RAG_AI_Agent_PDFs_Excel.json diff --git a/n8n-rag-pdfs-excel/Supabase_RAG_AI_Agent_PDFs_Excel.json b/n8n-rag-pdfs-excel/Supabase_RAG_AI_Agent_PDFs_Excel.json new file mode 100644 index 0000000..33a67e5 --- /dev/null +++ b/n8n-rag-pdfs-excel/Supabase_RAG_AI_Agent_PDFs_Excel.json @@ -0,0 +1,959 @@ +{ + "name": "Supabase RAG AI Agent PDFs & More", + "nodes": [ + { + "parameters": { + "model": "gpt-4o-mini", + "options": {} + }, + "id": "d2ee476f-009d-462e-b5ef-4014b1733480", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 860, + 520 + ], + "credentials": { + "openAiApi": { + "id": "JJjD91oisPv9cs01", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": {} + }, + "id": "7780fde9-e3ec-4ca3-81e3-9e7e464dcd6f", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1880, + 460 + ], + "credentials": { + "openAiApi": { + "id": "JJjD91oisPv9cs01", + "name": "OpenAi account" + } + } + }, + { + "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": "b85b35f8-97f2-40aa-b885-0ab892e54ab0", + "name": "Default Data Loader", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 2320, + 1000 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "f0185de7-b17e-4bb1-ac1e-4c9843804a92", + "name": "Embeddings OpenAI1", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 2160, + 1000 + ], + "credentials": { + "openAiApi": { + "id": "JJjD91oisPv9cs01", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "name": "user_documents", + "description": "Contains all the user's documents that you can check for context to answer user questions." + }, + "id": "e2f9747b-2706-423a-93e8-6faa4baeb99e", + "name": "Retrieve Documents", + "type": "@n8n/n8n-nodes-langchain.toolVectorStore", + "typeVersion": 1, + "position": [ + 1660, + 280 + ] + }, + { + "parameters": { + "content": "## Agent Tools for RAG", + "height": 528.85546469693, + "width": 583.4552380860637, + "color": 4 + }, + "id": "660236f6-de85-470a-aa08-76dd5501bbfc", + "name": "Sticky Note", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 1480, + 160 + ] + }, + { + "parameters": { + "content": "## Tool to Add a Google Drive File to Vector DB", + "height": 667.1104380931955, + "width": 2352.5048970686776, + "color": 5 + }, + "id": "cd0908d0-3c70-4ef3-8a37-6b9edef0281a", + "name": "Sticky Note1", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 260, + 704.7773461390849 + ] + }, + { + "parameters": { + "operation": "download", + "fileId": { + "__rl": true, + "value": "={{ $('Set File ID').item.json.file_id }}", + "mode": "id" + }, + "options": { + "googleFileConversion": { + "conversion": { + "docsToFormat": "text/plain" + } + } + } + }, + "id": "f642af26-cbcc-45a0-95ed-1540cac32e6d", + "name": "Download File", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 3, + "position": [ + 1080, + 960 + ], + "executeOnce": true, + "credentials": { + "googleDriveOAuth2Api": { + "id": "cfNochbuJikPwwl2", + "name": "Google Drive account" + } + } + }, + { + "parameters": { + "pollTimes": { + "item": [ + { + "mode": "everyMinute" + } + ] + }, + "triggerOn": "specificFolder", + "folderToWatch": { + "__rl": true, + "value": "1gFS8iBcRN1vs5a1v7vmal3AHmopPAdWT", + "mode": "list", + "cachedResultName": "Excel", + "cachedResultUrl": "https://drive.google.com/drive/folders/1gFS8iBcRN1vs5a1v7vmal3AHmopPAdWT" + }, + "event": "fileCreated", + "options": {} + }, + "id": "bc3b054f-3119-4004-be6e-2ffa45d387f0", + "name": "File Created", + "type": "n8n-nodes-base.googleDriveTrigger", + "typeVersion": 1, + "position": [ + 320, + 860 + ], + "credentials": { + "googleDriveOAuth2Api": { + "id": "cfNochbuJikPwwl2", + "name": "Google Drive account" + } + } + }, + { + "parameters": { + "pollTimes": { + "item": [ + { + "mode": "everyMinute" + } + ] + }, + "triggerOn": "specificFolder", + "folderToWatch": { + "__rl": true, + "value": "1gFS8iBcRN1vs5a1v7vmal3AHmopPAdWT", + "mode": "list", + "cachedResultName": "Excel", + "cachedResultUrl": "https://drive.google.com/drive/folders/1gFS8iBcRN1vs5a1v7vmal3AHmopPAdWT" + }, + "event": "fileUpdated", + "options": {} + }, + "id": "4a88bc45-e162-428c-9cb6-12631edb45c3", + "name": "File Updated", + "type": "n8n-nodes-base.googleDriveTrigger", + "typeVersion": 1, + "position": [ + 320, + 1080 + ], + "credentials": { + "googleDriveOAuth2Api": { + "id": "cfNochbuJikPwwl2", + "name": "Google Drive account" + } + } + }, + { + "parameters": { + "operation": "text", + "options": {} + }, + "id": "06280add-ca88-48c3-b8e8-f2ee18482465", + "name": "Extract Document Text", + "type": "n8n-nodes-base.extractFromFile", + "typeVersion": 1, + "position": [ + 1840, + 1160 + ], + "alwaysOutputData": true + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "7328978a-4557-49ec-92d8-5eaf34cb3d88", + "name": "Embeddings OpenAI", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1700, + 560 + ], + "credentials": { + "openAiApi": { + "id": "JJjD91oisPv9cs01", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "c549429c-54ff-42ca-8eb6-6e5fe1fdd653", + "name": "Postgres Chat Memory", + "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat", + "typeVersion": 1, + "position": [ + 1000, + 520 + ], + "notesInFlow": false, + "credentials": { + "postgres": { + "id": "tzFFADvpFiUtaZtb", + "name": "Supabase Postgres" + } + } + }, + { + "parameters": { + "operation": "delete", + "tableId": "documents", + "filterType": "string", + "filterString": "=metadata->>file_id=like.*{{ $json.file_id }}*" + }, + "id": "06701654-213d-4343-a743-2490cb5c1b37", + "name": "Delete Old Doc Rows", + "type": "n8n-nodes-base.supabase", + "typeVersion": 1, + "position": [ + 840, + 960 + ], + "alwaysOutputData": true, + "credentials": { + "supabaseApi": { + "id": "azIAMHxdSaq5XhoW", + "name": "Supabase account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "10646eae-ae46-4327-a4dc-9987c2d76173", + "name": "file_id", + "value": "={{ $json.id }}", + "type": "string" + }, + { + "id": "f4536df5-d0b1-4392-bf17-b8137fb31a44", + "name": "file_type", + "value": "={{ $json.mimeType }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "bdbcf6dd-5d0e-44f7-98ad-4569d26b2ddb", + "name": "Set File ID", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 600, + 960 + ] + }, + { + "parameters": { + "content": "## RAG AI Agent with Chat Interface", + "height": 464.8027193303974, + "width": 1035.6381264595484 + }, + "id": "eba52e8e-5157-4797-b1af-a54ec641856e", + "name": "Sticky Note2", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 432.49413148117685, + 220 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "2aa822a1-74f0-4f1a-9257-da18b506f1aa", + "name": "Respond to Webhook", + "type": "n8n-nodes-base.respondToWebhook", + "typeVersion": 1.1, + "position": [ + 1300, + 300 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "9a9a245e-f1a1-4282-bb02-a81ffe629f0f", + "name": "chatInput", + "value": "={{ $json?.chatInput || $json.body.chatInput }}", + "type": "string" + }, + { + "id": "b80831d8-c653-4203-8706-adedfdb98f77", + "name": "sessionId", + "value": "={{ $json?.sessionId || $json.body.sessionId}}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "45cea7e5-8601-499a-9769-ed085091f155", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 740, + 300 + ] + }, + { + "parameters": { + "public": true, + "options": {} + }, + "id": "b044a545-8c61-4d32-924a-8c684c0c068e", + "name": "When chat message received", + "type": "@n8n/n8n-nodes-langchain.chatTrigger", + "typeVersion": 1.1, + "position": [ + 480, + 300 + ], + "webhookId": "15e4d662-3f98-48d0-9f50-68838769ecac" + }, + { + "parameters": { + "httpMethod": "POST", + "path": "9ba11544-5c4e-4f91-818a-08a4ecb596c5", + "authentication": "headerAuth", + "responseMode": "responseNode", + "options": {} + }, + "id": "18d03c08-561b-4f59-afe5-0a7b92a61500", + "name": "Webhook", + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [ + 480, + 500 + ], + "webhookId": "9ba11544-5c4e-4f91-818a-08a4ecb596c5", + "credentials": { + "httpHeaderAuth": { + "id": "XivCWajQ7dANnQvl", + "name": "Header Auth account" + } + } + }, + { + "parameters": { + "operation": "pdf", + "options": {} + }, + "id": "051d287e-50de-417b-947e-be99ccc76e6b", + "name": "Extract PDF Text", + "type": "n8n-nodes-base.extractFromFile", + "typeVersion": 1, + "position": [ + 1840, + 780 + ] + }, + { + "parameters": { + "aggregate": "aggregateAllItemData", + "options": {} + }, + "id": "4e1600d7-3d75-4e38-8bdb-a90b44bd4285", + "name": "Aggregate", + "type": "n8n-nodes-base.aggregate", + "typeVersion": 1, + "position": [ + 1760, + 960 + ] + }, + { + "parameters": {}, + "id": "a32ad489-b580-4f35-ae0f-796c3860a422", + "name": "Character Text Splitter", + "type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter", + "typeVersion": 1, + "position": [ + 2320, + 1220 + ] + }, + { + "parameters": { + "fieldsToSummarize": { + "values": [ + { + "aggregation": "concatenate", + "field": "data" + } + ] + }, + "options": {} + }, + "id": "fbf7648e-f0de-48bb-992c-563e67a4a136", + "name": "Summarize", + "type": "n8n-nodes-base.summarize", + "typeVersion": 1, + "position": [ + 1920, + 960 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "={{ $json.chatInput }}", + "options": { + "systemMessage": "You are a personal assistant who helps answer questions from a corpus of documents when you don't know the answer yourself." + } + }, + "id": "cd044b4b-6834-430c-9101-2525d842b9be", + "name": "RAG AI Agent", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 960, + 300 + ] + }, + { + "parameters": { + "rules": { + "values": [ + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "leftValue": "={{ $('Set File ID').item.json.file_type }}", + "rightValue": "application/pdf", + "operator": { + "type": "string", + "operation": "equals" + } + } + ], + "combinator": "and" + } + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "2ae7faa7-a936-4621-a680-60c512163034", + "leftValue": "={{ $('Set File ID').item.json.file_type }}", + "rightValue": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + } + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "fc193b06-363b-4699-a97d-e5a850138b0e", + "leftValue": "={{ $('Set File ID').item.json.file_type }}", + "rightValue": "application/vnd.google-apps.document", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + } + } + ] + }, + "options": { + "fallbackOutput": 2 + } + }, + "id": "50dfe415-5c38-4b54-a55f-cf99975a11d5", + "name": "Switch", + "type": "n8n-nodes-base.switch", + "typeVersion": 3, + "position": [ + 1300, + 960 + ] + }, + { + "parameters": { + "mode": "insert", + "tableName": { + "__rl": true, + "value": "documents", + "mode": "list", + "cachedResultName": "documents" + }, + "options": { + "queryName": "match_documents" + } + }, + "id": "f33b09ba-4934-4385-8e92-0e42e627a3fc", + "name": "Insert into Supabase Vectorstore", + "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase", + "typeVersion": 1, + "position": [ + 2200, + 780 + ], + "credentials": { + "supabaseApi": { + "id": "azIAMHxdSaq5XhoW", + "name": "Supabase account" + } + } + }, + { + "parameters": { + "tableName": { + "__rl": true, + "value": "documents", + "mode": "list", + "cachedResultName": "documents" + }, + "options": { + "queryName": "match_documents" + } + }, + "id": "bac888a0-1d9c-4162-9cca-d79583cd4624", + "name": "Supabase Vector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase", + "typeVersion": 1, + "position": [ + 1540, + 440 + ], + "credentials": { + "supabaseApi": { + "id": "azIAMHxdSaq5XhoW", + "name": "Supabase account" + } + } + }, + { + "parameters": { + "operation": "xlsx", + "options": {} + }, + "id": "1381c252-0565-4dae-9dad-827079f4ddac", + "name": "Extract from Excel", + "type": "n8n-nodes-base.extractFromFile", + "typeVersion": 1, + "position": [ + 1600, + 960 + ] + } + ], + "pinData": {}, + "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 + } + ] + ] + }, + "Download File": { + "main": [ + [ + { + "node": "Switch", + "type": "main", + "index": 0 + } + ] + ] + }, + "File Created": { + "main": [ + [ + { + "node": "Set File ID", + "type": "main", + "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 + } + ] + ] + }, + "Delete Old Doc Rows": { + "main": [ + [ + { + "node": "Download File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set File ID": { + "main": [ + [ + { + "node": "Delete Old Doc Rows", + "type": "main", + "index": 0 + } + ] + ] + }, + "File Updated": { + "main": [ + [ + { + "node": "Set File ID", + "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 + } + ], + [ + { + "node": "Extract from Excel", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Extract Document 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 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "48951752-8341-4ddd-b846-fa52541e6792", + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "620f0d7e3114cb344761d7d45a21ef2a32096f91d8696e7057756042e1999e2c" + }, + "id": "TeTukeCbM1ZtglBm", + "tags": [] +} \ No newline at end of file