← Semua pembelajaran / AWS untuk AI Engineer
Fase 7 · Observability, Biaya & Evaluasi

Evaluasi RAG

Aplikasi RAG punya dua tempat kegagalan: potongan yang salah terambil, atau jawaban yang buruk dari potongan yang benar. Evaluasi RAG memisahkan keduanya.

Intisari

  • Dua jenis job: retrieve only dan retrieve and generate.
  • Memisahkan keduanya menjawab pertanyaan diagnostik: retrieval yang salah, atau generasi?
  • Bisa mengevaluasi Knowledge Base Bedrock maupun sumber RAG eksternal.
  • Dataset butuh ground truth: teks yang seharusnya terambil dan jawaban yang diharapkan.
  • Hasilnya bisa dipakai membandingkan beberapa knowledge base lalu memilih yang terbaik.

Dua kegagalan yang berbeda

Pertanyaan ──▶ Retrieval ──▶ Potongan ──▶ Generasi ──▶ Jawaban
                   │                          │
        gagal di sini?              atau gagal di sini?
GejalaKemungkinan penyebabPerbaikan
Potongan yang benar tidak terambilChunking, embedding, filterFase 4: strategi chunking, metadata
Potongan benar tapi peringkatnya rendahUrutan relevansiReranker
Potongan benar, jawaban salahPrompt generasi, modelPrompt template, model lebih kuat
Jawaban menambah fakta baruHalusinasiContextual grounding check (Fase 6)

Tanpa memisahkan pengukuran, keempat gejala ini terlihat sama dari luar: "jawabannya salah". Itu sebabnya job retrieve only ada.

Dataset dengan ground truth

{
  "prompt": "Berapa hari cuti tahunan karyawan tetap?",
  "referenceResponses": ["12 hari kerja per tahun."],
  "referenceContexts": ["Pasal 4: Karyawan tetap berhak atas cuti tahunan 12 hari kerja."]
}
FieldDipakai untuk menilai
referenceContextsRetrieval: apakah potongan yang benar terambil?
referenceResponsesGenerasi: apakah jawabannya sesuai yang diharapkan?

Menyusun ground truth adalah bagian yang paling memakan waktu — dan tidak bisa dilewati. Dua puluh pertanyaan dengan jawaban yang benar-benar kamu verifikasi jauh lebih berharga daripada dua ratus yang dikarang model. Ambil pertanyaan nyata dari invocation log, lalu minta orang yang paham domainnya menuliskan jawaban acuannya.

Menjalankan job retrieve-only

kelola.create_evaluation_job(
    jobName="eval-retrieval-2026-08",
    roleArn=ROLE_EVAL,
    applicationType="RagEvaluation",
    evaluationConfig={"automated": {
        "datasetMetricConfigs": [{
            "taskType": "Custom",
            "dataset": {"name": "cuti-gt",
                        "datasetLocation": {"s3Uri": "s3://eval-ku/cuti-gt.jsonl"}},
            "metricNames": ["Builtin.ContextRelevance", "Builtin.ContextCoverage"],
        }],
        "evaluatorModelConfig": {"bedrockEvaluatorModels": [
            {"modelIdentifier": MODEL_PENILAI}
        ]},
    }},
    inferenceConfig={"ragConfigs": [{"knowledgeBaseConfig": {
        "retrieveConfig": {
            "knowledgeBaseId": KB_ID,
            "knowledgeBaseRetrievalConfiguration": {
                "vectorSearchConfiguration": {"numberOfResults": 5}
            },
        }
    }}]},
    outputDataConfig={"s3Uri": "s3://eval-ku/hasil-retrieval/"},
)

Membandingkan konfigurasi

Inilah cara menjawab pertanyaan-pertanyaan Fase 4 dengan angka alih-alih perasaan:

PerbandinganJalankan
Fixed vs hierarchical chunkingDua KB, retrieve-only, dataset sama
Dengan vs tanpa rerankerDua konfigurasi retrieval, retrieve-only
5 vs 10 potonganDua numberOfResults
Semantic vs hybridDua overrideSearchType
Prompt generasi lama vs baruRetrieve-and-generate, retrieval identik

Rutinitas yang membuatnya berguna

  1. Jalankan evaluasi RAG di pipeline setiap kali knowledge base atau prompt berubah.
  2. Simpan skornya berdampingan dengan versi rilis.
  3. Pasang gerbang: skor retrieval turun → deploy berhenti.
  4. Tiap bulan, tambahkan pertanyaan baru dari invocation log ke dataset.
  5. Perbarui angka evaluasi di model card (Fase 6) secara otomatis.

Latihan: susun dataset ground truth 15 pertanyaan lengkap dengan referenceContexts. Jalankan job retrieve-only untuk dua konfigurasi chunking dari latihan Fase 4, lalu jawab dengan angka: mana yang menang, dan apakah selisihnya cukup besar untuk membenarkan ingest ulang seluruh korpus?

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.