RAG: Retrieval-Augmented Generation
Cara membuat AI menjawab berdasarkan dokumenmu sendiri: konsep RAG yang dipakai di semua chatbot dokumen modern.
Masalah yang Dipecahkan RAG
AI hebat menjawab dari pengetahuannya, tapi buta terhadap DOKUMENMU: SOP perusahaan, catatan kuliahmu, dokumentasi internal. Kamu bisa menempel dokumen ke prompt (modul context-engineering), tapi kalau dokumennya 500 halaman? RAG (Retrieval-Augmented Generation) adalah jawabannya: alur otomatis yang (1) mengambil (retrieve) potongan dokumen yang RELEVAN dengan pertanyaan, lalu (2) memberi potongan itu sebagai konteks ke AI untuk menjawab (generate).
Analogi: daripada menyuruh pustakawan menghafal seluruh perpustakaan (fine-tuning: mahal, lama), kamu memberinya sistem pencarian cepat: tiap ada pertanyaan, ia cari 3 halaman paling relevan, baca, lalu jawab berdasarkan itu. Inilah cara kerja chatbot dokumentasi modern (customer support bot, tanya-jawab SOP, asisten repo).
Contoh 1: Memahami Alur RAG Langkah per Langkah
Skenario: chatbot untuk menjawab pertanyaan tentang manual produk 200 halaman.
Tahap persiapan (sekali saja):
- Potong dokumen jadi potongan kecil (chunk), misal 500 kata per chunk.
- Ubah tiap chunk jadi embedding (vektor angka yang menangkap "makna", modul embeddings-dan-vector-db).
- Simpan semua embedding di vector database.
Tahap tanya jawab (setiap pertanyaan):
- User bertanya: "bagaimana cara reset perangkat?"
- Ubah pertanyaan jadi embedding juga.
- Cari di vector database: chunk mana yang maknanya PALING DEKAT dengan pertanyaan? Ambil 3 teratas.
- Susun prompt: "Jawab pertanyaan berikut HANYA berdasarkan konteks ini: [3 chunk]. Pertanyaan: bagaimana cara reset perangkat?"
- AI menjawab berdasarkan chunk tersebut. Kalau tidak ada di chunk, ia bilang tidak tahu (anti-halusinasi alami!).
Perhatikan: langkah 4 adalah pola "grounding ke sumber" dari modul batasan-halusinasi, dibuat otomatis. RAG = context engineering otomatis + pencarian makna.
Contoh 2: Kapan RAG vs Kapan Tidak (Keputusan Praktis)
Pakai RAG kalau: dokumen besar/berubah-ubah (SOP, knowledge base, dokumentasi produk), butuh jawaban dengan sumber ("jawab + tunjukkan halaman berapa"), dan data privat yang tidak boleh dilatih ke model publik.
Jangan pakai RAG kalau: dokumen kecil (< 20 halaman: tempel langsung saja, lebih sederhana), butuh penalaran mendalam lintas banyak dokumen (RAG mengambil potongan, bukan memahami keseluruhan; untuk analisis kompleks, manusia + AI manual lebih baik), atau data tidak terstruktur berantakan (RAG dengan sampah input = sampah output; rapikan dulu).
Jebakan umum: mengira RAG = "AI jadi pintar tentang dokumenku". RAG hanya sebaik: kualitas chunking (potongan yang kepotong kalimat = konteks rusak), kualitas embedding, dan prompt-nya. RAG yang buruk menjawab ngawur dengan percaya diri BERDASARKAN potongan yang salah. Selalu uji dengan pertanyaan yang jawabannya kamu tahu (termasuk pertanyaan jebakan yang jawabannya TIDAK ADA di dokumen).
Catatan teknis: Komponen RAG modern: (1) chunking strategy (fixed-size, semantic, atau by-section; overlap antar chunk mencegah informasi terpotong), (2) embedding model (misal text-embedding-3-small; pilih yang bagus untuk bahasamu, tidak semua embedding bagus untuk Indonesia), (3) vector DB (Pinecone, Weaviate, pgvector untuk Postgres, atau Chroma untuk lokal/prototipe), (4) retrieval tuning (berapa chunk diambil? 3? 10? reranking untuk menyaring lagi?), (5) generation prompt (instruksi grounding yang ketat). Metrik evaluasi: apakah chunk yang diambil relevan (retrieval precision) dan apakah jawaban setia ke sumber (faithfulness). Framework seperti LangChain/LlamaIndex menyediakan komponen ini siap pakai (modul langchain-gambaran).
Kesalahan Umum
- Chunk terlalu besar/kecil. Chunk 5000 kata = banyak noise ikut terambil. Chunk 50 kata = konteks terpotong. Mulai dari 300-500 kata dengan overlap 10-20%.
- Tidak menguji retrieval-nya. Langsung menilai jawaban akhir. Padahal kalau chunk yang diambil salah, jawaban pasti salah. Uji dulu: "untuk pertanyaan X, chunk apa yang terambil? Relevan tidak?"
- Mengabaikan bahasa. Embedding yang dilatih dominan Inggris bisa buruk untuk dokumen Indonesia. Uji dengan pertanyaan bahasa Indonesia yang jawabannya butuh pemahaman nuansa.
- Tidak ada fallback "tidak tahu". Tanpa instruksi eksplisit, AI akan mengarang jawaban dari chunk yang tidak relevan. Selalu sertakan: "jika jawaban tidak ada di konteks, katakan tidak tahu."
Rangkuman
RAG = ambil potongan dokumen yang relevan (retrieval) + jawab berdasarkan potongan itu (generation). Solusi standar untuk chatbot dokumen, SOP, dan knowledge base. Kualitasnya ditentukan chunking, embedding, dan prompt grounding. Kamu sudah mempraktikkan versi manualnya di proyek-mini-ai-agent; modul ini memberi peta versi otomatisnya.
Tantangan
Rancang RAG di Atas Kertas
Pilih satu kumpulan dokumen nyata (misal: 10 artikel blog favoritmu atau manual game). Rancang RAG di atas kertas: (1) berapa chunk dan ukurannya? (2) 5 pertanyaan uji + jawaban yang benar, (3) 2 pertanyaan jebakan yang jawabannya TIDAK ADA di dokumen. Tulis juga: kapan RAG ini akan gagal?