Membangun Chatbot Internal Pintar (RAG) dengan n8n, Vector DB & LLM
· 4 menit baca
Membangun Chatbot Internal Pintar (RAG) dengan n8n, Vector DB & LLM
Ringkasan: Artikel ini menjelaskan langkah-langkah praktis untuk membangun chatbot internal berbasis Retrieval-Augmented Generation (RAG) menggunakan n8n sebagai orkestrator, vector database (mis. Qdrant/Pinecone) untuk penyimpanan embedding, dan LLM untuk generasi jawaban.
Apa itu RAG dan kenapa cocok untuk chatbot internal?
Retrieval-Augmented Generation (RAG) adalah metode yang menggabungkan pencarian dokumen relevan dengan kemampuan generatif LLM. Untuk kasus chatbot internal (knowledge base perusahaan, SOP, manual produk, tiket support), RAG membantu menjawab pertanyaan berdasarkan dokumen internal secara akurat dan selalu mengutip sumber.
Arsitektur Singkat
- User —(UI/chat)—> n8n (Webhook) —> Vector DB (retrieve) —> LLM (OpenAI/Local) —> n8n —> User
- Pipeline ingest: Dokumen (PDF/Markdown/HTML) —> Chunking & cleaning —> Embedding —> Vector DB
Komponen Utama
- n8n: Orkestrator workflow — menerima query, memanggil retrieval, membuat prompt, mengirim ke LLM.
- Vector DB: Qdrant, Pinecone, Milvus — menyimpan vektor embedding dan metadata dokumen.
- Embedding: Model embedding (OpenAI embeddings, Ada, atau open-source seperti sentence-transformers).
- LLM: OpenAI GPT, Llama-2, Mistral, atau model yang dihosting sendiri untuk menghasilkan jawaban.
Langkah 1 — Persiapkan Data (Ingest & Chunking)
Prinsipnya: pecah dokumen menjadi potongan (chunks) dengan konteks yang cukup agar retrieval relevan. Contoh praktik:
- Hapus boilerplate (header/footer, nomor halaman).
- Gunakan chunk size 500-1000 token atau 200-400 kata, dengan overlap 20%.
- Simpan metadata: sumber, judul, page, tgl, raw_text_excerpt.
// Pseudocode chunking
function chunkText(text, chunkSize=800, overlap=160){
const tokens = tokenize(text);
const chunks = [];
for (let i=0; i
Langkah 2 — Generate Embeddings & Simpan di Vector DB
Untuk setiap chunk, panggil API embedding lalu simpan vector + metadata ke vector DB. Di n8n, gunakan node HTTP Request atau node integrasi khusus (mis. Pinecone).
Workflow (n8n) untuk ingest:
1. Cron / Manual Trigger -> 2. Read File (S3/Drive) -> 3. Function (chunking) -> 4. HTTP Request (Embedding API) -> 5. HTTP Request (Insert ke Vector DB)
Langkah 3 — Build Retrieval + RAG Workflow di n8n
Flow inti untuk menjawab pertanyaan:
- Webhook Node menerima query user.
- HTTP Request ke embedding model untuk membuat embedding query.
- Query Vector DB untuk nearest neighbors (mis. top_k=5).
- Gabungkan hasil retrieval menjadi konteks (with citations/metadata).
- Buat prompt template (system prompt + retrieved context + user question).
- Kirim prompt ke LLM untuk generasi jawaban.
- Kirim response ke user (web UI, Slack, Teams, dsb.).
Contoh Prompt Template
System: Kamu asisten internal perusahaan. Jawab singkat, sertakan sumber jika perlu.
Context:
{{#each retrieved}}
- Source: {{this.source}} — "{{this.text_excerpt}}"
{{/each}}
Question: {{user_question}}
Answer:
Node n8n yang sering digunakan
- Webhook — menerima pesan chat.
- HTTP Request — panggil Embedding API & LLM API.
- Function / Function Item — manipulasi teks, build prompt.
- SplitInBatches — batch insert ke vector DB selama ingest.
- Set — menyusun payload JSON.
Tips Teknis & Best Practices
- Chunking optimal: 500–1000 token per chunk, overlap 10–30%.
- Top-k retrieval: 3–7 hasil awal, lalu rerank jika perlu menggunakan semantic + lexical scoring.
- Prompting: Sertakan instruksi sistem dan batasi jawaban (mis. max tokens) untuk menghemat biaya.
- Citation: Selalu kembalikan metadata sumber (judul, URL, page) untuk audit dan trust.
- Privacy: Enkripsi data sensitif, batasi data yang dikirim ke LLM pihak ketiga.
- Monitoring: Simpan log query + skor retrieval untuk tuning dan debugging.
- Fallback: Jika LLM tidak yakin, fallback ke FAQ statis atau forward ke human agent.
Contoh Implementasi Singkat (n8n + Qdrant + OpenAI)
- Webhook menerima: {"question":"Bagaimana prosedur reimburse travel?"}
- HTTP Request -> POST /embeddings (OpenAI) => vector q_vec
- HTTP Request -> Qdrant search dengan q_vec, top=5 => hasil [{id, payload, score, text_excerpt}]
- Function -> gabungkan context dan buat prompt
- HTTP Request -> OpenAI completions/chat with prompt => jawaban
- Webhook response -> user
Performance & Biaya
Perhitungan biaya bergantung pada frekuensi query, ukuran prompt (context length), dan model LLM/embedding yang dipakai. Beberapa strategi penghematan:
- Gunakan embedding murah (ada/mini) untuk retrieval, dan hanya gunakan LLM mahal saat perlu.
- Rerank dengan cheap model sebelum memanggil LLM.
- Cache jawaban untuk pertanyaan yang sering muncul.
Testing, Evaluasi & Iterasi
Ukur kualitas RAG dengan metrik: exact match, answer helpfulness (human eval), dan precision@k pada retrieval. Lakukan AB testing pada prompt templates, jumlah konteks, dan reranker.
Keamanan & Kepatuhan
- Masking data sensitif (PII) sebelum menyimpan ke vector DB atau mengirim ke LLM pihak ketiga.
- Kelola akses ke n8n workflows dengan peran dan secret management (Vault/Kubernetes Secrets).
- Audit log untuk setiap query yang mengakses dokumen sensitif.
Contoh Kasus Nyata
Perusahaan support internal yang menggabungkan manual teknis, SOP, dan tiket lama bisa mengurangi waktu resolusi hingga 40% dengan RAG karena agen mendapatkan jawaban langsung dari dokumen relevan, lengkap dengan kutipan sumber.
Kesimpulan
Membangun chatbot internal berbasis RAG dengan n8n memberikan solusi fleksibel, terukur, dan mudah diintegrasikan ke sistem perusahaan. Fokuslah pada kualitas data ingest, desain prompt, dan monitoring untuk menjaga relevansi dan keamanan.
Ingin template n8n atau contoh workflow JSON? Kunjungi JIPRAKS Classroom untuk tutorial langkah-demi-langkah dan template workflow siap pakai.