
Pada artikel sebelumnya, Self-Hosting AI Lokal di Laptop Celeron N4100, saya membuktikan bahwa laptop Celeron 6-Watt hemat daya dengan RAM 8 GB mampu menjalankan Ollama dan memproses model ringan seperti Qwen2.5 (0.5B).
Pertanyaan selanjutnya adalah: dapatkah mesin ini berfungsi sebagai chatbot dokumentasi interaktif untuk situs web — tanpa membebani CPU atau membuat pengunjung menunggu hingga 120 detik?
Jawabannya adalah ya — dan dalam prosesnya, skrip pencarian sederhana ini berkembang menjadi plugin utuh. Berikut adalah penjelasan teknis bagaimana grav-ai-chatbot bekerja.
Sebagian besar sistem pencarian AI (Retrieval-Augmented Generation / RAG) mengandalkan vector database seperti ChromaDB atau Qdrant yang membutuhkan pemrosesan model embedding terpisah di memori.
Pada Intel Celeron N4100, pendekatan tersebut menghadapi kendala:
Oleh karena itu, prinsip utamanya adalah: hanya kirimkan pertanyaan ke model AI jika memang diperlukan, dan hindari kalkulasi berulang pada CPU.
Setiap pesan dari pengunjung diproses melalui pipeline 5 tingkat, di mana permintaan baru diteruskan ke model AI jika tidak dapat diselesaikan oleh tingkatan sebelumnya:

Pengunjung mengajukan pertanyaan
│
â–¼
Tingkat -1 — Rate Limiter → batas permintaan terlampaui? → blokir, HTTP 429
│ (lolos)
â–¼
Tingkat 0 — Safety Guardrail → kata terlarang terdeteksi? → blokir lokal, 0 token
│ (lolos)
â–¼
Tingkat 1 — Match FAQ Lokal → cocok dengan FAQ? → jawaban instan, 0 token
│ (tidak cocok)
â–¼
Tingkat 2 — Contact Resolver → pertanyaan kontak/support? → info kontak lokal, 0 token
│ (tidak cocok)
â–¼
Tingkat 3 — RAG Retrieval → cari vector store SQLite, ambil potongan relevan
│
â–¼
Tingkat 4 — AI Completion → kirim pertanyaan + potongan ke Gemini / Groq / OpenAI / Ollama
│
â–¼
Telemetry Logger → catat penggunaan token, biaya, dan tingkat yang merespons
Empat dari lima tingkatan di atas tidak menggunakan API AI sama sekali. Pada prosesor Celeron, hal ini sangat menghemat sumber daya sistem.
Pertanyaan yang sering muncul adalah: Mengapa membuat engine RAG sendiri padahal Grav sudah memiliki plugin pencarian TNTSearch?
Meskipun TNTSearch sangat baik untuk pencarian kata kunci situs, ada tiga alasan teknis mengapa RAG kustom diperlukan untuk LLM:
Chunker.php):# H1, ## H2, dan ### H3.VectorStore.php):nomic-embed-text, Gemini text-embedding-004, OpenAI, dan TF-IDF lokal) dengan cosine similarity./docs/install#prerequisites) sehingga AI dapat memberikan tautan referensi yang presisi.Engine RAG menjaga kebaruan indeks melalui alur berikut:
Halaman Grav (dipublikasi) → bersihkan HTML/CSS → bagi per header → cek hash SHA-256 → simpan ke SQLite
Chunker.php): Membagi halaman berdasarkan header Markdown dan memberikan tag rute serta anchor link.Indexer.php): Memeriksa hash SHA-256 tiap bagian sebelum melakukan re-embedding. Bagian yang tidak berubah akan dilewati.VectorStore.php): Potongan teks, metadata, dan vektor disimpan dalam satu file rag_index.sqlite dengan waktu pencarian di bawah 1 milidetik.Plugin ini secara otomatis memperbarui indeks saat ada perubahan halaman melalui event onPageSaved dan onPageDeleted, serta mendukung scheduled job (ai-chatbot-rag-reindex) via scheduler bawaan Grav.
Setiap interaksi dicatat ke user/data/ai-chatbot/interactions.json untuk merekam penggunaan token, biaya, serta tingkatan yang memberikan jawaban. Dashboard admin menampilkan grafik distribusi pertanyaan serta merekomendasikan calon entri FAQ baru berdasarkan pertanyaan yang sering mencapai tingkat AI.
Plugin ini bersifat open source dan tersedia di GitHub:
👉 github.com/milkboyinchina/grav-ai-chatbot
cd /var/www/html/grav/user/plugins
git clone https://github.com/milkboyinchina/grav-ai-chatbot.git ai-chatbot
cd /var/www/html/grav
php bin/plugin ai-chatbot index-rag --rebuild
| Metrik | Tanpa RAG (Kirim Seluruh Situs) | Dengan RAG (Potongan Relevan) | Efisiensi |
|---|---|---|---|
| Strategi Konteks | Menggabungkan seluruh halaman | 2–3 potongan relevan via SQLite | 82% lebih kecil |
| Ukuran Prompt per Query | 204+ token (terus bertambah) | 36 token (stabil) | Hemat 168 token per query |
| Waktu Pencarian Lokal | 0.006 ms | 0.312 ms | Di bawah 1 milidetik |
| Kualitas Jawaban | Berpotensi mengalami halusinasi | Terangkar pada sumber data | Lebih akurat |
| Biaya API Estimasi (10.000 Query) | $0.31 | $0.05 | 82% lebih hemat |
Penggunaan struktur flat-file Grav, SQLite vector store, dan pipeline filter berlapis memungkinkan hardware terbatas seperti Celeron N4100 menyajikan layanan AI Chatbot secara responsif, efisien, dan hemat daya.
Silakan unduh dan coba pada situs Grav Anda:
🔗 GitHub: github.com/milkboyinchina/grav-ai-chatbot