Belajar Data Scientist - LLM & GenAI untuk Data
Episode 22 of 28

Belajar Data Scientist - LLM & GenAI untuk Data

Membangun aplikasi teks dengan LLM & GenAI: arsitektur Retrieval-Augmented Generation (RAG) untuk analisis data, fine-tuning model bahasa, dan text analytics lanjutan — dilengkapi praktik pipeline RAG sederhana

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 21 kita mengintegrasikan AI ke alur kerja, pada episode ini kita masuk lebih dalam: LLM & GenAI sebagai mesin analisis. Alih-alih hanya "asisten yang mempercepat", sekarang model bahasa menjadi komponen pipeline — membaca dokumen, menjawab pertanyaan dari basis data, dan mengekstrak insight dari teks dalam skala besar.

Mengapa topik ini krusial di 2026? Karena permintaan pasar terhadap talenta yang bisa membangun solusi LLM terus naik (episode 1), dan dua keterampilan yang paling diminta adalah RAG (menjawab berdasarkan data sendiri) dan fine-tuning (menyesuaikan model ke domain). Episode ini membangun keduanya dari konsep hingga pipeline yang bisa dipakai.

RAG: Model Bahasa + Data Kalian

Masalah utama LLM generik: mereka hanya tahu data pelatihan — dan bisa halusinasi saat ditanya di luar itu. RAG (Retrieval-Augmented Generation) menyelesaikannya dengan menambahkan langkah retrieval: cari dokumen relevan dari basis data kalian, lalu biarkan model menjawab berdasarkan dokumen itu.

100%

Lima blok penyusun: dokumen → chunking → embedding → vector store → generation.

Praktik: Pipeline RAG Sederhana

Kita bangun RAG untuk menjawab pertanyaan dari dokumen SOP internal:

Install library RAG
pip install openai chromadb
Pipeline RAG ringkas
import chromadb
from openai import OpenAI
 
client = OpenAI()
collection = chromadb.PersistentClient(
    path="./vector_db").get_or_create_collection("sop")
 
# 1. Ingest: simpan chunk dokumen dengan embedding otomatis
chunks = ["SOP-01: refund diproses maksimal 3 hari kerja...",
          "SOP-02: pelanggan berhak refund penuh dalam 14 hari..."]
collection.add(ids=[f"chunk-{i}" for i in range(len(chunks))],
               documents=chunks)
 
# 2. Retrieve: cari chunk paling relevan
query = "Berapa lama proses refund?"
results = collection.query(query_texts=[query], n_results=2)
konteks = "\n".join(results["documents"][0])
 
# 3. Generate: jawab berdasarkan konteks
respon = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system",
         "content": "Jawab hanya berdasarkan konteks yang diberikan."},
        {"role": "user",
         "content": f"Konteks:\n{konteks}\n\nPertanyaan: {query}"},
    ],
)
print(respon.choices[0].message.content)

Pola RAG yang harus diingat: retrieval dulu, generation setelahnya. Perhatikan system prompt yang membatasi model agar menjawab hanya dari konteks — ini mitigasi halusinasi utama. Hasil akhirnya: model menjawab pertanyaan spesifik perusahaan dari dokumen yang kalian kontrol.

Mengapa Chunking Penting

Dokumen panjang harus dipecah menjadi chunk yang bermakna:

text
Chunk terlalu besar → konteks buram, biaya token tinggi
Chunk terlalu kecil → konteks terpotong, jawaban kurang lengkap
Ukuran ideal       → 300-800 token, dengan overlap antar chunk

Untuk data science, chunk sering berupa bagian dokumen, deskripsi metrik, atau ringkasan per tabel — membuat vector search menemukan konteks yang paling relevan per pertanyaan.

Note

Evaluasi RAG tidak hanya "apakah jawabannya benar" — ukur juga retrieval quality (apakah chunk yang benar ditemukan?) dan generation quality (apakah jawaban setia pada konteks?). Di 2026, muncul framework seperti RAGAS untuk ini. Prinsipnya sama dengan evaluasi model lain: metrik yang jelas, test set yang terpisah.

