This workflow corresponds to n8n.io template #7882 — we link there as the canonical source.
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 →
{
"id": "7np7XO05qTRGi5Fr",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Store Files in Qdrant CLOUD Fairwork",
"tags": [],
"nodes": [
{
"id": "2fca2a63-71ab-423d-a9d9-c94958891fc2",
"name": "Download File",
"type": "n8n-nodes-base.googleDrive",
"onError": "continueRegularOutput",
"position": [
-112,
160
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"binaryPropertyName": "pdf-document",
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf",
"sheetsToFormat": "application/pdf",
"slidesToFormat": "application/pdf",
"drawingsToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "a91f9540-cace-4603-b9bf-5d1756edd00d",
"name": "Insert to Qdrant",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
352,
272
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "id",
"value": "fairwork"
}
},
"credentials": {
"qdrantApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "2cb3650f-519a-4827-bc29-6317941f0b1e",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
208,
544
],
"parameters": {
"model": "text-embedding-3-large",
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "23796c89-e29b-4788-97aa-4fcd296d1dee",
"name": "Delete File",
"type": "n8n-nodes-base.googleDrive",
"onError": "continueRegularOutput",
"position": [
416,
112
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Download File').item.json.id }}"
},
"options": {},
"operation": "deleteFile"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 3
},
{
"id": "8ab7a876-456f-46e4-b91f-9c31511a499e",
"name": "\ud83d\udd35 Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1568,
-240
],
"parameters": {
"color": 5,
"width": 716,
"height": 688,
"content": "## \ud83d\udd35 PROCESS & DELETE GOOGLE DRIVE FILES\n\n**Dual-Trigger System:**\n\ud83d\udccd **Auto Mode:** New files trigger immediately\n\n**What it does:**\n1. Monitors/lists files from Google Drive folder\n2. Downloads and processes each file\n3. Converts to vector embeddings\n4. Stores in Qdrant for semantic search\n5. **DELETES** processed files from Drive\n\n**Use Cases:**\n\u2022 Continuous document ingestion\n\u2022 Batch processing existing files\n\u2022 Building searchable knowledge base"
},
"typeVersion": 1
},
{
"id": "9e6fd226-7d0a-4a9e-9fee-be8baabbe12f",
"name": "\ud83d\udfe1 Trigger Configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1568,
-592
],
"parameters": {
"color": 4,
"width": 708,
"height": 284,
"content": "## \ud83d\udfe1 Setup Tasks\n**Google Drive Auto-Trigger:**\n\u2022 Configure Google Oauth. Set that in use for the Google Drive nodes.\n\u2022 Make a new folder, the workflow will delete files so DO NOT use this on a folder with existing files unless you want them to be removed once the processing is done!\n\u2022 If you do not want files deleted you could change the delete to a move function.\n\u2022 Update the folder name to the one to use\n\u2022 Change the polling time to be suitable frequency for the New File in Google Drive\n\u2022 Update the Qdrant connection details on both of its nodes.\n\u2022 Update the OpenAI embeddings with your account."
},
"typeVersion": 1
},
{
"id": "4c350c67-0bc2-4a5c-abe7-86d1d1d08069",
"name": "\ud83d\udfe2 Batch Processing Logic",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
-240
],
"parameters": {
"color": 6,
"width": 900,
"height": 688,
"content": "## \ud83d\udfe2 BATCH PROCESSING FLOW\n\n**Split In Batches Node:**\n\u2022 Batch size = 1 (one file at a time)\n\u2022 Reset = false (maintains state)\n\u2022 Loops through ALL files\n\n**Why Process One at a Time?**\n\u2713 Prevents memory issues\n\u2713 Better error handling\n\u2713 Cleaner execution logs\n\u2713 Allows file deletion tracking\n\n**Loop Flow:**\n1. List files \u2192 2. Process one \u2192\n3. Delete it \u2192 4. Back to list \u2192\n5. Get next file \u2192 Repeat"
},
"typeVersion": 1
},
{
"id": "198c026a-7dbf-4a2d-9292-842d80839983",
"name": "\ud83d\udd34 DELETE WARNING",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-240
],
"parameters": {
"color": 3,
"width": 404,
"height": 608,
"content": "## \ud83d\udd34 \u26a0\ufe0f CRITICAL WARNING \u26a0\ufe0f\n\n### FILES ARE PERMANENTLY DELETED!\n\n**This workflow DELETES files after processing**\n\u2022 No undo available\n\u2022 No recycle bin\n\u2022 Files are gone forever\n\n**Before Running:**\n\u2611\ufe0f Backup important documents\n\u2611\ufe0f Test with non-critical files first\n\u2611\ufe0f Verify Qdrant insertion works\n\u2611\ufe0f Consider archive option instead\n\n\ud83d\udca1 **Alternative:** Change Delete node\nto Move node for archiving"
},
"typeVersion": 1
},
{
"id": "71d6f6d4-3544-4149-9d57-1ed471c4453d",
"name": "\ud83d\udfe2 Document Pipeline",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-240
],
"parameters": {
"color": 7,
"width": 644,
"height": 1028,
"content": "## \ud83d\udfe2 DOCUMENT PROCESSING\n\n**Processing Pipeline:**\n\n\ud83d\udcc4 **Download** \u2192 Binary data\n\ud83d\udcdd **Load** \u2192 Extract text content\n\u2702\ufe0f **Chunk** \u2192 1500 tokens, 250 overlap. You might want to change that to suit your document size and complexity.\n\ud83d\udd22 **Embed** \u2192 OpenAI vectors\n\ud83d\udcbe **Store** \u2192 Qdrant collection\n\ud83d\uddd1\ufe0f **Delete** \u2192 Remove from Drive\n\n**Supported Formats:**\n\u2022 Google Drive Converts Files to PDF for easier ingestion\n\n**Chunking Strategy:**\n\u2022 Optimized for semantic search\n\u2022 Maintains context with overlap"
},
"typeVersion": 1
},
{
"id": "75015003-24ad-4b35-96c2-841658876f0d",
"name": "\ud83d\udfe1 Setup Requirements",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
-832
],
"parameters": {
"color": 4,
"width": 436,
"height": 520,
"content": "## \ud83d\udfe1 SETUP REQUIREMENTS\n\n**Required Credentials:**\n1\ufe0f\u20e3 **Google Drive OAuth2**\n \u2022 Read, write, delete permissions\n2\ufe0f\u20e3 **OpenAI API Key**\n \u2022 For text-embedding-3-large model\n3\ufe0f\u20e3 **Qdrant Connection**\n \u2022 API endpoint and key\n\n**RAG Configuration Steps:**\n\u2705 Update folder ID in triggers\n\u2705 Change collection name in Qdrant\n\u2705 Adjust chunk size if needed\n\u2705 Set batch size for your needs\n\n\ud83d\udca1 **Model Options:**\n\u2022 text-embedding-3-large (best)\n\u2022 text-embedding-3-small (cheaper)"
},
"typeVersion": 1
},
{
"id": "7423b1d9-ea96-4539-8bfa-07a9d0e59d95",
"name": "\ud83d\udfe3 Performance Tips",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-832
],
"parameters": {
"color": 4,
"width": 484,
"height": 516,
"content": "## \ud83d\udfe3 PERFORMANCE & OPTIMIZATION\n\n**Processing Time Estimates:**\n\u2022 1 file: ~20-30 seconds\n\u2022 10 files: ~3-5 minutes\n\u2022 50 files: ~15-20 minutes\n\u2022 150 files: ~45-60 minutes\n\n**Cost Optimization:**\n\u2022 Use text-embedding-3-small for lower cost\n\u2022 Batch during off-peak hours\n\u2022 Monitor OpenAI API usage\n\n**Performance Tips:**\n\u2713 Keep files under 10MB each\n\u2713 Use dedicated processing folder\n\u2713 Clear Qdrant periodically\n\u2713 Monitor execution logs"
},
"typeVersion": 1
},
{
"id": "dc184d65-48ab-42cf-95cd-c14397227aaa",
"name": "\ud83d\udfe0 Troubleshooting",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
-832
],
"parameters": {
"color": 4,
"width": 484,
"height": 520,
"content": "## \ud83d\udfe0 TROUBLESHOOTING GUIDE\n\n**Common Issues:**\n\n\ud83d\udd04 **Infinite Loop?**\n\u2022 Check reset: false in Split node\n\u2022 Verify Delete node is working\n\n\u23f1\ufe0f **Timeout Errors?**\n\u2022 Reduce files in folder\n\u2022 Process in smaller batches\n\u2022 Check file sizes\n\n\ud83d\udeab **Files Not Processing?**\n\u2022 Check folder permissions\n\u2022 Verify file formats\n\u2022 Ensure workflow is ACTIVE\n\n\ud83d\udcbe **Qdrant Errors?**\n\u2022 Verify collection exists\n\u2022 Check API credentials\n\u2022 Monitor storage limits"
},
"typeVersion": 1
},
{
"id": "c6878ad3-4888-481d-9029-18a58417501a",
"name": "\ud83d\udfe3 Alternative Approaches",
"type": "n8n-nodes-base.stickyNote",
"position": [
1312,
-240
],
"parameters": {
"width": 384,
"height": 596,
"content": "## \ud83d\udfe3 ALTERNATIVE OPTIONS\n\n**Instead of DELETE:**\n\n\ud83d\udcc1 **Archive to Folder:**\n\u2022 Create 'processed' folder\n\u2022 Use Move operation instead\n\u2022 Maintains file backup\n\n\ud83c\udff7\ufe0f **Add Metadata:**\n\u2022 Tag processed files\n\u2022 Add custom properties\n\u2022 Track processing date\n\n\ud83d\udd04 **Duplicate Check:**\n\u2022 Query Qdrant first\n\u2022 Skip if already exists\n\u2022 Prevents duplicates\n\n\ud83d\udca1 **Pro Tip:** Fork workflow\nfor different collections"
},
"typeVersion": 1
},
{
"id": "0e420eac-4046-4eee-9646-687c64a3e1c1",
"name": "\ud83d\udfe1 Setup Requirements1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1568,
-832
],
"parameters": {
"color": 4,
"width": 708,
"height": 216,
"content": "## \ud83d\udfe1 WHY THIS WORKFLOW\n\n**Simple way to get documents into Qdrant**\nMaking it easy to get files into Qdrant, sharing a Google Folder to someone so they can add files.\n\n**Thanks for checking out this workflow, I hope it was helpful.**\nJeremy Dawes, Jezweb [www.jezweb.com.au]"
},
"typeVersion": 1
},
{
"id": "a3d0f647-0685-44b4-bf83-ba082560a926",
"name": "Insert to Qdrant1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
-480,
688
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "id",
"value": "fairwork"
}
},
"credentials": {
"qdrantApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "2d62982c-cd7c-40fa-bfd2-578fcaed7bba",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-624,
960
],
"parameters": {
"model": "text-embedding-3-large",
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "cd85b0ae-0fe1-4fdf-964b-3748640e14da",
"name": "Data Loader for Google Drive Files",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
464,
448
],
"parameters": {
"options": {},
"dataType": "binary",
"textSplittingMode": "custom"
},
"typeVersion": 1.1
},
{
"id": "f5d618c7-c4ee-4560-a16a-5309fbe361c5",
"name": "Data Loader for Form Files",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
-320,
880
],
"parameters": {
"options": {},
"dataType": "binary",
"textSplittingMode": "custom"
},
"typeVersion": 1.1
},
{
"id": "a20b1220-7b95-4096-b1de-c7af0ee7835d",
"name": "File Upload Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1472,
672
],
"parameters": {
"options": {
"path": "32aaa027-a092-4e33-89b9-f03b83b0aea3",
"ignoreBots": true,
"appendAttribution": false,
"respondWithOptions": {
"values": {
"formSubmittedText": "Files are being uploaded"
}
}
},
"formTitle": "Upload Files to Vector Database",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "Files",
"requiredField": true,
"acceptFileTypes": ".pdf,.docx,.doc,csv"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "cc7f894c-f018-488b-bc8c-6a3d75910dde",
"name": "\ud83d\udfe2 Batch Processing Logic1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1600,
528
],
"parameters": {
"color": 6,
"width": 1684,
"height": 672,
"content": "## \ud83d\udfe2 MANUAL FORM PROCESSING FLOW\n\nAdds files from a form in a batch, processing one at a time."
},
"typeVersion": 1
},
{
"id": "0389fee9-a06c-4ac5-9530-bffe9f6aa2ac",
"name": "Recursive Character Text Splitter 1",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
576,
624
],
"parameters": {
"options": {},
"chunkSize": 1500,
"chunkOverlap": 250
},
"typeVersion": 1
},
{
"id": "e333e2f9-52c0-4778-a0fe-399a43bfafca",
"name": "Recursive Character Text Splitter 2",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
-416,
1040
],
"parameters": {
"options": {},
"chunkSize": 1500,
"chunkOverlap": 250
},
"typeVersion": 1
},
{
"id": "8b4b799b-7762-4502-add7-675b53f69481",
"name": "Split Form Batches",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-928,
672
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "39729576-9753-4aab-afd7-e6f7f6d1f97c",
"name": "List Files in Google Drive Folder",
"type": "n8n-nodes-base.googleDrive",
"onError": "continueRegularOutput",
"position": [
-592,
160
],
"parameters": {
"limit": 1,
"filter": {
"driveId": {
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1RDHwOiI6DdnDxf2vQbVXS4yi_spMSZUk",
"cachedResultUrl": "https://drive.google.com/drive/folders/1RDHwOiI6DdnDxf2vQbVXS4yi_spMSZUk",
"cachedResultName": "fairwork"
}
},
"options": {},
"resource": "fileFolder"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 3
},
{
"id": "1b331bfb-1be4-4dd1-aaec-31ad0bc5a4e2",
"name": "New File In Google Drive Folder",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-1104,
-64
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyHour"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1RDHwOiI6DdnDxf2vQbVXS4yi_spMSZUk",
"cachedResultUrl": "https://drive.google.com/drive/folders/1RDHwOiI6DdnDxf2vQbVXS4yi_spMSZUk",
"cachedResultName": "fairwork"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9e4c6209-edf9-4660-a866-fd3355e56135",
"name": "Split Form Files",
"type": "n8n-nodes-base.code",
"position": [
-1216,
672
],
"parameters": {
"jsCode": "// Get all items from the form upload\nconst items = $input.all();\nconst outputItems = [];\n\n// Process each item\nfor (const item of items) {\n const binaryData = item.binary || {};\n \n // Extract all file properties (Files_0, Files_1, etc.)\n const fileKeys = Object.keys(binaryData).filter(key => key.startsWith('Files_'));\n \n // Create separate items for each file\n for (const fileKey of fileKeys) {\n const file = binaryData[fileKey];\n outputItems.push({\n json: {\n fileName: file.fileName,\n mimeType: file.mimeType,\n fileSize: file.fileSize,\n fileExtension: file.fileExtension\n },\n binary: {\n data: file\n }\n });\n }\n}\n\nreturn outputItems;"
},
"typeVersion": 2
},
{
"id": "bc98d692-9bce-491e-9d25-5ec9c811028c",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
960,
640
],
"parameters": {
"options": {}
},
"typeVersion": 1.3
},
{
"id": "39c5d3a1-55cb-4e93-8297-7251f3e05c11",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1168,
640
],
"parameters": {
"options": {}
},
"typeVersion": 2.2
},
{
"id": "561b3d53-549c-4167-a1f5-06ee9d302ffe",
"name": "Qdrant Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
1344,
896
],
"parameters": {
"mode": "retrieve-as-tool",
"topK": 10,
"options": {},
"toolDescription": "Retrieve information from the vector store to help answer the users questions.",
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "fairwork",
"cachedResultName": "fairwork"
}
},
"credentials": {
"qdrantApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "770b9276-97bb-49bd-970c-807eeebb659b",
"name": "Embeddings OpenAI2",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1440,
1104
],
"parameters": {
"model": "text-embedding-3-large",
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "d4c712d3-43aa-46ad-9021-9349cec9c1d4",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1040,
960
],
"parameters": {
"options": {
"temperature": 0.4
}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5861e0f5-32d7-42f2-a121-a50653f48a53",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1184,
848
],
"parameters": {
"contextWindowLength": 50
},
"typeVersion": 1.3
},
{
"id": "4f0978fa-756c-4200-af79-a7b6ec310a6b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
464
],
"parameters": {
"color": 4,
"width": 832,
"height": 816,
"content": "## Chat Bot Demo\n** This chatbot will let you chat with your Qdrant vector data"
},
"typeVersion": 1
},
{
"id": "9d7977b5-37f8-4442-b6c4-1e393b9dbf9e",
"name": "Manually Trigger Workflow",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1104,
256
],
"parameters": {},
"typeVersion": 1
},
{
"id": "79ab8384-c14e-469d-a9c8-2c672507df93",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1136,
224
],
"parameters": {
"mode": "chooseBranch"
},
"typeVersion": 3.2
}
],
"active": false,
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true,
"saveExecutionProgress": true,
"saveDataErrorExecution": "all",
"saveDataSuccessExecution": "all"
},
"versionId": "c65f059d-85aa-4e40-9766-5f919ac52ec0",
"connections": {
"Merge": {
"main": [
[
{
"node": "List Files in Google Drive Folder",
"type": "main",
"index": 0
}
]
]
},
"Delete File": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Download File": {
"main": [
[
{
"node": "Delete File",
"type": "main",
"index": 0
},
{
"node": "Insert to Qdrant",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"File Upload Form": {
"main": [
[
{
"node": "Split Form Files",
"type": "main",
"index": 0
}
]
]
},
"Insert to Qdrant": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Split Form Files": {
"main": [
[
{
"node": "Split Form Batches",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"main": [],
"ai_embedding": [
[
{
"node": "Insert to Qdrant",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Insert to Qdrant1": {
"main": [
[
{
"node": "Split Form Batches",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Insert to Qdrant1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Embeddings OpenAI2": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Split Form Batches": {
"main": [
[],
[
{
"node": "Insert to Qdrant1",
"type": "main",
"index": 0
}
]
]
},
"Qdrant Vector Store": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Manually Trigger Workflow": {
"main": [
[
{
"node": "List Files in Google Drive Folder",
"type": "main",
"index": 0
}
]
]
},
"Data Loader for Form Files": {
"ai_document": [
[
{
"node": "Insert to Qdrant1",
"type": "ai_document",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"New File In Google Drive Folder": {
"main": [
[
{
"node": "List Files in Google Drive Folder",
"type": "main",
"index": 0
}
]
]
},
"List Files in Google Drive Folder": {
"main": [
[
{
"node": "Download File",
"type": "main",
"index": 0
}
]
]
},
"Data Loader for Google Drive Files": {
"main": [],
"ai_document": [
[
{
"node": "Insert to Qdrant",
"type": "ai_document",
"index": 0
}
]
]
},
"Recursive Character Text Splitter 1": {
"ai_textSplitter": [
[
{
"node": "Data Loader for Google Drive Files",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Recursive Character Text Splitter 2": {
"ai_textSplitter": [
[
{
"node": "Data Loader for Form Files",
"type": "ai_textSplitter",
"index": 0
}
]
]
}
}
}
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.
googleDriveOAuth2ApigooglePalmApiopenAiApiqdrantApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n workflow automates the process of ingesting documents from multiple sources (Google Drive and web forms) into a Qdrant vector database for semantic search capabilities. It handles batch processing, document analysis, embedding generation, and vector storage - all while…
Source: https://n8n.io/workflows/7882/ — 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.
This comprehensive workflow bundle is designed as a powerful starter kit, enabling you to build a multi-functional AI assistant on Telegram. It seamlessly integrates AI-powered voice interactions, an
This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th
Automate Outreach Prospect automates finding, enriching, and messaging potential partners (like restaurants, malls, and bars) using Apify Google Maps scraping, Perplexity enrichment, OpenAI LLMs, Goog
Chat with docs - 5minAI New version. Uses httpRequest, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter, embeddingsOpenAi. Event-driven trigger; 62 nodes.
I prepared a detailed guide that illustrates the entire process of building an AI agent using Supabase and Google Drive within N8N workflows.