RAGAS: Framework Evaluasi untuk Pipeline RAG
Pendahuluan
Retrieval-Augmented Generation (RAG) telah menjadi arsitektur standar untuk membangun aplikasi LLM yang berbasis pengetahuan. Namun, membangun pipeline RAG saja tidak cukup. Kita perlu cara yang sistematis untuk mengukur kualitas output dari pipeline tersebut. Di sinilah RAGAS (Retrieval Augmented Generation Assessment) hadir sebagai solusi.
RAGAS adalah framework open-source yang dirancang khusus untuk mengevaluasi pipeline RAG secara otomatis. Framework ini menyediakan serangkaian metrik yang mengukur berbagai aspek kualitas, mulai dari relevansi konteks yang diambil hingga kesetiaan jawaban terhadap sumber informasi.
Dalam tutorial ini, kita akan mempelajari cara menginstal dan menggunakan RAGAS, memahami metrik-metrik intinya, membuat dataset evaluasi, mengintegrasikannya dengan LangChain, dan menerapkannya pada contoh praktis untuk mengevaluasi dan meningkatkan sistem QA dokumen.
Instalasi
Instal RAGAS dan dependensi yang diperlukan menggunakan pip:
pip install ragas langchain langchain-openai chromadb
Pastikan Anda memiliki API key OpenAI yang dikonfigurasi sebagai environment variable:
export OPENAIAPIKEY="sk-your-api-key-here"
RAGAS menggunakan LLM (secara default OpenAI) untuk menghitung beberapa metriknya, jadi API key ini diperlukan untuk evaluasi.
Metrik Inti RAGAS
RAGAS menyediakan empat metrik utama yang masing-masing mengukur aspek berbeda dari pipeline RAG:
1. Faithfulness (Kesetiaan)
Faithfulness mengukur sejauh mana jawaban yang dihasilkan konsisten dengan konteks yang diberikan. Metrik ini memastikan bahwa LLM tidak "berhalusinasi" atau menambahkan informasi yang tidak ada dalam dokumen sumber.
from ragas.metrics import faithfulness
Skor 1.0 = semua klaim dalam jawaban didukung oleh konteks
Skor 0.0 = tidak ada klaim yang didukung oleh konteks
Faithfulness dihitung dengan cara:
- Memecah jawaban menjadi klaim-klaim individual
- Memverifikasi setiap klaim terhadap konteks yang diberikan
- Menghitung rasio klaim yang didukung terhadap total klaim
2. Answer Relevancy (Relevansi Jawaban)
Answer Relevancy mengukur seberapa relevan jawaban yang dihasilkan terhadap pertanyaan yang diajukan. Jawaban yang lengkap dan langsung menjawab pertanyaan akan mendapat skor tinggi.
from ragas.metrics import answerrelevancy
Skor tinggi = jawaban sangat relevan dengan pertanyaan
Skor rendah = jawaban tidak relevan atau terlalu umum
3. Context Precision (Presisi Konteks)
Context Precision mengukur seberapa presisi konteks yang diambil. Metrik ini mengevaluasi apakah potongan dokumen yang relevan ditempatkan di peringkat lebih tinggi dibanding yang tidak relevan.
from ragas.metrics import contextprecision
Skor tinggi = konteks relevan berada di posisi atas
Skor rendah = konteks relevan tercampur dengan yang tidak relevan
4. Context Recall (Recall Konteks)
Context Recall mengukur seberapa banyak informasi yang diperlukan untuk menjawab pertanyaan berhasil diambil dari dokumen. Metrik ini membutuhkan ground truth (jawaban referensi) untuk perhitungan.
from ragas.metrics import contextrecall
Skor tinggi = semua informasi yang diperlukan berhasil diambil
Skor rendah = banyak informasi penting yang terlewat
Membuat Dataset Evaluasi
Untuk menjalankan evaluasi RAGAS, kita perlu menyiapkan dataset dalam format yang tepat. Dataset harus berisi: pertanyaan, konteks yang diambil, jawaban yang dihasilkan, dan ground truth (opsional, tapi diperlukan untuk context recall).
from datasets import Dataset
questions = [
"Apa itu machine learning?",
"Bagaimana cara kerja neural network?",
"Apa perbedaan supervised dan unsupervised learning?"
]
groundtruths = [
"Machine learning adalah cabang dari kecerdasan buatan yang memungkinkan sistem belajar dari data tanpa diprogram secara eksplisit.",
"Neural network bekerja dengan meniru cara kerja neuron di otak manusia, menggunakan lapisan-lapisan node yang saling terhubung untuk memproses informasi.",
"Supervised learning menggunakan data berlabel untuk training, sedangkan unsupervised learning menemukan pola dalam data tanpa label."
]
contexts = [