Fine-Tuning: Menyesuaikan Model

RAG memberi model pengetahuan; fine-tuning memberi model cara bekerja — gaya, format, atau tugas khusus. Kapan dipakai:

PendekatanKapan Tepat
Prompt + RAG (dulu, lebih murah)Pertanyaan butuh data spesifik, format bebas
Fine-tuningFormat/tugas spesifik dan stabil
Training dari nolData raksasa, bahasa/domain sangat khusus

Alur fine-tuning modern memakai LoRA (Low-Rank Adaptation) — melatih sebagian kecil parameter, jauh lebih murah daripada melatih seluruh model:

Fine-tuning dengan Hugging Face (pola)
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
 
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-3B")
 
lora = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"])
model = get_peft_model(model, lora)
 
# training loop seperti episode 13, pada dataset instruksi domain
print("parameter yang dilatih:",
      f"{model.num_parameters(only_trainable=True):,}")

Perhatikan only_trainable=True — dengan LoRA, dari miliaran parameter hanya ribuan yang berubah. Untuk data scientist, prinsipnya: fine-tuning hanya untuk tugas yang benar-benar stabil dan berulang; untuk pertanyaan ad-hoc, RAG + prompt jauh lebih murah dan fleksibel.

Text Analytics Lanjutan

GenAI juga mengubah text analytics klasik (episode 14). Beberapa tugas yang dulu susah kini satu panggilan model:

TugasPendekatan LamaPendekatan GenAI
Ekstraksi entitasNER model khususPrompt + JSON schema
Ringkasan dokumenExtractive (rangkai kalimat)Abstractive (makna asli)
Klasifikasi sentimenFine-tune model per domainZero-shot + few-shot prompt
Analisis temaTopic modelingClustering embedding + label AI
Ekstraksi terstruktur dari teks
respon = client.chat.completions.create(
    model="gpt-4o-mini",
    response_format={"type": "json_object"},
    messages=[{"role": "user",
               "content": (
                   "Ekstrak dari ulasan berikut: {komplain, produk, sentimen} "
                   "sebagai JSON. Ulasan: 'koneksi sering putus di malam hari, "
                   "produk wifi rumah'"
               )}],
)
print(respon.choices[0].message.content)

Kekuatan di sini: output terstruktur (JSON) yang langsung masuk pipeline — mengubah teks bebas menjadi data tabular yang bisa diagregasi, divisualisasi, dan dijadikan fitur. Ini jembatan antara GenAI dan data science klasik.

Kesalahan Umum

PitfallDampakSolusi
Fine-tuning saat RAG cukupBiaya mahal tanpa manfaatPrompt + RAG dulu
Chunking tanpa memikirkan maknaRetrieval lemahChunk sesuai struktur dokumen
Tidak membatasi jawaban pada konteksHalusinasiSystem prompt yang ketat
Menyimpan data sensitif di embedding storeRisiko governance (ep. 19)Pseudonymize + akses terkontrol
RAG tanpa evaluasiKualitas tak terukurMetrik retrieval + generation

Penutup

Inti yang harus dibawa pulang:

  • RAG menjawab pertanyaan berdasarkan data kalian: dokumen → chunk → embedding → retrieval → generation.
  • Evaluasi RAG terpisah: retrieval quality dan generation quality.
  • Fine-tuning untuk tugas stabil & berulang; LoRA membuatnya murah.
  • GenAI menawarkan ekstraksi terstruktur & ringkasan yang mengubah teks menjadi data analitik.
  • Urutan keputusan: prompt → RAG → fine-tuning; bukan sebaliknya.

Di episode 23 selanjutnya kita akan membahas scalable data science — bekerja dengan data besar menggunakan Spark, cloud ML, dan distributed compute. Sampai jumpa di episode 23!

Belajar Data Scientist - LLM & GenAI untuk Data | Belajar Data Scientist