RAG Chatbot with Supabase + TogetherAI + OpenRouter
## RUN the FIRST WORKFLOW ONLY ONCE
(as it will convert your content into Embedding format and save it in DB and is ready for the RAG Chat)
## Telegram Trigger
* **Type:** `telegramTrigger`
* **Purpose:** Waits for new Telegram messages to trigger the workflow.
* **Note:** Currently disabled.
---
## Content for the Training
* **Type:** `googleDocs`
* **Purpose:** Fetches document content from Google Docs using its URL.
* **Details:** Uses Service Account authentication.
---
## Splitting into Chunks
* **Type:** `code`
* **Purpose:** Splits the fetched document text into smaller chunks (1000 chars each) for processing.
* **Logic:** Loops over text and slices it.
---
## Embedding Uploaded Document
* **Type:** `httpRequest`
* **Purpose:** Calls Together AI embedding API to get vector embeddings for each text chunk.
* **Details:** Sends JSON with model name and chunk as input.
---
## Save the embedding in DB
* **Type:** `supabase`
* **Purpose:** Saves each text chunk and its embedding vector into the Supabase `embed` table.
## SECOND WORKFLOW EXPLANATION:
## When chat message received
* **Type:** `chatTrigger`
* **Purpose:** Starts the workflow when a user sends a chat message.
* **Details:** Sends an initial greeting message to the user.
---
## Embed User Message
* **Type:** `httpRequest`
* **Purpose:** Generates embedding for the user's input message.
* **Details:** Calls Together AI embeddings API.
---
## Search Embeddings
* **Type:** `httpRequest`
* **Purpose:** Searches Supabase DB for the top 5 most similar text chunks based on the generated embedding.
* **Details:** Calls Supabase RPC function `matchembeddings1`.
---
## Aggregate
* **Type:** `aggregate`
* **Purpose:** Combines all retrieved text chunks into a single aggregated context for the LLM.
---
## Basic LLM Chain
* **Type:** `chainLlm`
* **Purpose:** Passes the user's question + aggregated context to the LLM to generate a detailed answer.
* **Details:** Contains prompt instructing the LLM to answer only based on context.
---
## OpenRouter Chat Model
* **Type:** `lmChatOpenRouter`
* **Purpose:** Provides the actual AI language model that processes the prompt.
* **Details:** Uses `qwen/qwen3-8b:free` model via OpenRouter and you can use any of your choice.
Platform
n8n
Category
AI
Price
Free
Creator
iamvaar
code
supabase
aggregate
googleDocs
stickyNote
httpRequest
telegramTrigger
chainLlm
chatTrigger
lmChatOpenRouter
How to import this workflow into n8n
1Purchase or download the workflow to get the n8n workflow JSON file.
2In your n8n instance, open Workflows and choose "Import from File" (or paste the JSON with Ctrl+V on the canvas).
3Open each node marked with a credential warning and connect your own accounts and API keys.
4Run the workflow once manually to verify the data flow, then toggle it to Active.