# CH12 - Retrieval Augmented Generation(RAG)

**Perkiraan waktu belajar**: 5 Hari

**Tingkat kesulitan**: <mark style="color:red;">Sulit</mark>

**Retrieval-Augmented Generation (RAG)** adalah teknologi inovatif dalam bidang Pemrosesan Bahasa Alami (NLP) yang melampaui keterbatasan model bahasa tradisional dengan mengintegrasikan metode pencarian informasi dan generasi teks.

Secara mendasar, RAG mencari informasi yang relevan dalam basis data dokumen besar yang kaya informasi, sehingga model bahasa dapat menghasilkan jawaban yang lebih akurat dan rinci.

Misalnya, ketika ditanya tentang topik seperti peristiwa berita terbaru atau pengetahuan khusus di bidang tertentu, RAG menemukan dokumen yang relevan dan menggunakan konten tersebut untuk membangun jawabannya.

## 8 Langkah Proses RAG

### Persiapan

<figure><img src="https://3432011104-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUIRwwCkXCd5fR0xUSJp%2Fuploads%2FMRt3BkJx9bVaXjK0UKJg%2Fimage.png?alt=media&#x26;token=122ff11f-5f0f-4c49-910c-e5aa1579b6ae" alt=""><figcaption></figcaption></figure>

1. **Document Loader (Pemuat Dokumen):** Pada tahap ini, dokumen yang diperlukan dimuat dari sumber data eksternal dan menjalani pemrosesan awal. Ini mirip dengan mengumpulkan beberapa buku untuk belajar di perpustakaan, di mana siswa memilih buku yang diperlukan dari rak sebelum mulai belajar.
2. **Text Splitter (Pembagi Teks):** Dokumen yang dimuat dibagi menjadi unit-unit yang lebih kecil dan dapat dikelola. Ini seperti membagi buku besar menjadi bab-bab.
3. **Embedding (Pengubahan Menjadi Vektor):** Setiap dokumen atau bagian dari dokumen diubah menjadi bentuk vektor untuk mengkuantifikasi makna dokumen. Ini mirip dengan merangkum isi buku menjadi konsep kunci.
4. **Vector Store (Penyimpanan Vektor):** Vektor-vektor yang telah diubah disimpan dalam basis data. Proses ini seperti mengindeks kata kunci yang dirangkum agar dapat diambil kembali dengan cepat di kemudian hari.

### Runtime (fase RunTime)

1. **Retriever (Pencari):** Ketika sebuah pertanyaan diberikan, vektor yang terkait dicari dari basis data vektor. Ini mirip dengan menemukan bab buku yang paling relevan dengan pertanyaan yang diajukan.
2. **Prompt (Pengaturan Pertanyaan):** Berdasarkan informasi yang ditemukan, sebuah pertanyaan dirumuskan untuk model bahasa. Proses ini melibatkan keputusan tentang bagaimana mengajukan pertanyaan dengan informasi yang tersedia.
3. **LLM (Large Language Model):** Model bahasa besar menghasilkan jawaban menggunakan pertanyaan yang telah dirumuskan. Ini seperti seorang siswa menulis esai atau laporan berdasarkan informasi yang dikumpulkan.
4. **Chain Creation (Pembuatan Rantai):** Sebuah rantai dibuat untuk menghubungkan semua langkah sebelumnya menjadi satu alur kerja yang terintegrasi.
