BAB 17

17 - RAG dan Sistem Pengetahuan AI (Retrieval-Augmented Generation)

Sumber: Disusun berdasarkan riset terkini tentang RAG, vector databases, dan knowledge-augmented AI Estimasi Waktu: 40-50 menit Prasyarat: Pelajaran 04 (Generative AI Fundamentals)


Apa Itu Materi Ini?

Materi ini menjelaskan RAG (Retrieval-Augmented Generation), salah satu teknik terpenting untuk membuat AI lebih akurat dan relevan. RAG mengatasi salah satu keterbatasan terbesar AI: pengetahuan yang terbatas dan kadang usang. Dengan RAG, AI bisa mengakses informasi terkini dan spesifik dari sumber yang kamu tentukan.


Tujuan Pembelajaran

Setelah mempelajari materi ini, kamu akan mampu:


1. Masalah: Keterbatasan Pengetahuan AI

Masalah yang Dihadapi

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         KETERBATASAN PENGETAHUAN AI                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                      β”‚
β”‚  1. KNOWLEDGE CUTOFF                                 β”‚
β”‚     β†’ Pengetahuan AI berhentu di tanggal tertentu    β”‚
β”‚     β†’ Tidak tahu peristiwa setelahnya               β”‚
β”‚                                                      β”‚
β”‚  2. HALUSINASI                                       β”‚
β”‚     β†’ AI bisa membuat jawaban yang terdengar benar   β”‚
β”‚       tapi sebenarnya salah                          β”‚
β”‚                                                      β”‚
β”‚  3. KURANG SPESIFISITAS                              β”‚
β”‚     β†’ Pengetahuan umum, bukan spesifik organisasi    β”‚
β”‚     β†’ Tidak tahu SOP, data internal, konteks unik    β”‚
β”‚                                                      β”‚
β”‚  4. TIDAK BISA MENYITIR                              β”‚
β”‚     β†’ Sulit memberikan referensi tepat ke sumber     β”‚
β”‚                                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Contoh Masalah

User: "Berapa kebijakan cuti tahunan di perusahaan saya?"

AI (tanpa RAG): "Kebijakan cuti bervariasi antar perusahaan..." ← Generik, tidak spesifik
AI (dengan RAG): "Berdasarkan dokumen HR perusahaan Anda, karyawan mendapat 12 hari cuti tahunan..." ← Spesifik dan akurat

2. Apa Itu RAG?

Definisi

Retrieval-Augmented Generation (RAG) adalah teknik di mana AI mencari informasi relevan dari sumber eksternal sebelum menghasilkan jawaban. Alih-alih mengandalkan pengetahuan bawaan saja, AI mengambil konteks spesifik dari database, dokumen, atau API.

Analogi Sederhana

AI tanpa RAG = Menjawab ujian dengan open-book tapi bukunya di rumah
                (hanya mengandalkan apa yang diingat)

AI dengan RAG = Menjawab ujian dengan open-book dan bukunya ada di meja
                (bisa melihat referensi yang tepat sebelum menjawab)

Mengapa RAG Populer?

AspekRAGFine-tuningPrompt Biasa
BiayaRendah-SedangTinggiRendah
Data terkiniYa (real-time)Tidak (perlu retrain)Tidak
SpesifisitasTinggiSedangRendah
Sumber bisa disitirYaTidakTidak
Kompleksitas setupSedangTinggiRendah
Privacy controlTinggi (data lokal)SedangRendah

3. Arsitektur RAG

