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.
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
embedtable.
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:freemodel via OpenRouter and you can use any of your choice.
New buyers can create an account from the cart to unlock a controlled $10 first-purchase credit on eligible orders of $25+.
Related bundle
Content Repurposing Engine
8 hand-picked workflows for $29.00.
That is $3.63 each, vs $9.99 for this one alone.
View bundleSecure checkout powered by Stripe
Tags
Support
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.
Related AI workflows
- Launch Your First AI-Powered Chatbot with Actionable Tools$9.99
- Build a WhatsApp Assistant with Memory, Google Suite, Multi-AI, Research, and Imaging$24.99
- Automate AI Video Creation and YouTube Upload with Google Sheets$14.99
- Automate Blog Post Creation and Publishing with GPT, Leonardo AI, and WordPress$14.99
- Automate SEO Keyword Generation with ChatGPT from Google Sheets$3.99
- Email Agent$500.99
More from iamvaar
Need this deployed? We'll set it up for you.
Our automation experts deploy this workflow in your stack, connect your accounts, and verify it works — or build a custom solution from scratch.