Membangun Conversational Analytics Dashboard untuk Chatbot RAG dengan n8n, Vector DB & LLM
· 4 menit baca
Membangun Conversational Analytics Dashboard untuk Chatbot RAG dengan n8n, Vector DB & LLM
Memantau performa chatbot berbasis Retrieval-Augmented Generation (RAG) bukan lagi sekadar melihat uptime. Untuk membuat chatbot yang benar-benar dapat dipercaya dan terus berkembang, tim perlu metrik percakapan, kualitas jawaban, deteksi drift, hingga estimasi biaya penggunaan LLM. Artikel ini membahas langkah-langkah praktis membangun Conversational Analytics Dashboard menggunakan n8n sebagai orkestrator, vector database untuk konteks, dan LLM untuk penilaian otomatis.
Kenapa Conversational Analytics Penting?
- Memahami kualitas interaksi: apakah chatbot menjawab dengan relevan dan sopan?
- Mendeteksi drift: perubahan intent pengguna atau konten knowledge base yang menurunkan akurasi.
- Optimasi biaya: pemakaian token & model yang menyebabkan biaya tinggi.
- Feedback loop: data metrik membantu retrain RAG dan perbaikan prompt.
Gambaran Arsitektur
Arsitektur yang disarankan terdiri dari komponen berikut:
- Frontend Chat — UI untuk user, mengirim pesan ke backend.
- n8n — menerima webhook pesan, orchestrate RAG flow, menyimpan logs & event.
- Vector DB (Milvus, Weaviate, Pinecone, Qdrant) — menyimpan embedding konteks.
- Database Event (Postgres/Timescale) — menyimpan conversation events dengan schema terstruktur.
- Monitoring & Dashboard (Prometheus + Grafana atau Metabase) — visualisasi metrik.
- LLM Evaluator — LLM yang melakukan quality scoring otomatis (mis. OpenAI, Claude).
Desain Event & Data Model
Pastikan setiap event menyimpan fields berikut:
- conversation_id (UUID)
- user_id (anon atau hashed)
- timestamp
- turn_index
- user_message
- bot_message
- embedding_user (array atau pointer ke vector db)
- embedding_bot
- retrieved_docs (IDs, similarity scores)
- llm_cost_tokens & model_name
- response_latency_ms
- quality_score (0-1 atau 1-5, optional)
- user_feedback (thumbs, rating)
Implementasi dengan n8n — Workflow Utama
Contoh alur di n8n (ringkasan node):
- Webhook node menerima pesan dari frontend.
- Function node: normalisasi pesan (lowercase, remove PII, ekstrak intent sederhana).
- Embedding node: panggil service embedding untuk user_message, simpan ke vector DB.
- Search node: lakukan similarity search pada vector DB untuk mengambil konteks.
- LLM Compose node: gabungkan context + user_message, kirim ke model untuk generasi jawaban.
- LLM Evaluator node: kirim {user_message, bot_message, context} ke model evaluator untuk scoring otomatis.
- DB Insert node: tulis event lengkap ke Postgres/Timescale.
- Metrics node: kirim metrik (latency, cost, success) ke Prometheus/Grafana endpoint atau InfluxDB.
- Response node: kembalikan bot_message ke frontend.
Contoh snippet sederhana (pseudo-config n8n Function node):
// set event object
return [{
json: {
conversation_id: $json["conversation_id"] || generateUUID(),
user_message: $json["text"],
timestamp: new Date().toISOString()
}
}];
Metrik Kunci yang Harus Dipantau
Buat dashboard yang menampilkan metrik-metrik ini:
- Volume Percakapan: conversations per hour/day, unique users
- Latency: p95/p99 response time, average latency
- LLM Cost & Tokens: tokens per conversation, cost per 1000 conversations
- Quality Score: rata-rata skor evaluasi otomatis
- User Feedback Rate: thumbs up/down ratio, manual ratings
- Retrieval Accuracy: rata-rata similarity score dari dokumen yang diambil
- Error Rate: failed LLM calls, timeouts, fallback triggers
- Drift Metrics: embedding centroid shift, new intent spike
Automated Quality Evaluation (LLM-based)
Gunakan LLM sebagai penilai otomatis dengan prompt engineering yang jelas. Contoh metrik yang dievaluasi:
- Relevansi: apakah jawaban menjawab pertanyaan?
- Akurasi: apakah jawaban mengandung informasi yang benar (bila tersedia)?
- Keseluruhan kelayakan: sopan, sesuai kebijakan?
Prompt contoh (ringkas):
"Beri skor 1-5 untuk jawaban berikut berdasarkan relevansi dan kebenaran. Context: {retrieved_docs}. Question: {user_message}. Answer: {bot_message}. Berikan skor dan ringkasan singkat mengapa."
Deteksi Drift dengan Embedding Monitoring
Strategi sederhana:
- Hitung centroid embedding dari percakapan di baseline window (mis. 7 hari pertama).
- Hitung jarak cos-sim rata-rata setiap hari ke centroid baseline.
- Buat alert jika jarak melebihi threshold (menandakan perubahan distribusi user intent).
Selain itu, pantau juga perubahan frekuensi kata kunci, top intents, maupun penurunan similarity score dari retrieved_docs.
Dashboard & Visualisasi
Rekomendasi tools:
- Grafana untuk metrik waktu-nyata (Prometheus, InfluxDB)
- Metabase / Superset untuk analitik ad-hoc dari Postgres
- Elastic/Kibana untuk search & full-text logs
Buat panel-panel penting: conversation funnel, top intents, heatmap response time by hour, cost trend, feedback distribution, dan drift alert timeline.
Feedback Loop & Actionable Insights
Data biasa tidak berguna tanpa aksi. Integrasikan alur perbaikan otomatis:
- Jika quality_score < threshold, kirim percakapan ke queue untuk human review.
- Top-N pertanyaan gagal -> buat artikel knowledge base / fine-tune dataset.
- Jika retrieval similarity turun, jadwalkan reindex vector DB dan update embeddings.
Checklist Implementasi Cepat (MVP)
- Siapkan webhook n8n untuk menerima percakapan.
- Implementasikan embedding + retrieval ke vector DB.
- Koneksikan LLM untuk generasi jawaban dan evaluator scoring.
- Simpan event lengkap ke Postgres/Timescale.
- Kirim metrik ke Prometheus/Influx + buat Grafana dashboard awal.
- Tambah feedback UI dan pipeline human-in-the-loop.
Penutup
Membangun Conversational Analytics Dashboard bukan hanya soal memonitor angka—tetapi membuat sistem yang dapat belajar dan berevolusi. n8n menawarkan fleksibilitas orkestrasi untuk menghubungkan frontend, vector DB, LLM, dan sistem monitoring. Dengan pipeline metrik, LLM-based evaluasi, dan mekanisme feedback loop, tim dapat meningkatkan kualitas chatbot RAG secara berkelanjutan sambil mengendalikan biaya.
Ingin contoh workflow n8n atau template dashboard Grafana? Tinggalkan komentar atau minta contoh template YAML/n8n dan saya akan buatkan langkah demi langkah!