Templates / RAG chatbot with Supabase + TogetherAI + Openrouter

RAG chatbot with Supabase + TogetherAI + Openrouter

Ready for 3.0

by iamvaar ✓ · 9,879 views · created 2025-07-04 · Internal Wiki, AI RAG

Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.

Nodes used (9)

Google DocsSupabaseTelegramBasic LLM ChainOpenRouter Chat Model

What it does

⚠️ 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.

View the original on n8n.io → Check your own copy

Get the weekly “what broke” email

New templates, newly broken ones, and n8n release changes. One short email a week.

Form not loading? Subscribe here.