mirror of
https://github.com/coleam00/ai-agents-masterclass.git
synced 2025-11-29 00:23:14 +00:00
740 lines
17 KiB
JSON
740 lines
17 KiB
JSON
{
|
|
"name": "Local RAG AI Agent",
|
|
"nodes": [
|
|
{
|
|
"parameters": {},
|
|
"id": "99b30fd7-b36c-44ba-9daa-408585aaaee9",
|
|
"name": "Postgres Chat Memory",
|
|
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
|
|
"typeVersion": 1.1,
|
|
"position": [
|
|
1040,
|
|
560
|
|
],
|
|
"credentials": {
|
|
"postgres": {
|
|
"id": "iN7fO2CgatVwq73z",
|
|
"name": "Postgres account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"model": "llama3.1:latest",
|
|
"options": {}
|
|
},
|
|
"id": "c7632a7c-2661-492e-bd6f-aab994818998",
|
|
"name": "Ollama Chat Model",
|
|
"type": "@n8n/n8n-nodes-langchain.lmChatOllama",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
920,
|
|
560
|
|
],
|
|
"credentials": {
|
|
"ollamaApi": {
|
|
"id": "eOwAotC7AUgJlvHM",
|
|
"name": "Ollama account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"model": "llama3.1:latest",
|
|
"options": {}
|
|
},
|
|
"id": "73d773a4-5c72-4af3-a52d-144f0e417823",
|
|
"name": "Ollama Model",
|
|
"type": "@n8n/n8n-nodes-langchain.lmOllama",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1960,
|
|
500
|
|
],
|
|
"credentials": {
|
|
"ollamaApi": {
|
|
"id": "eOwAotC7AUgJlvHM",
|
|
"name": "Ollama account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"name": "documents",
|
|
"topK": 3
|
|
},
|
|
"id": "3f882fa7-c8ed-4531-b236-a34c16c55838",
|
|
"name": "Vector Store Tool",
|
|
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1740,
|
|
340
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"model": "nomic-embed-text:latest"
|
|
},
|
|
"id": "3a8e3fa0-3997-4bce-985c-975fb5ad4013",
|
|
"name": "Embeddings Ollama",
|
|
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1840,
|
|
600
|
|
],
|
|
"credentials": {
|
|
"ollamaApi": {
|
|
"id": "eOwAotC7AUgJlvHM",
|
|
"name": "Ollama account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"pollTimes": {
|
|
"item": [
|
|
{
|
|
"mode": "everyMinute"
|
|
}
|
|
]
|
|
},
|
|
"triggerOn": "specificFolder",
|
|
"folderToWatch": {
|
|
"__rl": true,
|
|
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
|
|
"mode": "list",
|
|
"cachedResultName": "Meeting Notes",
|
|
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
|
|
},
|
|
"event": "fileCreated",
|
|
"options": {}
|
|
},
|
|
"id": "41fb71dd-236a-48bc-9761-5841d52ca1b3",
|
|
"name": "File Created",
|
|
"type": "n8n-nodes-base.googleDriveTrigger",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
600,
|
|
880
|
|
],
|
|
"credentials": {
|
|
"googleDriveOAuth2Api": {
|
|
"id": "vzcL2pD7uQzqDpdK",
|
|
"name": "Google Drive account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"pollTimes": {
|
|
"item": [
|
|
{
|
|
"mode": "everyMinute"
|
|
}
|
|
]
|
|
},
|
|
"triggerOn": "specificFolder",
|
|
"folderToWatch": {
|
|
"__rl": true,
|
|
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
|
|
"mode": "list",
|
|
"cachedResultName": "Meeting Notes",
|
|
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
|
|
},
|
|
"event": "fileUpdated",
|
|
"options": {}
|
|
},
|
|
"id": "7b904686-89ae-4722-9ce5-a9da1b13b1a1",
|
|
"name": "File Updated",
|
|
"type": "n8n-nodes-base.googleDriveTrigger",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
600,
|
|
1100
|
|
],
|
|
"credentials": {
|
|
"googleDriveOAuth2Api": {
|
|
"id": "vzcL2pD7uQzqDpdK",
|
|
"name": "Google Drive account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"assignments": {
|
|
"assignments": [
|
|
{
|
|
"id": "10646eae-ae46-4327-a4dc-9987c2d76173",
|
|
"name": "file_id",
|
|
"value": "={{ $json.id }}",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"id": "dd0aa081-79e7-4714-8a67-1e898285554c",
|
|
"name": "folder_id",
|
|
"value": "={{ $json.parents[0] }}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "87f8bbb0-92c5-4b25-be63-7a9d91fc46f8",
|
|
"name": "Set File ID",
|
|
"type": "n8n-nodes-base.set",
|
|
"typeVersion": 3.4,
|
|
"position": [
|
|
860,
|
|
880
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"operation": "download",
|
|
"fileId": {
|
|
"__rl": true,
|
|
"value": "={{ $('Set File ID').item.json.file_id }}",
|
|
"mode": "id"
|
|
},
|
|
"options": {
|
|
"googleFileConversion": {
|
|
"conversion": {
|
|
"docsToFormat": "text/plain"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"id": "9f1e08fb-4ef3-4c4d-9473-5a7a1608b8e3",
|
|
"name": "Download File",
|
|
"type": "n8n-nodes-base.googleDrive",
|
|
"typeVersion": 3,
|
|
"position": [
|
|
1300,
|
|
880
|
|
],
|
|
"executeOnce": true,
|
|
"credentials": {
|
|
"googleDriveOAuth2Api": {
|
|
"id": "vzcL2pD7uQzqDpdK",
|
|
"name": "Google Drive account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"operation": "text",
|
|
"options": {}
|
|
},
|
|
"id": "7efee822-68ad-4fe2-a616-ba19fd127684",
|
|
"name": "Extract Document Text",
|
|
"type": "n8n-nodes-base.extractFromFile",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1540,
|
|
880
|
|
],
|
|
"alwaysOutputData": true
|
|
},
|
|
{
|
|
"parameters": {
|
|
"options": {
|
|
"metadata": {
|
|
"metadataValues": [
|
|
{
|
|
"name": "file_id",
|
|
"value": "={{ $('Set File ID').item.json.file_id }}"
|
|
},
|
|
{
|
|
"name": "folder_id",
|
|
"value": "={{ $('Set File ID').item.json.folder_id }}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"id": "da4c8b29-4944-43c4-9df3-e380366c594a",
|
|
"name": "Default Data Loader",
|
|
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1860,
|
|
1100
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"chunkSize": 100,
|
|
"options": {}
|
|
},
|
|
"id": "d11c39b9-3fa7-4d5d-838f-da0d258c67c5",
|
|
"name": "Recursive Character Text Splitter",
|
|
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1860,
|
|
1320
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"model": "nomic-embed-text:latest"
|
|
},
|
|
"id": "8a04559c-dfe8-479f-8998-a2e9bc994a0a",
|
|
"name": "Embeddings Ollama1",
|
|
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1700,
|
|
1100
|
|
],
|
|
"credentials": {
|
|
"ollamaApi": {
|
|
"id": "eOwAotC7AUgJlvHM",
|
|
"name": "Ollama account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"content": "## Local RAG AI Agent with Chat Interface",
|
|
"height": 527.3027193303974,
|
|
"width": 969.0343804425795
|
|
},
|
|
"id": "a18773ae-1eb3-46b8-91cf-4184c66cf14f",
|
|
"name": "Sticky Note2",
|
|
"type": "n8n-nodes-base.stickyNote",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
560,
|
|
220
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"content": "## Agent Tools for Local RAG",
|
|
"height": 528.85546469693,
|
|
"width": 583.4552380860637,
|
|
"color": 4
|
|
},
|
|
"id": "fa010a11-3dda-4bd5-b261-463a3a6b88d9",
|
|
"name": "Sticky Note",
|
|
"type": "n8n-nodes-base.stickyNote",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1540,
|
|
220
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"content": "## Workflow to Create Local Knowledgebase from Google Drive Folder",
|
|
"height": 705.2695614889159,
|
|
"width": 1568.9362829025763,
|
|
"color": 5
|
|
},
|
|
"id": "f29e6cc7-015e-47cb-a4fd-fecd6ffb0d24",
|
|
"name": "Sticky Note1",
|
|
"type": "n8n-nodes-base.stickyNote",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
560,
|
|
760
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"options": {}
|
|
},
|
|
"id": "5da52326-dfbd-4350-919c-843461f58913",
|
|
"name": "When chat message received",
|
|
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
|
|
"typeVersion": 1.1,
|
|
"position": [
|
|
620,
|
|
340
|
|
],
|
|
"webhookId": "4b3b1838-d6b3-447e-9d79-d0931eddb9f8"
|
|
},
|
|
{
|
|
"parameters": {
|
|
"qdrantCollection": {
|
|
"__rl": true,
|
|
"value": "documents",
|
|
"mode": "list",
|
|
"cachedResultName": "documents"
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "355370e0-2174-4e5b-830b-dd0f123b2e40",
|
|
"name": "Qdrant Vector Store",
|
|
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1560,
|
|
480
|
|
],
|
|
"credentials": {
|
|
"qdrantApi": {
|
|
"id": "VOnegFP8eijBkbNO",
|
|
"name": "QdrantApi account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"code": {
|
|
"execute": {
|
|
"code": "const { QdrantVectorStore } = require(\"@langchain/qdrant\");\nconst { OllamaEmbeddings } = require(\"@langchain/community/embeddings/ollama\");\n\nconst embeddings = new OllamaEmbeddings({\n model: \"nomic-embed-text\",\n baseUrl: \"http://ollama:11434\"\n});\n\nconst vectorStore = await QdrantVectorStore.fromExistingCollection(\n embeddings,\n {\n url: \"http://qdrant:6333\",\n collectionName: \"documents\",\n }\n);\n\nconst fileIdToDelete = this.getInputData()[0].json.file_id;\n\nconst filter = {\n must: [\n {\n key: \"metadata.file_id\",\n match: {\n value: fileIdToDelete,\n },\n },\n ],\n }\n\n// const results = await vectorStore.similaritySearch(\"this\", 10, filter);\n// const idsToDelete = results.map((doc) => doc.id);\n\n// NOT IMPLEMENTED!\n// await vectorStore.delete({ ids: idsToDelete });\n\nvectorStore.client.delete(\"documents\", {\n filter\n});\n\nreturn [ {json: { file_id: fileIdToDelete } } ];\n"
|
|
}
|
|
},
|
|
"inputs": {
|
|
"input": [
|
|
{
|
|
"type": "main",
|
|
"required": true
|
|
}
|
|
]
|
|
},
|
|
"outputs": {
|
|
"output": [
|
|
{
|
|
"type": "main"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"id": "b93bd001-0c4d-42fe-939a-eb441f354917",
|
|
"name": "Clear Old Vectors",
|
|
"type": "@n8n/n8n-nodes-langchain.code",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1080,
|
|
880
|
|
],
|
|
"alwaysOutputData": false
|
|
},
|
|
{
|
|
"parameters": {
|
|
"mode": "insert",
|
|
"qdrantCollection": {
|
|
"__rl": true,
|
|
"value": "documents",
|
|
"mode": "list",
|
|
"cachedResultName": "documents"
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "97ec4618-c0ea-445b-9406-5d41784d7836",
|
|
"name": "Qdrant Vector Store Insert",
|
|
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1760,
|
|
880
|
|
],
|
|
"credentials": {
|
|
"qdrantApi": {
|
|
"id": "VOnegFP8eijBkbNO",
|
|
"name": "QdrantApi account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"options": {}
|
|
},
|
|
"id": "e537544a-37d5-4b00-b5ff-bc71f041f4bb",
|
|
"name": "Respond to Webhook",
|
|
"type": "n8n-nodes-base.respondToWebhook",
|
|
"typeVersion": 1.1,
|
|
"position": [
|
|
1340,
|
|
340
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"httpMethod": "POST",
|
|
"path": "invoke_n8n_agent",
|
|
"responseMode": "responseNode",
|
|
"options": {}
|
|
},
|
|
"id": "2b8cd01f-30a8-4aab-b0dd-56d2b658f059",
|
|
"name": "Webhook",
|
|
"type": "n8n-nodes-base.webhook",
|
|
"typeVersion": 2,
|
|
"position": [
|
|
620,
|
|
520
|
|
],
|
|
"webhookId": "4a839da9-b8a2-45f8-bcaf-c484f9a5912d"
|
|
},
|
|
{
|
|
"parameters": {
|
|
"options": {}
|
|
},
|
|
"id": "c9dfe906-178b-4375-8bda-f9290f35f222",
|
|
"name": "AI Agent",
|
|
"type": "@n8n/n8n-nodes-langchain.agent",
|
|
"typeVersion": 1.6,
|
|
"position": [
|
|
1000,
|
|
340
|
|
]
|
|
},
|
|
{
|
|
"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": "8f974a15-aa2f-4525-8278-ad58ad296076",
|
|
"name": "Edit Fields",
|
|
"type": "n8n-nodes-base.set",
|
|
"typeVersion": 3.4,
|
|
"position": [
|
|
820,
|
|
340
|
|
]
|
|
}
|
|
],
|
|
"pinData": {},
|
|
"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
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Embeddings Ollama": {
|
|
"ai_embedding": [
|
|
[
|
|
{
|
|
"node": "Qdrant Vector Store",
|
|
"type": "ai_embedding",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"File Created": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Set File ID",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"File Updated": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Set File ID",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Set File ID": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Clear Old Vectors",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Download File": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Extract Document Text",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Extract Document Text": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Qdrant Vector Store Insert",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Default Data Loader": {
|
|
"ai_document": [
|
|
[
|
|
{
|
|
"node": "Qdrant Vector Store Insert",
|
|
"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": "Qdrant Vector Store Insert",
|
|
"type": "ai_embedding",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"When chat message received": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Edit Fields",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Qdrant Vector Store": {
|
|
"ai_vectorStore": [
|
|
[
|
|
{
|
|
"node": "Vector Store Tool",
|
|
"type": "ai_vectorStore",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Clear Old Vectors": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Download File",
|
|
"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
|
|
}
|
|
]
|
|
]
|
|
}
|
|
},
|
|
"active": true,
|
|
"settings": {
|
|
"executionOrder": "v1"
|
|
},
|
|
"versionId": "19f9691c-4682-4704-81f2-33fdec9d0be2",
|
|
"meta": {
|
|
"templateCredsSetupCompleted": true,
|
|
"instanceId": "f722e3e1e81e942a38faa434ad0aee8699371bbff9f883b9d5c59a7c726605af"
|
|
},
|
|
"id": "vTN9y2dLXqTiDfPT",
|
|
"tags": []
|
|
} |