Retrieval-augmented generation (RAG) adalah teknik membuat AI menjawab berdasarkan dokumenmu sendiri. Saat pengguna bertanya, sistem mencari potongan dokumen yang paling relevan, lalu mengirim potongan itu bersama pertanyaan ke model AI. Hasilnya jawaban yang sesuai data internalmu, bisa menyebut sumbernya, dan tetap terbaru tanpa harus melatih ulang model.
Kapan Butuh Retrieval-Augmented Generation
- Chatbot layanan pelanggan yang menjawab dari FAQ, kebijakan, dan katalog produk.
- Asisten internal yang menjawab pertanyaan karyawan dari SOP dan peraturan perusahaan.
- Pencarian dokumen hukum, kontrak, atau laporan dengan jawaban ringkas plus rujukan halaman.
- Dokumentasi teknis yang terlalu besar untuk ditempel ke chat.
Kalau dokumenmu hanya beberapa halaman, RAG belum perlu. Tempel saja langsung ke prompt. RAG berguna saat dokumen terlalu banyak, sering berubah, atau harus diakses banyak orang.
Alur RAG Langkah demi Langkah
Tahap persiapan (sekali, diulang saat dokumen berubah)
- Kumpulkan dan bersihkan dokumen. Ubah PDF, Word, dan halaman web menjadi teks. Buang header, footer, dan nomor halaman yang berulang.
- Potong menjadi chunk. Bagi teks menjadi potongan, misalnya 300 sampai 800 token, sebaiknya mengikuti struktur dokumen (per bagian atau per pasal), dengan sedikit tumpang tindih antar potongan.
- Buat embedding. Setiap chunk diubah menjadi vektor angka oleh model embedding. Teks dengan makna mirip akan punya vektor yang berdekatan.
- Simpan di vector database beserta metadata: judul dokumen, halaman, tanggal, kategori.
Tahap menjawab (setiap pertanyaan)
- Ubah pertanyaan menjadi embedding.
- Cari chunk terdekat, misalnya 5 teratas, bisa dikombinasikan dengan pencarian kata kunci biasa.
- Susun prompt: instruksi, chunk yang ditemukan, lalu pertanyaan.
- Model menjawab dan menyebut sumber chunk yang dipakai.
Contoh Prompt Tahap Akhir
Jawab pertanyaan karyawan HANYA berdasarkan potongan dokumen di
bawah. Kalau jawabannya tidak ada, katakan "Informasi ini belum ada
di dokumen" dan sarankan menghubungi HRD.
Sebut sumber dalam format [Judul dokumen, hal. X].
<dokumen>
[Peraturan Perusahaan 2026, hal. 14] Cuti tahunan 12 hari kerja...
[SOP Cuti, hal. 2] Pengajuan cuti minimal 7 hari sebelumnya...
</dokumen>
Pertanyaan: Berapa hari sebelumnya saya harus mengajukan cuti?
Contoh Kode Sederhana
Contoh berikut memakai Python dengan pustaka Chroma sebagai vector database lokal. Struktur idenya sama untuk bahasa dan tools lain.
import chromadb
client = chromadb.PersistentClient(path="./rag-db")
koleksi = client.get_or_create_collection("sop")
# Tahap persiapan: simpan chunk (Chroma membuat embedding default)
koleksi.add(
ids=["cuti-1", "cuti-2"],
documents=[
"Cuti tahunan 12 hari kerja setelah masa kerja 12 bulan.",
"Pengajuan cuti minimal 7 hari sebelumnya lewat aplikasi HR.",
],
metadatas=[{"sumber": "Peraturan Perusahaan, hal. 14"},
{"sumber": "SOP Cuti, hal. 2"}],
)
# Tahap menjawab: cari chunk paling relevan
hasil = koleksi.query(query_texts=["kapan harus ajukan cuti?"], n_results=2)
konteks = "\n".join(
f"[{m['sumber']}] {d}"
for d, m in zip(hasil["documents"][0], hasil["metadatas"][0])
)
# lalu kirim `konteks` + pertanyaan ke model AI pilihanmu
Pilihan Tools
| Kebutuhan | Pilihan umum |
|---|---|
| Vector database | pgvector (ekstensi PostgreSQL), Qdrant, Chroma, Weaviate, Pinecone |
| Model embedding | Model embedding dari OpenAI, Google, Cohere, atau model open source multibahasa |
| Kerangka kerja | LangChain, LlamaIndex, atau kode sendiri untuk kasus sederhana |
| Tanpa coding | Fitur "project" atau "knowledge" di ChatGPT, Claude, dan NotebookLM untuk skala kecil |
Untuk dokumen bahasa Indonesia, pilih model embedding yang mendukung multibahasa dan uji dengan pertanyaan nyata dari pengguna.
Cara Mengukur Kualitas
Siapkan 20 sampai 50 pertanyaan nyata beserta jawaban yang benar dan dokumen sumbernya. Uji setiap kali ada perubahan. Cek dua hal terpisah:
- Retrieval: apakah chunk yang benar ikut terambil?
- Jawaban: apakah model memakai chunk itu dengan benar dan tidak menambah informasi?
Kalau retrieval gagal, perbaiki chunking atau pencariannya. Kalau retrieval benar tapi jawaban salah, perbaiki prompt-nya.
Kesalahan yang Sering Terjadi
- Chunk terlalu kecil atau dipotong sembarangan, sehingga satu aturan terpotong di tengah dan kehilangan maknanya.
- Dokumen kedaluwarsa ikut terindeks. Hapus atau tandai versi lama, atau saring berdasarkan tanggal di metadata.
- Tidak ada jalur "tidak tahu". Tanpa instruksi itu, model akan mengarang saat dokumen tidak memuat jawabannya.
- Mengabaikan hak akses. Dokumen gaji jangan bisa dijawab untuk semua karyawan. Saring chunk berdasarkan hak akses pengguna sebelum dikirim ke model.
Langkah Berikutnya
RAG adalah bagian dari keterampilan yang lebih luas, yaitu context engineering. Kalau dokumenmu sensitif dan tidak boleh keluar dari kantor, gabungkan RAG dengan AI yang berjalan lokal. Untuk menyambungkan AI ke sumber data lewat standar terbuka, baca Model Context Protocol.