Alur Kerja RAG

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ALUR KERJA RAG                            β”‚
β”‚                                                             β”‚
β”‚  FASE INDEXING (dilakukan sekali/sekaligus)                 β”‚
β”‚                                                             β”‚
β”‚  Dokumen ──► Chunking ──► Embedding ──► Vector Database     β”‚
β”‚  (PDF, dll)  (pecah      (ubah jadi     (simpan            β”‚
β”‚              jadi potongan) angka/vektor)  vektor)          β”‚
β”‚                                                             β”‚
β”‚  ──────────────────────────────────────────────────────     β”‚
β”‚                                                             β”‚
β”‚  FASE QUERY (setiap kali user bertanya)                     β”‚
β”‚                                                             β”‚
β”‚  Pertanyaan ──► Embedding ──► Search ──► Retrieve           β”‚
β”‚  User         (ubah jadi    (cari yang   (ambil top-k      β”‚
β”‚               vektor)       paling mirip)  chunk terbaik)   β”‚
β”‚                                                             β”‚
β”‚       β”‚                                                     β”‚
β”‚       v                                                     β”‚
β”‚                                                             β”‚
β”‚  Pertanyaan + Konteks ──► LLM ──► Jawaban                  β”‚
β”‚  (retrieved chunks)      (generate    (dengan sumber        β”‚
β”‚                          dengan konteks) yang bisa disitir) β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Fase 1: Indexing (Persiapan Pengetahuan)

a. Document Loading

Mengumpulkan sumber pengetahuan:

b. Chunking (Pemecahan Dokumen)

Memecah dokumen panjang menjadi potongan-potongan kecil:

Dokumen asli (5000 kata):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Paragraf 1 β”‚ Paragraf 2 β”‚ Paragraf 3 β”‚ ...
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Setelah chunking:
Chunk 1: [Paragraf 1 + awal Paragraf 2]
Chunk 2: [Paragraf 2 + awal Paragraf 3]
Chunk 3: [Paragraf 3 + awal Paragraf 4]
...

c. Embedding (Representasi Numerik)

Mengubah setiap chunk menjadi vektor (serangkaian angka) yang merepresentasikan makna semantiknya:

"Saya suka makan nasi goreng" β†’ [0.12, -0.34, 0.56, ..., 0.78] (1536 dimensi)
"Makanan favorit saya adalah nasi goreng" β†’ [0.11, -0.33, 0.55, ..., 0.77]
                                        ↑ Mirip karena maknanya mirip

Yang penting dipahami:

d. Vector Database

Menyimpan semua vektor di database yang dioptimalkan untuk pencarian similarity:

Vector DBKarakteristik
ChromaDBOpen-source, mudah digunakan, cocok untuk pemula
PineconeCloud-managed, scalable, production-ready
WeaviateOpen-source, fitur lengkap, hybrid search
QdrantHigh-performance, Rust-based
FAISSLibrary dari Meta, sangat cepat, in-memory
pgvectorExtension PostgreSQL, mudah diintegrasikan

Fase 2: Query (Pencarian dan Generasi)

a. Query Embedding

Pertanyaan user diubah menjadi vektor menggunakan model embedding yang sama.

b. Retrieval

Mencari chunk yang paling mirip (nearest neighbors) berdasarkan jarak vektor:

Pertanyaan: "Apa kebijakan cuti hamil?"

Vektor pertanyaan ──► Cari yang terdekat ──►
  β†’ Chunk tentang "cuti hamil 3 bulan" (similarity: 0.94)
  β†’ Chunk tentang "prosedur pengajuan cuti" (similarity: 0.72)
  β†’ Chunk tentang "cuti tahunan 12 hari" (similarity: 0.45)

c. Augmented Generation

Chunk yang ditemukan ditambahkan ke prompt sebagai konteks:

System: Jawab pertanyaan berdasarkan konteks yang diberikan.
Jika konteks tidak cukup, katakan bahwa kamu tidak tahu.

Konteks:
[Chunk 1: Kebijakan cuti hamil di perusahaan X adalah 3 bulan...]
[Chunk 2: Pengajuan cuti harus disetujui oleh supervisor...]

Pertanyaan: Apa kebijakan cuti hamil?

Jawab:

4. Tantangan RAG dan Cara Mengatasinya

Tantangan 1: Kualitas Retrieval

Masalah: Chunk yang diambil tidak relevan atau yang relevan justru tidak ditemukan.

Solusi:

Tantangan 2: Lost in the Middle

Masalah: LLM cenderung mengabaikan informasi di tengah-tengah konteks yang panjang.

Solusi:

