RAG Chatbot with Supabase + TogetherAI + Openrouter

Go to Workflow
461 views
Built by iamvaar iamvaar
Created on June 06, 2026

Description

⚠️ RUN the FIRST WORKFLOW ONLY ONCE
(as it will convert your content in 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 EXPLAINATION:

πŸ’¬ 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.

🧩 Embend 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.

Nodes Used (6)

Basic LLM Chain
@n8n/n8n-nodes-langchain.chainLlm
Code
n8n-nodes-base.code
Google Docs
n8n-nodes-base.googleDocs
HTTP Request
n8n-nodes-base.httpRequest
OpenRouter Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenRouter
Supabase
n8n-nodes-base.supabase