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)

  1. Kumpulkan dan bersihkan dokumen. Ubah PDF, Word, dan halaman web menjadi teks. Buang header, footer, dan nomor halaman yang berulang.
  2. 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.
  3. Buat embedding. Setiap chunk diubah menjadi vektor angka oleh model embedding. Teks dengan makna mirip akan punya vektor yang berdekatan.
  4. Simpan di vector database beserta metadata: judul dokumen, halaman, tanggal, kategori.

Tahap menjawab (setiap pertanyaan)

  1. Ubah pertanyaan menjadi embedding.
  2. Cari chunk terdekat, misalnya 5 teratas, bisa dikombinasikan dengan pencarian kata kunci biasa.
  3. Susun prompt: instruksi, chunk yang ditemukan, lalu pertanyaan.
  4. 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

KebutuhanPilihan umum
Vector databasepgvector (ekstensi PostgreSQL), Qdrant, Chroma, Weaviate, Pinecone
Model embeddingModel embedding dari OpenAI, Google, Cohere, atau model open source multibahasa
Kerangka kerjaLangChain, LlamaIndex, atau kode sendiri untuk kasus sederhana
Tanpa codingFitur "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.