Tantangan 3: Multi-hop Reasoning

Masalah: Beberapa pertanyaan membutuhkan informasi dari beberapa sumber berbeda.

Solusi:

Tantangan 4: Hallucination Tetap Terjadi

Masalah: Meskipun dengan konteks, AI tetap bisa mengarang.

Solusi:


5. RAG vs Fine-Tuning vs Keduanya

Decision Framework

Pertanyaan: Apa yang ingin kamu capai?

β”Œβ”€ Perilaku/style baru ────────────► FINE-TUNING
β”‚  (AI harus bicara seperti ahli hukum,
β”‚   menulis dalam gaya brand tertentu)
β”‚
β”œβ”€ Pengetahuan baru/fakta ─────────► RAG
β”‚  (AI harus tahu data perusahaan,
β”‚   kebijakan internal, info terkini)
β”‚
β”œβ”€ Keduanya ──────────────────────► RAG + FINE-TUNING
β”‚  (AI harus tahu data internal DAN
β”‚   berinteraksi dengan gaya tertentu)
β”‚
└─ Cukup pengetahuan umum ────────► PROMPTING BIASA
   (AI cukup menggunakan pengetahuan
    bawaan dengan instruksi yang jelas)

6. Implementasi RAG: Gambaran Teknis

Tech Stack Umum

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 RAG TECH STACK                       β”‚
β”‚                                                      β”‚
β”‚  Framework:                                          β”‚
β”‚  - LangChain / LlamaIndex / Haystack                β”‚
β”‚                                                      β”‚
β”‚  Embedding Model:                                    β”‚
β”‚  - OpenAI text-embedding-3-small/large              β”‚
β”‚  - Cohere embed-multilingual                        β”‚
β”‚  - Sentence Transformers (open-source)              β”‚
β”‚                                                      β”‚
β”‚  Vector Database:                                    β”‚
β”‚  - ChromaDB / Pinecone / Weaviate / pgvector        β”‚
β”‚                                                      β”‚
β”‚  LLM:                                                β”‚
β”‚  - Claude / GPT-4 / Gemini / Llama (open-source)    β”‚
β”‚                                                      β”‚
β”‚  Document Processing:                                β”‚
β”‚  - Unstructured / PyPDF / DocETL                    β”‚
β”‚                                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Langkah Implementasi Sederhana (Pseudocode)

# 1. Load dokumen
documents = load_documents("./knowledge_base/")

# 2. Pecah menjadi chunks
chunks = split_documents(documents, chunk_size=500, overlap=50)

# 3. Buat embedding dan simpan
for chunk in chunks:
    embedding = embed(chunk.text)
    vector_db.store(embedding, metadata=chunk.metadata)

# 4. Query time
def answer_question(question):
    # Cari chunks relevan
    query_embedding = embed(question)
    relevant_chunks = vector_db.search(query_embedding, top_k=5)

    # Buat prompt dengan konteks
    context = "\n".join([chunk.text for chunk in relevant_chunks])

    prompt = f"""
    Berdasarkan konteks berikut, jawab pertanyaan.
    Jika konteks tidak cukup, katakan kamu tidak tahu.

    Konteks: {context}

    Pertanyaan: {question}
    """

    # Generate jawaban
    answer = llm.generate(prompt)
    return answer

7. Hubungan dengan Framework 4D

Delegation

Description

Discernment

Diligence


Poin-Poin Utama

  1. RAG mengatasi keterbatasan pengetahuan AI dengan menyediakan konteks relevan
  2. Embedding mengubah teks menjadi angka yang bisa dibandingkan secara semantik
  3. Vector database menyimpan dan mencari embedding secara efisien
  4. Chunking quality sangat menentukan kualitas hasil RAG
  5. RAG cocok untuk fakta/pengetahuan, fine-tuning cocok untuk perilaku/gaya
  6. Hybrid search (keyword + semantic) memberikan hasil terbaik
  7. RAG bukan silver bullet - tetap perlu Discernment untuk evaluasi output

Referensi Lanjutan


Informasi Kursus