AutomationFlowsAI & RAG › Google Drive to Supabase Vector Store

Google Drive to Supabase Vector Store

Original n8n title: Upload to Supabase Demo

Upload to Supabase Demo. Uses extractFromFile, vectorStoreSupabase, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 18 nodes.

Event trigger★★★★☆ complexityAI-powered18 nodesSupabase Vector StoreDocument Default Data LoaderText Splitter Recursive Character Text SplitterOpenAI EmbeddingsGoogle Drive TriggerGoogle DriveSupabase
AI & RAG Trigger: Event Nodes: 18 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Documentdefaultdataloader → OpenAI Embeddings 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 →

Download .json
{
  "name": "Upload to Supabase Demo",
  "nodes": [
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "e556566e-20a1-48b4-b01e-197a402b5a5f",
              "name": "file_id",
              "value": "={{ $json.id }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "d373cb7c-674d-40a7-b568-704a3c6bae72",
      "name": "Set ID",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        580,
        40
      ]
    },
    {
      "parameters": {
        "operation": "text",
        "options": {}
      },
      "id": "00fa6495-0bf9-49d3-be48-e2c5260cbf7f",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        1040,
        40
      ]
    },
    {
      "parameters": {
        "mode": "insert",
        "tableName": {
          "__rl": true,
          "value": "documents",
          "mode": "list",
          "cachedResultName": "documents"
        },
        "options": {
          "queryName": "match_documents"
        }
      },
      "id": "bd7aa898-2b52-45ea-93da-b89435d55f2b",
      "name": "Supabase Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1,
      "position": [
        1220,
        40
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {
          "metadata": {
            "metadataValues": [
              {
                "name": "file_id",
                "value": "={{ $('Set ID').item.json.file_id }}"
              }
            ]
          }
        }
      },
      "id": "38dccf7c-94f9-4bfc-a498-306a899cc88f",
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "typeVersion": 1,
      "position": [
        1280,
        200
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "6cee0cfe-2db8-45c9-a330-4d01c7d4acfb",
      "name": "Recursive Character Text Splitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "typeVersion": 1,
      "position": [
        1540,
        200
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "227fb03b-60d6-4d74-9022-127bd19bef20",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1.1,
      "position": [
        1160,
        200
      ],
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "value": "1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E",
          "mode": "list",
          "cachedResultName": "Projects",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E"
        },
        "event": "fileUpdated",
        "options": {}
      },
      "id": "3f7c7cf1-e314-4b75-a16f-fb549ef1950d",
      "name": "File Updated",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "typeVersion": 1,
      "position": [
        340,
        380
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "value": "1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E",
          "mode": "list",
          "cachedResultName": "Projects",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1TdnGrO0UFHboSBFMYCT1T0w17OwMct6E"
        },
        "event": "fileCreated",
        "options": {}
      },
      "id": "5fbf67ec-43f4-4da9-9780-c616a93f5727",
      "name": "New File",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "typeVersion": 1,
      "position": [
        360,
        40
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.file_id }}",
          "mode": "id"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "text/plain"
            }
          }
        }
      },
      "id": "c7d30bf8-c068-4ad2-9473-28ff3fd04a25",
      "name": "Downloading File",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        800,
        40
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $('Set ID 2').item.json.file_id }}",
          "mode": "id"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "text/plain"
            }
          }
        }
      },
      "id": "89f6919a-9fd3-4f42-ba1e-c8a615468f17",
      "name": "Download File 2",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        940,
        380
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "text",
        "options": {}
      },
      "id": "139fd870-2f0c-4b84-86e2-67516d3c62e7",
      "name": "Extract from File1",
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        1120,
        380
      ]
    },
    {
      "parameters": {
        "mode": "insert",
        "tableName": {
          "__rl": true,
          "value": "documents",
          "mode": "list",
          "cachedResultName": "documents"
        },
        "options": {
          "queryName": "match_documents"
        }
      },
      "id": "c375378a-77e9-468e-ba05-a54473899ebe",
      "name": "Supabase Vector Store1",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1,
      "position": [
        1320,
        380
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {
          "metadata": {
            "metadataValues": [
              {
                "name": "file_id",
                "value": "={{ $('Keep First ID').item.json.file_id }}"
              }
            ]
          }
        }
      },
      "id": "3767acd4-c43f-4b65-b7d5-c22269f03734",
      "name": "Default Data Loader1",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "typeVersion": 1,
      "position": [
        1380,
        560
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "2c442939-68c5-4a6b-bf62-09ba7d49d96d",
      "name": "Recursive Character Text Splitter1",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "typeVersion": 1,
      "position": [
        1640,
        560
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "3cae704e-f043-4b0f-8427-82d11447a5e5",
      "name": "Embeddings OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1.1,
      "position": [
        1280,
        560
      ],
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "b4433ac7-0b70-4405-a564-f3f78f784470",
              "name": "file_id",
              "value": "={{ $('File Updated').item.json.id }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "8d932805-480f-4954-a9e4-6d3d23792b7e",
      "name": "Set ID 2",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        620,
        380
      ]
    },
    {
      "parameters": {
        "operation": "delete",
        "tableId": "documents",
        "filterType": "string",
        "filterString": "=metadata->>file_id=like.*{{ $json.id }}*"
      },
      "id": "0ec02f0f-04ab-47bf-b4bf-56f4077f82a7",
      "name": "Delete Row(s)",
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        480,
        380
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "id": "3d3b219a-36ed-4d70-b0ff-697fb22f6f85",
      "name": "Keep First ID",
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        760,
        380
      ]
    }
  ],
  "connections": {
    "Set ID": {
      "main": [
        [
          {
            "node": "Downloading File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Supabase Vector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Supabase Vector Store",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Recursive Character Text Splitter": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Supabase Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "New File": {
      "main": [
        [
          {
            "node": "Set ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Downloading File": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "File Updated": {
      "main": [
        [
          {
            "node": "Delete Row(s)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download File 2": {
      "main": [
        [
          {
            "node": "Extract from File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader1": {
      "ai_document": [
        [
          {
            "node": "Supabase Vector Store1",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Recursive Character Text Splitter1": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader1",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI1": {
      "ai_embedding": [
        [
          {
            "node": "Supabase Vector Store1",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File1": {
      "main": [
        [
          {
            "node": "Supabase Vector Store1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set ID 2": {
      "main": [
        [
          {
            "node": "Keep First ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete Row(s)": {
      "main": [
        [
          {
            "node": "Set ID 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep First ID": {
      "main": [
        [
          {
            "node": "Download File 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2bd439c9-af44-4ef0-9e28-75253fbf7eb1",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "mttKE7wdH4dGdq5s",
  "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow effortlessly transforms files from Google Drive into searchable knowledge bases in Supabase, enabling quick retrieval of information through AI-powered queries without manual data handling. It's ideal for developers, content managers, or teams building chatbots and search tools who need to vectorise documents for semantic search. The core step involves extracting text from the file, splitting it into chunks with the Recursive Character Text Splitter, generating embeddings via OpenAI, and storing them in Supabase's vector database for efficient querying.

Use this when you want automated, event-driven uploads from Google Drive to keep your Supabase vectors current, such as for real-time document indexing in apps. Avoid it for non-text files like images or when you need custom embedding models beyond OpenAI. Common variations include swapping Google Drive for Dropbox triggers or adding post-upload notifications via email nodes.

About this workflow

Upload to Supabase Demo. Uses extractFromFile, vectorStoreSupabase, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 18 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

RAG_Ingest. Uses httpRequest, vectorStoreSupabase, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 73 nodes.

HTTP Request, Supabase Vector Store, Document Default Data Loader +4
AI & RAG

Chat with docs - 5minAI New version. Uses httpRequest, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter, embeddingsOpenAi. Event-driven trigger; 62 nodes.

HTTP Request, Document Default Data Loader, Text Splitter Recursive Character Text Splitter +10
AI & RAG

I prepared a detailed guide that illustrates the entire process of building an AI agent using Supabase and Google Drive within N8N workflows.

HTTP Request, Document Default Data Loader, Text Splitter Recursive Character Text Splitter +10
AI & RAG

Auto repost job with RAG is a workflow designed to automatically extract, process, and publish job listings from monitored sources using Google Drive, OpenAI, Supabase, and WordPress. This integration

Google Drive, Supabase Vector Store, OpenAI Embeddings +12
AI & RAG

My workflow 2529. Uses lmChatOpenAi, documentDefaultDataLoader, embeddingsOpenAi, googleDrive. Event-driven trigger; 54 nodes.

OpenAI Chat, Document Default Data Loader, OpenAI Embeddings +11