Memasang alat ukur kualitas produk AI: golden dataset, metrik LLM (groundedness, faithfulness), LLM-as-judge, RAGAS, dan regression testing. Kalian membangun eval suite pertama yang melindungi pipeline dari regresi di setiap perubahantype: text

Selama tujuh episode terakhir kalian membangun sistem yang kompleks: RAG, tool calling, caching. Pertanyaan yang sekarang harus kalian jawab: bagaimana tahu sistem ini bagus? Episode ini memperkenalkan disiplin yang membedakan engineer profesional dari hobbyist — evaluation.
Mengapa penting? Karena model itu nondeterministik, dan setiap perubahan kecil (prompt, chunk size, model) bisa merusak kualitas yang tidak disadari. Tanpa evaluasi, semua "perbaikan" adalah tebakan, dan regresi berjalan diam-diam ke produksi. Evaluation adalah test suite untuk produk AI — dan di 2026 ia bukan opsional.
Semua evaluasi berawal dari golden dataset: kumpulan contoh (pertanyaan, jawaban ideal) yang dibuat manusia dan menjadi standar kualitas. Aturan membuatnya:
[
{
"pertanyaan": "Cara reset password di aplikasi?",
"konteks": ["manual-user"],
"jawaban_ideal": "Menu Pengaturan > Keamanan > Reset Password",
"ground_truth": "reset password"
},
{
"pertanyaan": "Apa warna langit?",
"konteks": [],
"jawaban_ideal": "Tidak ditemukan di dokumen",
"ground_truth": "tidak ada di knowledge"
}
]Simpan di version control seperti kode. Golden dataset adalah aset — ia tumbuh seiring produk dan melindungi kalian dari regresi.
Untuk sistem RAG, ada tiga metrik inti yang wajib diukur:
| Metrik | Pertanyaan yang Dijawab | Cara Ukur |
|---|---|---|
| Grounding / Faithfulness | Apakah jawaban berdasar konteks, bukan halusinasi? | Setiap klaim jawaban harus ada di konteks |
| Answer relevance | Apakah jawaban menjawab pertanyaan? | Penilaian model/LLM-judge |
| Retrieval hit rate | Apakah dokumen yang dibutuhkan berhasil diambil? | Apakah ground-truth ada di top-k hasil |
Context precision: dari semua dokumen yang di-retrieve, berapa yang benar-benar relevan. Recall: dari semua dokumen relevan yang ada, berapa yang berhasil diambil.
Menilai jawaban teks bebas secara manual tidak skala. Solusi standar 2026: LLM-as-judge — model lain yang menilai jawaban dengan rubrik. Pakai model lebih kuat sebagai judge (misal Claude untuk menilai GPT), dan temperature=0.
from openai import OpenAI
client = OpenAI()
JUDGE_PROMPT = """Kamu adalah evaluator RAG yang teliti.
Konteks yang diberikan sistem:
<konteks>
{konteks}
</konteks>
Jawaban sistem:
<jawaban>
{jawaban}
</jawaban>
Tugas: nilai faithfulness jawaban terhadap konteks.
Balas JSON: {"faithfulness": 0-1, "alasan": "..."}
Faithfulness 1 = semua klaim ada di konteks.
Faithfulness 0 = ada klaim yang tidak didukung konteks."""
def judge(question: str, konteks: str, jawaban: str) -> dict:
r = client.chat.completions.create(
model="gpt-4o",
temperature=0,
response_format={"type": "json_object"},
messages=[{"role": "user", "content": JUDGE_PROMPT.format(
konteks=konteks, jawaban=jawaban)}],
)
import json
return json.loads(r.choices[0].message.content)Catatan: penanda dalam prompt di atas berada di string kode Python (di dalam code block), sehingga aman. Saat menulis penanda sejenis di dokumentasi atau produksi, jangan memakai karakter kurung sudut di luar code block.
Warning
LLM-as-judge punya bias: ia bisa condong ke jawaban yang panjang, atau memihak model yang "senasib". Mitigasi: gunakan judge berbeda dari model yang dinilai, uji dengan golden dataset yang diverifikasi manusia, dan periksa persetujuan antar-judge (inter-rater agreement).
Alih-alih menulis semua sendiri, banyak tim memakai framework RAGAS yang mengukur metrik RAG standar (faithfulness, answer relevance, context precision/recall) secara otomatis:
from datasets import Dataset
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
dataset = Dataset.from_list([
{"question": q, "answer": a, "contexts": ctx, "ground_truth": gt}
for q, a, ctx, gt in contoh
])
hasil = evaluate(dataset, metrics=[
faithfulness, answer_relevancy, context_precision,
])
print(hasil)Setelah metrik stabil, kunci dengan test otomatis di CI. Alur kerja yang benar:
python eval_suite.py --dataset golden_dataset.json --baseline baseline.jsonInilah yang disebut eval-driven development — perubahan hanya diterima jika terbukti tidak menurunkan kualitas. Di episode 25 kita jadikan ini evaluation gate untuk produksi.
Inti yang harus dibawa pulang:
Di episode 10 selanjutnya kita melihat sisi lain dari peta model: fine-tuning fundamentals — kapan perlu fine-tune, perbedaan LoRA/QLoRA, dan persiapan data training yang benar. Sampai jumpa di episode 10!