Laporan Evaluasi Model KAK — Set Evaluasi 100 Pertanyaan
Tanggal evaluasi: 18 Oktober 2026 (MYT) · Set: 100 pertanyaan kanonis berbahasa Indonesia · Status: sementara, bukan hasil penerimaan klien.
Lihat set evaluasi 100 pertanyaan untuk jawaban dan hasil setiap pertanyaan.
Set evaluasi 100 pertanyaan ini dipilih manual untuk memberi gambaran awal, bukan bukti kesiapan produksi. Pemeriksaan recall lolos, tetapi lima ambang lain yang ditetapkan gagal. Tingkat faithfulness dan hallucination dari pemeriksaan independen tetap null karena enam keputusan klaim dan lima keputusan penolakan tidak tersedia.
Perubahan aturan penilaian, 17 Oktober 2026. Angka jawaban, rubrik, dan outcome dalam laporan ini dinilai dengan figures_only_true; angka yang sama di bawah ambang confidence 0.80 sebelumnya ditampilkan berdampingan dan diberi label di seluruh laporan. Aturan, alasannya, dan batas buktinya ada di Aturan penilaian.
Run dan provenance
| Item | Nilai |
|---|---|
| Run id | golden-seed-easy-20261017-172913-170652 (arm easy, dinilai judge) |
| Tanggal | 17 Oktober 2026, 17:29–18:03 UTC |
| Build yang diuji | e8a34442 — commit yang dijalankan produksi setelah deploy #952. API evaluasi terisolasi melaporkan deployed_ref e8a34442f111871b7ed0078e4f7bb5738994671b, reproducible: true. |
| Index | ragaceh_eval pada Postgres evaluasi lokal box (aceh-eval-db), dipakai ulang dengan --reuse-index; manifest korpus 2026-10-10.1; 100 kasus dinilai |
| Model penjawab | qwen3.8-27b (dilaporkan API), embedding bge-m3, reranker bge-reranker-v2-m3, model OCR PaddleOCR-VL-0.9B; served context window 32.768 token; faithfulness dan Policy Guard aktif; LLM eksternal nonaktif |
| Judge | Jev jev-1.13.0 melalui typesafe-sdk 0.7.2, ambang confidence 0.8. Model judge, pertanyaan, equivalences, rubrik, dan hash mapping-nya identik dengan run 17 Oktober; adapter_sha256 berbeda karena hash itu mencakup sumber adapter, yang kini memuat aturan figures_only_true yang ditambahkan build ini. Kedua rekaman dibekukan dan dikomit. |
| Rekaman | eval/golden-seed/easy-runs/golden-seed-easy-20261017-172913-170652-easy.json, beserta -faithfulness.json dan -judge-config.json |
Hasil
Semua nilai berikut berasal dari evaluasi 100 kasus pada 18 Oktober 2026. Enam pemeriksaan ambang ditampilkan terpisah di bawah.
| Metrik | Hasil | Penyebut / arti |
|---|---|---|
| Recall@5 | 89,29% | 75/84 kasus dengan dokumen sumber yang diharapkan |
| MRR@5 | 0,875 | Rata-rata reciprocal rank pada 84 kasus |
| nDCG@5 | 0,8797 | Rata-rata normalized discounted gain pada 84 kasus |
| Lulus rubrik jawaban | 72,00% | 72/100; rubrik jawaban/penolakan yang dinilai lulus |
| Tingkat jawaban benar | 72,00% | 72/100: 63 jawaban benar, 8 penolakan yang diharapkan dan ditangani dengan benar, dan 1 jawaban yang lulus rubrik tetapi gagal kontrak rute yang diharapkan |
| Lulus outcome | 71,00% | 71/100 setelah outcome yang diharapkan dan kontrak rute diterapkan |
| Kehadiran sitasi | 86,36% | 76/88 kasus yang mengharapkan jawaban memiliki ≥1 sitasi; kehadiran bukan bukti dukungan |
| Lulus penolakan | 66,67% | 8/12 kasus yang mengharapkan penolakan lulus |
| Lulus rute | 66,67% | 2/3 pemeriksaan rute lulus |
| Latensi total, p50 / p95 / p99 | 13,7 / 61,6 / 74,4 dtk | Seluruh 100 kasus; pencarian ditambah query |
| Latensi pencarian, p50 / p95 / p99 | 0,377 / 0,589 / 0,721 dtk | Seluruh 100 kasus |
Ambang yang ditetapkan: 1/6 lulus, 5/6 gagal. Recall@5 ≥80% lulus. Lulus rute =100%, lulus rubrik jawaban ≥80%, lulus outcome ≥80%, kehadiran sitasi =100%, dan lulus penolakan =100% gagal. Secara keseluruhan, evaluasi ini gagal.
Ini run pertama yang dinilai dengan figures_only_true yang sudah diterapkan langsung, bukan melalui penilaian ulang run tersimpan, sehingga tidak punya himpunan angka kedua: menilai ulang rekaman yang dikomit secara offline mengubah 0 kasus dan membiarkan semua metrik identik.
Aturan penilaian: figures_only_true (17 Oktober 2026)
Judge melakukan pemeriksaan terpisah untuk setiap kasus dan menandai setiap jawabannya sendiri dengan confidence, |2 × p_yes − 1|. Setiap pemeriksaan di bawah ambang 0.8 dianggap "ditandai", dan satu pemeriksaan yang ditandai membuat seluruh kasus menjadi unavailable — verdict ditahan dan kasus tetap masuk penyebut tingkat jawaban dan rubrik tanpa menyumbang kelulusan. Perlakuan itu menyamakan keraguan pada pemeriksaan figures, yaitu pertanyaan apakah angka dalam jawaban benar, dengan kegagalan jawaban.
Aturannya sekarang: jika pemeriksaan figures adalah satu-satunya pemeriksaan yang ditandai pada sebuah kasus dan jawaban judge sendiri atas pemeriksaan itu adalah ya (p_yes pada atau di atas ambang 0.5 milik spec), tanda itu dihapus dan kasus dinilai dari verdict tersimpannya. Tidak ada hal lain yang berubah. Keraguan figures yang condong ke tidak (p_yes di bawah 0.5) tetap ditandai — jawaban "angka itu salah" yang tak yakin bukan kelulusan. Tanda figures yang berdampingan dengan tanda lain (support, coverage, recall) juga tetap ditandai; itu keraguan atas klaim yang disebut, bukan atas pertanyaan yang tidak disinggung jawaban. Kasus penolakan tidak pernah mengajukan pertanyaan figures dan tidak terpengaruh. Aturan ini hidup di satu tempat, judge_flags() di src/aceh_rag/eval/jev_judge.py, yang dibaca oleh run langsung, re-scorer, dan laporan ini.
Alasannya: judge menandai pertanyaan figures pada jawaban yang sama sekali tidak menyatakan angka, padahal instruksi pertanyaan itu sendiri sudah mengizinkannya ("jika jawaban tidak memuat klaim numerik dan tidak ada yang diwajibkan, jawab ya"). Dari 200 case-run pada sampel kalibrasi, 56 membawa pemeriksaan figures yang ditandai sebagai satu-satunya tanda; aturan menghapus tanda pada 37 di antaranya yang jawaban judge-nya ya — 28 jawaban benar, satu benar-dengan-cacat, dan 8 penolakan salah yang berpindah dari unsure ke kegagalan tegas — lalu membiarkan 19 yang condong ke tidak tetap ditandai. Pada run 17 Oktober aturan memindahkan 16 kasus dari unavailable ke correct dan 4 dari unavailable ke penolakan salah yang tegas, yang sebelumnya dilaporkan sebagai unsure. Run 18 Oktober adalah yang pertama dinilai dengan aturan itu sudah berlaku, sehingga tidak punya himpunan angka kedua; menilai ulang pemeriksaan tersimpannya secara offline tidak mengubah satu kasus pun.
Batas buktinya. Aturan ini didukung sampel yang hanya memuat 3 jawaban salah tegas dari 60 case-run salah; 57 sisanya adalah penolakan yang salah. Jadi "nol jawaban salah yang lulus" berarti 0/60 pada sampel yang tidak dapat menilai kasus yang justru ingin dibantu aturan ini — angka salah yang lancar dan yakin yang disetujui pemeriksaan figures. Aturan ini belum terbukti di sana. Ke-56 label ground truth itu juga berasal dari satu penilai, dan probabilitas keraguannya dibaca saat ground truth itu sedang disusun, sehingga pemisahan set tuning dan validasi adalah pembagian yang didaftarkan lebih dulu, bukan uji tersamar.
Cara angka ini dihasilkan. Run yang dipublikasikan adalah run dinilai langsung atas build saat ini: jawaban, hasil retrieval, dan keputusan judge di dalam eval/golden-seed/easy-runs/golden-seed-easy-20261017-172913-170652-easy.json adalah miliknya sendiri, dan aturannya diterapkan runner saat menilai. Menilai ulang rekaman itu secara offline dari pemeriksaan tersimpannya (scripts/rescore_golden_seed.py --from-stored-checks) tidak mengubah apa pun; langkah itu hanya dijalankan karena generator tabel mensyaratkan atribusi aturan yang ditulisnya. Angka run sebelumnya di bawah aturan ini adalah hasil penilaian ulang offline atas pemeriksaan tersimpannya, yang hanya menghitung ulang himpunan tanda, sumbu jawaban, dan verdictnya. Tabel per pertanyaan dihasilkan ulang dari run 18 Oktober dengan scripts/generate_docs_evaluation_table.py; perintah persisnya ada di eval/golden-seed/easy-runs/README.md.
Definisi metrik
| Metrik | Arti sederhana dan rumus |
|---|---|
| Recall@5 | Untuk setiap kasus dengan dokumen sumber yang diharapkan: dokumen relevan di lima hasil pertama ÷ jumlah dokumen relevan yang diharapkan; dirata-ratakan pada kasus retrieval. |
| MRR@5 | Untuk setiap kasus retrieval, 1 / peringkat dokumen pertama yang diharapkan dalam lima hasil pertama, atau nol jika tidak muncul; dirata-ratakan pada semua kasus. |
| nDCG@5 | Gain relevansi biner di setiap peringkat, didiskon dengan 1/log2(peringkat + 1), lalu dibagi gain ideal di lima hasil pertama; dirata-ratakan pada semua kasus. |
| Lulus rubrik jawaban | Kasus yang lulus rubrik jawaban dan angka, atau rubrik penolakan yang diharapkan, ÷ seluruh 100 kasus. Pemeriksaan judge yang ditandai gagal secara tertutup, kecuali kasus figures di atas. |
| Tingkat jawaban benar | Kasus dengan jawaban benar ÷ 100. Untuk kasus terjawab yang dinilai judge, kebenaran memerlukan lulus rubrik jawaban/angka dan dukungan sitasi; derive_answer_axes() tidak mensyaratkan source_span_found. Penolakan yang diharapkan hanya benar jika judge menilainya sebagai penolakan dan syarat sitasi/sumber lulus. faithfulness_pass_rate di laporan ini adalah angka ini yang dilabeli ulang (ADR-0042), bukan pemeriksaan independen di bawah. |
| Lulus outcome | Kasus dengan outcome_pass=true ÷ 100; berawal dari kebenaran jawaban, dan juga mensyaratkan kontrak rute yang diharapkan jika ada. |
| Kehadiran sitasi | Kasus yang mengharapkan jawaban dan memiliki ≥1 sitasi ÷ 88 kasus yang mengharapkan jawaban. Ini tidak menunjukkan bahwa sitasi mendukung jawaban. |
| Lulus penolakan | Kasus penolakan yang diharapkan dan lulus ÷ 12 kasus penolakan yang diharapkan. Penolakan yang tidak semestinya pada pertanyaan yang seharusnya dijawab bukan lulus penolakan. |
| Persentil latensi | Latensi kasus diurutkan, lalu diinterpolasi linier pada indeks (n - 1) × kuantil; latensi total adalah pencarian ditambah query. |
| Tingkat dukungan klaim faithfulness | Klaim faktual yang didukung ÷ klaim faktual yang dinilai. contradicts dan says_nothing berarti tidak didukung; keputusan unavailable tetap di penyebut dan bukan dukungan. |
| Lulus jawaban faithfulness | Jawaban yang tidak memiliki klaim tidak didukung ÷ jawaban yang memuat setidaknya satu klaim faktual untuk dinilai. Penolakan tidak masuk penyebut ini. |
| Tingkat hallucination | Jawaban yang memuat setidaknya satu klaim tidak didukung ÷ semua jawaban yang diberikan (bukan penolakan). Keputusan unavailable membuat angka ini null, bukan nol. |
Rumus retrieval ada di src/aceh_rag/eval/evaluation.py:238-269; agregasi jawaban/penolakan ada di src/aceh_rag/eval/golden_seed.py:2004-2086,6173-6205; interpolasi latensi ada di src/aceh_rag/eval/report_breakdowns.py:75-82. Definisi faithfulness dan penanganan fail-closed ada di src/aceh_rag/eval/faithfulness.py:101-140,209-367 dan eval/README.md#metrics.
Rincian 29 kasus yang tidak benar
Dari 29 kasus yang bukan salah satu dari 71 outcome benar, 24 berstatus belum pasti menurut judge, 4 salah dengan tegas, dan 1 partial. Tidak ada kasus salah tegas yang mempublikasikan angka salah: keempat kegagalan tegas itu penolakan coverage_incomplete pada pertanyaan yang seharusnya dijawab, dan tidak satu pun punya sitasi. Dari 24 kasus belum pasti, 20 seharusnya dijawab dan empat seharusnya ditolak; keempat penolakan itu bergantung pada keputusan penolakan yang jatuh di bawah ambang confidence 0.8. Run tidak mengalami HTTP error, timeout, jawaban yang tidak dapat dinilai, atau jawaban kosong.
Ke-29 kasus yang tidak benar menurut apa yang dipublikasikan jalur jawaban: 12 penolakan (10 coverage_incomplete, 1 over_refusal, dan 1 penyelesaian yang tidak dapat diparse batas keluaran) dan 17 jawaban, 11 di antaranya membawa pemeriksaan judge yang ditandai dan satu dipublikasikan dengan penanda no_claims. Empat belas dari 88 output yang mengharapkan jawaban berupa penolakan; 74 sisanya mempublikasikan jawaban.
Bukti expected-span memperlihatkan bagian retrieval: dari 29 kasus yang tidak benar, 23 memiliki expected source span yang dapat dinilai; 18 span muncul di hasil /search lima teratas dan lima tidak muncul. Enam kasus tidak memiliki span passage yang dapat diterapkan. Secara terpisah, 12 dari 88 output yang mengharapkan jawaban tidak memiliki sitasi. Harness memeriksa source_span_found pada passage hasil pencarian sebelum sintesis; hal ini tidak membuktikan jawaban memakai passage itu (src/aceh_rag/eval/golden_seed.py:1807-1815).
| Contoh | Outcome | Bukti |
|---|---|---|
b2-seed-015 — tenggat pemberitahuan tertulis Qanun 7/2019 | Partial | Jawabannya benar, bersumber pada dua passage bersitasi, dan lulus rubrik, tetapi responsnya tidak mencatat panggilan search_documents, sehingga kontrak rute yang diharapkan gagal. |
b2-de-j25-01 — rentang uqubat pelecehan seksual setelah Qanun 12/2025 | Judge belum pasti | Jalur jawaban menolak dengan coverage_incomplete padahal expected span ada di lima hasil teratas; judge menandai pemeriksaan support. |
b2-bps-003 — angkatan kerja Aceh 2024 | Judge belum pasti | Baris BPS live ditolak sebagai over-refusal; judge menandai kesetaraan angka pada penolakan itu. |
b2-de-r-04 — permohonan informasi yang ditolak PPID Aceh 2023 | Judge belum pasti | Penolakan yang diharapkan; jawabannya menjelaskan bahwa dataset SatuData kosong dan menyitasi tujuh passage, dan keputusan penolakan judge jatuh di bawah ambang confidence. |
b2-seed-030 — permohonan informasi yang diterima sepanjang 2022 | Judge belum pasti | Batas keluaran menolak penyelesaiannya, sehingga kasus jatuh ke penolakan bawaan; judge menandai pemeriksaan angka dan cakupan. |
“Partial” adalah kategori nilai judge yang spesifik, bukan jumlah fakta yang sebagian benar: setelah jawaban yang tidak dapat dinilai dan kasus dengan pemeriksaan tertandai dikecualikan, artinya kasus terjawab lulus rubrik jawaban tetapi gagal pada kebenaran outcome penuh. Penolakan dinilai terhadap outcome yang diharapkan.
Pemeriksaan faithfulness dan hallucination independen
Pemeriksaan mandiri menilai 100 jawaban yang sama.
Pemeriksaan memakai konfigurasi judge yang dibekukan dengan ambang confidence 0.8. Hasilnya mencakup 100 rekaman per jawaban dan sampel tinjauan manusia deterministik berisi 10 klaim; sampel itu belum ditinjau manusia.
| Bukti | Hasil |
|---|---|
| Keputusan klaim faktual | 173 total: 167 didukung, 0 dinilai tidak didukung, 6 unavailable |
| Output yang dijawab / penolakan yang terklasifikasi dengan yakin | 79 / 21 |
| Output jawaban dengan ≥1 klaim faktual dinilai | 79; 71 lulus, 8 unavailable |
| Keputusan penolakan unavailable | 5 |
| Jawaban tanpa passage yang disitasi | 1 |
| Fallback seluruh jawaban | 1 jawaban |
| Tingkat resmi dukungan klaim, lulus jawaban, hallucination | null / null / null |
Angka resmi tetap null karena kebijakan judge yang dibekukan gagal secara tertutup jika satu keputusan klaim atau penolakan saja ditandai atau di bawah ambang confidence 0.8. Tidak ada klaim yang dinilai tidak didukung, tetapi hal itu tidak membuktikan tingkat hallucination 0% selama enam keputusan klaim dan lima keputusan penolakan masih unavailable.
Hasil tambahan pada kasus dengan outcome terselesaikan berikut tidak menggantikan angka resmi yang null:
- Hasil lulus-jawaban pada kasus dengan outcome terselesaikan: 71/92 = 77,17%. Delapan output jawaban dengan keputusan klaim atau penolakan yang unavailable dikecualikan; 92 sisanya terdiri dari 71 jawaban yang lulus penilaian penuh dan 21 output penolakan. Penolakan tidak dihitung sebagai jawaban yang lulus. Ini adalah hasil jawaban pada seluruh outcome, bukan
faithfulness_answer_pass_rateyang didefinisikan.
Lima kasus dengan keputusan penolakan unavailable dan bukti yang tersedia:
| Kasus | Keputusan unavailable dan bukti |
|---|---|
b2-seed-052 — penolakan yang diharapkan, dua passage disitasi | Pemeriksaan mandiri menandai keputusan penolakan unavailable; satu klaimnya didukung dan tidak ada yang dinilai tidak didukung. |
b2-de-sd-03 — jawaban yang diharapkan, dua passage disitasi | Pemeriksaan mandiri menandai keputusan penolakan unavailable; dari dua klaimnya satu didukung dan satu unavailable, dan tidak ada yang dinilai tidak didukung. |
b2-de-r-04 — penolakan yang diharapkan, tujuh passage disitasi | Pemeriksaan mandiri menandai keputusan penolakan unavailable; satu klaimnya didukung dan tidak ada yang dinilai tidak didukung. |
b2-de-r-05 — penolakan yang diharapkan, empat passage disitasi | Pemeriksaan mandiri menandai keputusan penolakan unavailable; ketiga klaimnya didukung dan tidak ada yang dinilai tidak didukung. |
b2-pg-jail-id-002 — penolakan yang diharapkan, tanpa passage disitasi | Pemeriksaan mandiri menandai keputusan penolakan dan satu-satunya keputusan klaim unavailable; tidak ada klaim yang dinilai tidak didukung. |
Untuk kasus-kasus ini, pemeriksaan yang ditandai atau confidence di bawah 0.8 menjadikan putusan unavailable. Pemeriksaan mandiri mencatat flag dan jumlah unavailable, tetapi tidak mencatat confidence penolakan yang persis atau apakah pemeriksaan ditandai versus di bawah ambang; rincian itu tidak dapat dipulihkan. Karena itu, kasus-kasus ini dikecualikan dari rasio 92 outcome, bukan diam-diam dianggap lulus. Laporan utama melabeli tingkat jawaban benar 72% sebagai lulus faithfulness, tetapi itu bukan hasil faithfulness independen. Tingkat kasus draft yang diblokir 2/100 adalah diagnostik pemblokiran, bukan tingkat hallucination.
Pembentukan set dan batasan
Set evaluasi 100 pertanyaan dipilih manual dari bank label 632 baris. Set ini berisi 100 pertanyaan kanonis berbahasa Indonesia: JDIH 48, PPID 42, Policy Guard 6, BPS 3, dan OpenData 1. Ada 96 kasus statis dan empat kasus live. Pemilihannya mengutamakan pertanyaan yang kurang kompleks dibandingkan evaluasi penuh, hanya mencakup pertanyaan satu putaran, dan tidak memiliki pertanyaan bahasa Inggris. Set ini bukan held-out dan bukan golden set dari klien. Lihat eval/README.md untuk caveat pemilihan.
Dari 100 baris, 84 menyebut dokumen sumber yang diharapkan (26 dokumen berbeda); 81 memiliki expected source span (80 cocok teks persis dan satu cocok melalui pencocokan reflow harness). Tiga baris spreadsheet memakai gold_cells tetapi tidak memiliki span untuk penilaian passage; baris itu dikecualikan dari penilaian span passage, sedangkan recall dokumen tetap berlaku. Enam belas baris tidak menyebut dokumen sumber: tujuh penolakan yang diharapkan, enam kasus Policy Guard, dan tiga kasus live BPS. Harness tidak memiliki jalur penilaian pointer sel spreadsheet (eval/README.md#easy-baseline).
Label evaluasi masih draf sampai ditinjau manusia; set yang dipilih manual dapat melebihkan kinerja. Bahkan nol kegagalan pada 100 kasus representatif independen hanya membatasi tingkat kegagalan sekitar 3% pada confidence 95% (rule of three); kira-kira 30.000 kasus tanpa kegagalan diperlukan untuk membatasi tingkatnya dekat 0,01%. Run ini memiliki kegagalan dan kasus yang tidak pasti menurut judge. Target UAT 99,99% atau lebih tidak dibuktikan oleh evaluasi ini. Opsi pengganti untuk disepakati dengan klien: set tetap yang ditinjau manusia, ukuran sampel dan interval confidence yang ditetapkan, target seperti faithfulness ≥95%, dan nol klaim tidak didukung yang dipublikasikan. Usulan ini belum disepakati.
Yang tidak diukur: bahasa Inggris; memori percakapan multi-turn; jumlah struktur, pasangan amendemen, dan pertanyaan hukum multi-hop; cakupan kabupaten yang luas (hanya ada satu probe OpenData kabupaten); mutu OCR; perilaku upload, login, konkurensi, serta membuka tautan sitasi. Sumber live dapat berubah. Empat kasus live bukan pengujian retrieval statis.
Laporan index evaluasi tidak memverifikasi listing dokumen live atau checksum. Sampel 100 kasus tidak menemukan dokumen yang tidak dideklarasikan, tetapi itu bukan bukti bahwa index hanya berisi seed corpus.
Perbandingan dengan run sebelumnya
Run atas set ini
| Tanggal (UTC) | Run id | Build yang diuji | Lingkungan | Mode | Recall@5 | MRR@5 | nDCG@5 | Jawaban benar | Kehadiran sitasi | Lulus penolakan | Lulus rute |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-15 10:52 | golden-seed-easy-20261015-105206-652591 | 99836b20 | API evaluasi box | search only | 89,29% | 0,8750 | 0,8797 | — | — | — | — |
| 2026-10-15 14:28 | golden-seed-easy-20261015-142858-143088 | 99836b20 | API evaluasi box | dinilai · bar 0.80 | 89,29% | 0,8750 | 0,8797 | 34,00% | 46,59% | 83,33% | 100,00% |
| ↳ run yang sama, dinilai ulang 17 Okt 2026 | golden-seed-easy-20261015-142858-143088 | 99836b20 | API evaluasi box | dinilai · figures_only_true | 89,29% | 0,8750 | 0,8797 | 47,00% | 46,59% | 83,33% | 100,00% |
| 2026-10-16 01:10 | golden-seed-easy-20261016-011013-713214 | 99836b20 | API evaluasi box | search only | 89,29% | 0,8750 | 0,8797 | — | — | — | — |
| 2026-10-16 02:19 | golden-seed-easy-20261016-021907-168083 | 0475efa8 (head PR #927) | API evaluasi box | search only | 89,29% | 0,8750 | 0,8797 | — | — | — | — |
| 2026-10-16 10:01 | golden-seed-format-fix-20261016-100126 | abb7cc7d (head PR #934) | lab privat | dinilai · bar 0.80 | 89,29% | 0,8750 | 0,8797 | 52,00% | 92,05% | 50,00% | 66,67% |
| ↳ run yang sama, dinilai ulang 17 Okt 2026 | golden-seed-format-fix-20261016-100126 | abb7cc7d (head PR #934) | lab privat | dinilai · figures_only_true | 89,29% | 0,8750 | 0,8797 | 69,00% | 92,05% | 50,00% | 66,67% |
| 2026-10-17 01:33 | golden-seed-easy-20261017-013316-184015 | a79a7355 | API evaluasi box | dinilai · bar 0.80 | 89,29% | 0,8750 | 0,8797 | 55,00% | 85,23% | 75,00% | 100,00% |
| ↳ run yang sama, dinilai ulang 17 Okt 2026 | golden-seed-easy-20261017-013316-184015 | a79a7355 | API evaluasi box | dinilai · figures_only_true | 89,29% | 0,8750 | 0,8797 | 71,00% | 85,23% | 75,00% | 100,00% |
| 2026-10-17 17:29 | golden-seed-easy-20261017-172913-170652 | e8a34442 (setelah #952) | API evaluasi box | dinilai · figures_only_true | 89,29% | 0,8750 | 0,8797 | 72,00% | 86,36% | 66,67% | 66,67% |
Baris bertanda ↳ adalah run di atasnya, dinilai dengan aturan yang berlaku sejak 17 Oktober 2026 alih-alih ambang confidence 0.80; run, jawaban, retrieval, dan keputusan judge-nya identik pada keduanya. Baris hasil penilaian ulang 15 Oktober dan lab privat 16 Oktober berasal dari rekaman tersimpan yang tidak dikomit ke repositori ini. Rekaman 17 Oktober dikomit; perintah penilaian ulangnya ada di eval/golden-seed/easy-runs/README.md. Baris terakhir adalah run yang dipublikasikan, dinilai langsung atas build yang membawa aturan ini.
Retrieval datar di semua run: recall@5 89,29%, MRR@5 0,875, dan nDCG@5 0,8797 pada 84 kasus retrieval yang sama, termasuk dua run yang membawa perubahan retrieval sebelumnya (PR #927) dan run 18 Oktober yang menyusulnya. Yang bergerak adalah lapisan jawaban: dengan figures_only_true, jawaban benar naik dari 47% (15 Oktober) menjadi 71% (17 Oktober versi terpublikasi) lalu 72% (18 Oktober), yaitu +25,00 pp dibanding baseline 15 Oktober dan +1,00 pp dibanding run terakhir sebelumnya. Dengan bar 0.80 perbandingan baseline ke 17 Oktober yang sama adalah 34% ke 55%. Yang bergerak ke arah sebaliknya adalah lulus penolakan (83,33% → 75,00% → 66,67%) dan lulus rute (100% → 100% → 66,67%); keduanya dibahas di Rincian 29 kasus yang tidak benar dan Yang membatasi komparabilitas.
Perubahan lintas run yang dibandingkan di sini
Run 18 Oktober dinilai atas e8a34442 (stempel UTC-nya 20261017-172913; run dimulai 17 Oktober 17:29 UTC dan berakhir 17 Oktober 18:03 UTC, yang berarti 18 Oktober dalam MYT, kalender yang dipakai tanggal laporan ini); run 17 Oktober muncul dua kali — saat dinilai dengan bar 0.80 dan saat dipublikasikan ulang dengan figures_only_true — karena perubahan aturan, bukan build, yang menggerakkan angka jawabannya. Run 16 Oktober (arm fixed100, di lab privat atas head cabang PR #934) dan tiga run search-only tetap ada di daftar run demi kesinambungan tetapi bukan kolom di sini: run 16 Oktober tidak setara, dan run search-only tidak mengukur jawaban.
Kolom baseline 15 Oktober, 17 Oktober terpublikasi, dan 18 Oktober memakai figures_only_true. Kolom “17 Okt #939 saat dinilai” mempertahankan ambang confidence 0.80 sebelumnya. Dengan ambang sebelumnya itu, baseline 15 Oktober bernilai 34,00% / 34,00% / 34,00% / 27,27% untuk lulus rubrik jawaban, jawaban benar, lulus outcome, dan kebenaran sitasi. Baris lain tidak berubah oleh aturan ini. Kedua kolom #939 adalah run yang sama; keduanya hanya berbeda pada empat baris lapisan jawaban itu.
| Metrik | Baseline 15 Okt | 17 Okt #939 saat dinilai | 17 Okt #939 terpublikasi | Ulangan 18 Okt | Perubahan vs 15 Okt | Perubahan vs 17 Okt terpublikasi |
|---|---|---|---|---|---|---|
| Recall@5 | 89,29% | 89,29% | 89,29% | 89,29% | +0,00 pp | +0,00 pp |
| MRR@5 | 0,8750 | 0,8750 | 0,8750 | 0,8750 | +0,00 | +0,00 |
| nDCG@5 | 0,8797 | 0,8797 | 0,8797 | 0,8797 | +0,00 | +0,00 |
| Lulus rubrik jawaban | 47,00% | 55,00% | 71,00% | 72,00% | +25,00 pp | +1,00 pp |
| Jawaban benar | 47,00% | 55,00% | 71,00% | 72,00% | +25,00 pp | +1,00 pp |
| Lulus outcome | 47,00% | 55,00% | 71,00% | 71,00% | +24,00 pp | +0,00 pp |
| Kehadiran sitasi | 46,59% | 85,23% | 85,23% | 86,36% | +39,77 pp | +1,14 pp |
| Kebenaran sitasi | 42,05% | 52,27% | 70,45% | 72,73% | +30,68 pp | +2,27 pp |
| Lulus penolakan | 83,33% | 75,00% | 75,00% | 66,67% | -16,67 pp | -8,33 pp |
| Lulus rute | 100% | 100% | 100% | 66,67% | -33,33 pp | -33,33 pp |
| Answer-bearing recall@5 | 89,66% | 93,10% | 93,10% | 94,83% | +5,17 pp | +1,72 pp |
| Distractor avoidance | 70,00% | 70,00% | 70,00% | 70,00% | +0,00 pp | +0,00 pp |
| Latensi total p50 | 13,98 dtk | 12,76 dtk | 12,76 dtk | 13,66 dtk | -0,32 dtk | +0,90 dtk |
| Latensi total p95 | 60,78 dtk | 49,64 dtk | 49,64 dtk | 61,56 dtk | +0,78 dtk | +11,92 dtk |
| Latensi total p99 | 79,57 dtk | 54,10 dtk | 54,10 dtk | 74,37 dtk | -5,20 dtk | +20,28 dtk |
| Latensi pencarian p50 | 0,405 dtk | 0,405 dtk | 0,405 dtk | 0,377 dtk | -0,028 dtk | -0,028 dtk |
| Latensi pencarian p95 | 0,620 dtk | 0,639 dtk | 0,639 dtk | 0,589 dtk | -0,032 dtk | -0,050 dtk |
| Latensi pencarian p99 | 0,804 dtk | 0,704 dtk | 0,704 dtk | 0,721 dtk | -0,083 dtk | +0,017 dtk |
| Keputusan klaim faktual | 95 | 149 | 149 | 173 | +78 | +24 |
| Klaim didukung | 93 | 143 | 143 | 167 | +74 | +24 |
| Klaim dinilai tidak didukung | 0 | 0 | 0 | 0 | +0 | +0 |
| Klaim unavailable | 2 | 6 | 6 | 6 | +4 | +0 |
| Output dijawab / penolakan | 43 / 57 | 78 / 22 | 78 / 22 | 79 / 21 | — | — |
| Jawaban lulus faithfulness | 41 | 70 | 70 | 71 | +30 | +1 |
| Keputusan penolakan unavailable | 2 | 3 | 3 | 5 | +3 | +2 |
| Tingkat resmi dukungan klaim / lulus jawaban / hallucination | null | null | null | null | — | — |
Pertanyaan yang berbalik hasil
Kedua sisi perbandingan ini dinilai dengan figures_only_true, dibaca dari dua rekaman run yang dikomit. Daftarnya berasal dari outcome_pass per kasus di kedua sisi: scripts/compare_golden_seed.py menolak pasangan ini karena mensyaratkan konfigurasi judge beku yang identik, sedangkan hash adapter mencakup sumber adapter yang kini memuat aturan yang ditambahkan build ini (lihat Yang membatasi komparabilitas).
Dibanding run 17 Oktober versi terpublikasi: 10 gagal → lulus dan 10 lulus → gagal. Lulus outcome tidak berubah di 71/100; pergerakannya saling meniadakan, jadi run ini bukan perbaikan atas run terakhir sebelumnya pada metrik itu dan keunggulan jawaban benarnya hanya satu kasus.
Gagal → lulus (10): b2-bps-002, b2-de-r-01, b2-de-sd-02, b2-de-wn-03, b2-jdih-mh-0005, b2-ppid-019, b2-seed-004, b2-seed-018, b2-seed-037, b2-sheet-C-1921-sum. Empat di antaranya jawaban yang dipublikasikan dan pemeriksaan judge yang ditandai kini hilang (b2-jdih-mh-0005, b2-seed-004, b2-seed-037, b2-sheet-C-1921-sum), satu adalah penolakan yang diharapkan dan keputusan penolakannya pulih (b2-de-r-01), dua dahulu fallback unresolved_citation yang kini mempublikasikan jawaban bersitasi (b2-de-sd-02, b2-de-wn-03), dua dahulu penolakan coverage_incomplete yang kini menjawab (b2-ppid-019, b2-seed-018), dan satu adalah b2-bps-002 live, yang kini dijawab tool BPS alih-alih ditolak berlebihan.
Lulus → gagal (10):
| Pertanyaan | 17 Okt | 18 Okt | Penyebab utama |
|---|---|---|---|
b2-de-j25-01 | Lulus | Gagal | Kini menolak dengan coverage_incomplete padahal sebelumnya menjawab; judge juga menandai pemeriksaan support. |
b2-de-q7-03 | Lulus | Gagal | Kelas yang sama: penolakan coverage_incomplete, dengan tanda angka dan support. |
b2-de-rd-02 | Lulus | Gagal | Kelas yang sama: penolakan coverage_incomplete, tanpa tanda judge. |
b2-new-nonmuslim | Lulus | Gagal | Kelas yang sama: penolakan coverage_incomplete, tanpa tanda judge. |
b2-seed-043 | Lulus | Gagal | Kelas yang sama: penolakan coverage_incomplete, tanpa tanda judge. |
b2-seed-048 | Lulus | Gagal | Kelas yang sama: penolakan coverage_incomplete, dengan tanda angka. |
b2-de-r-04 | Lulus | Gagal | Penolakan yang diharapkan; jawabannya kini menjelaskan bahwa dataset SatuData kosong dan menyitasi tujuh passage, dan keputusan penolakan judge jatuh di bawah ambang 0.8 sehingga gagal secara tertutup. |
b2-de-r-05 | Lulus | Gagal | Penolakan yang diharapkan; jawabannya ditulis ulang dan keputusan penolakan judge jatuh di bawah ambang. |
b2-de-bm21-01 | Lulus | Gagal | Jawabannya ditulis ulang lebih panjang dan kini membawa enam sitasi; judge menandai pemeriksaan angka dan support, sehingga verdictnya ditahan. |
b2-seed-015 | Lulus | Gagal | Jawabannya masih benar dan bersitasi, tetapi responsnya tidak mencatat panggilan search_documents, sehingga kontrak rute yang diharapkan gagal. Direproduksi atas permintaan: agen menjawab pertanyaan ini dalam satu panggilan tanpa bagian tool, sementara b2-seed-001 dan b2-seed-037 tetap membuka dengan search_documents. |
Dibanding baseline 15 Oktober: 32 gagal → lulus dan 8 lulus → gagal. Dua puluh tujuh penambahan adalah kelas format fallback: batas keluaran menolak penyelesaian pada baseline, sehingga kasus jatuh ke penolakan bawaan dan sekarang mempublikasikan jawaban bersitasi. Dua puluh satu dari dua puluh tujuh itu juga membawa pemeriksaan judge yang ditandai pada baseline (b2-de-bm18-04, b2-de-bm21-03, b2-de-hm-04, b2-de-j14-02, b2-de-q7-01, b2-de-q7-02, b2-de-rd-01, b2-de-sk-01, b2-de-wn-04, b2-jdih-a1-ret-0048, b2-jdih-mh-0005, b2-seed-007, b2-seed-025, b2-seed-037, b2-seed-040, b2-seed-041, b2-seed-044, b2-seed-045, b2-seed-047, b2-seed-085, b2-seed-086); enam sisanya tidak (b2-de-lr-01, b2-de-ls-01, b2-de-rl-01, b2-de-sb-01, b2-de-sd-02, b2-seed-018). Lima penambahan sisanya adalah dua jawaban yang dipublikasikan dan satu-satunya tanda pemeriksaannya kini hilang (b2-seed-004, b2-sheet-C-1921-sum), satu over_refusal yang kini menjawab (b2-bps-002), satu fallback unresolved_citation yang kini mempublikasikan jawaban bersitasi (b2-de-wn-03), dan satu penolakan coverage_incomplete yang kini menjawab (b2-seed-011).
Lulus → gagal dibanding baseline (8): b2-de-j25-01, b2-de-q7-03, dan b2-new-nonmuslim adalah tiga kerugian coverage_incomplete (ketiganya menjawab pada baseline); b2-de-r-04 dan b2-seed-052, keduanya penolakan yang diharapkan, kini gagal pada keputusan penolakan di bawah ambang confidence padahal baseline menolak penyelesaiannya langsung; b2-seed-015 adalah kegagalan rute; b2-de-pg-01 kini membawa tanda angka berdampingan dengan tanda support, sedangkan aturan hanya menghapus tanda angka tunggal; dan b2-seed-030 adalah penyelesaian yang tetap ditolak batas keluaran, kini dengan tanda angka dan cakupan. b2-de-r-05, b2-de-rd-02, b2-seed-043, dan b2-seed-048 juga gagal di sini tetapi sudah gagal pada baseline, jadi bukan kasus berbalik terhadap baseline.
Kedua himpunan berbalik ini berbentuk sama: lapisan jawaban bergerak ke dua arah di sekitar penolakan coverage_incomplete dan tanda pemeriksaan judge, tanpa mekanisme dominan tunggal pada rentang build ini. Satu pergerakan yang terlacak ke perubahan bernama adalah b2-seed-015: #952 menulis ulang deskripsi search_documents agar meminta kueri pendek dan terfokus alih-alih satu konjungsi panjang, dan pada pertanyaan ini agen kini menjawab dalam satu panggilan tanpa mencari sama sekali.
Yang membatasi komparabilitas
- Noise floor judge. Menilai ulang dua kali jawaban identik dari satu run dengan judge dan temperatur 0 yang sama membalik keputusan 6 dari 94 kasus (diukur 2026-08-13). Satu run tidak dapat menyelesaikan selisih beberapa kasus, jadi daftar berbalik di atas bersifat arah, bukan pasti.
- Konfigurasi judge beku kedua rekaman berbeda pada satu kolom, dan itu memang disengaja. Model judge (
jev-1.13.0), pertanyaannya, equivalences, rubrik,mapping_version, ambang confidence,noul_yes_threshold, dan kebijakan context-nya identik antara run 17 dan 18 Oktober.adapter_sha256berbeda: hash itu mencakup sumber adapter, dan sumber adapter build ini memuatjudge_flags()— perubahan aturannya sendiri.scripts/compare_golden_seed.pymensyaratkan kesamaan rekaman penuh sehingga menolak pasangan ini; daftar berbalik di atas dibaca dari verdict per kasus kedua rekaman. Metrik lain di tabel adalah perbandingan dua rekaman secara langsung. - Aturan penilaian berubah pada 17 Oktober 2026, dan perubahan itu memindahkan verdict tanpa mengubah sistem. Skor dengan aturan saat ini memakai
figures_only_true; angka bar 0.80 sebelumnya tetap ditampilkan berdampingan di tabel perubahan. Membandingkan angka sebelum tanggal itu dengan angka sesudahnya berarti membandingkan dua penilai, bukan dua build. Run yang dinilai ulang tidak dinilai ulang oleh judge, sehingga keputusan judge — dan karena itu noise floor di atas — identik di kedua sisi. - #952 mengubah kontrak tool pencarian, dan perutean agen mengikutinya. Perubahan itu menulis ulang deskripsi
search_documentsagar meminta kueri pendek dan terfokus.b2-seed-015memperlihatkan efeknya: pertanyaan yang dijawab dengan benar dan bersitasi, tetapi tanpa panggilansearch_documentsyang tercatat, sehingga kontrak rute yang diharapkan gagal. Satu kasus, tetapi metrik rute hanya selebar 3 kasus, jadi angka rute yang dipublikasikan bergeser dari 100% ke 66,67%. - Pemeriksaan rute membaca rekaman provenance, bukan jawabannya. Jawaban
b2-seed-015benar dan bersitasi; pemeriksaannya gagal karenatool_call_auditpada respons (hanya panggilan pencarian) kosong dan rencananya tidak menyebut tool apa pun. Pembaca sebaiknya memperlakukan lulus rute pada run ini sebagai angka kelengkapan jejak, bukan angka mutu jawaban. - Aturan ini belum terbukti pada angka salah yang yakin. Buktinya adalah sampel yang jawaban salahnya terdiri dari 57 penolakan salah dan 3 pernyataan salah yang tegas, jadi "nol jawaban salah yang lulus" tidak menjelaskan apa pun tentang angka salah yang lancar dan disetujui pemeriksaan figures. Lihat Aturan penilaian.
- Run 16 Oktober bukan pembanding setara. Run itu berjalan di lab privat (arm
fixed100, API di127.0.0.1:18510) atas head cabang PR #934, bukan pada API evaluasi box dan bukan pada commit yang sudah digabung. Angka lulus penolakan dan lulus rute-nya adalah perilaku lab; jalur kode yang digabung berbeda. - Tiga run search-only tidak mengubah retrieval dan memakai penyebut retrieval yang sama dengan run dinilai, jadi ketiganya bukti stabilitas, bukan mutu.
- Baris live dapat bergeser. Tiga baris BPS dan satu baris OpenData membaca portal live; lingkungan evaluasi mendapat token MCP BPS pada 16 Oktober, yang tidak dimiliki baseline 15 Oktober. Karena itu baris BPS paling tidak setara di set ini.
- Keyakinan context window runner bersifat inert tetapi tercatat. Semua run di sini, termasuk run ini, berjalan dengan default harness 4.096 token sementara API melayani 32.768; nilai API itulah yang menilai jawaban.
Konteks yang tidak setara
| Bukti | Tanggal dan ukuran | Hasil yang dilaporkan | Dapat dibandingkan langsung? |
|---|---|---|---|
| Bank label lengkap | 632 baris; tidak ada run judge untuk 632 kasus | Bank adalah inventaris label, bukan hasil. Evaluasi sementara sebelumnya pada 11 Okt mencakup 121 kasus: lulus rubrik 45,45%, kehadiran sitasi 80%, recall@5 70,8%, lulus penolakan 83,3%; 55 lulus, 62 belum pasti, 4 kegagalan nyata. | Tidak. Subset, tanggal, konfigurasi, dan kondisi judge berbeda; ini bukan skor seluruh bank. |
| Sheet Studio klien | 14 Okt 2026; 20 pertanyaan dengan label manual campuran | 10 “Right/RIGHT”, 3 “partly Right/Partly Right”, 1 “Wrong”, dan 6 “source right, response failed” atau timeout. Durasi hanya dicatat pada tiga baris (55/90/90 dtk). | Tidak. Pertanyaan, cakupan, dan label manual berbeda; sheet ini bukan evaluasi dengan judge atas set 100 pertanyaan ini. |
Angka pembanding berasal dari baseline evaluasi 11 Okt dan sheet klien 14 Okt. Angka tersebut adalah konteks, bukan garis tren.
Konteks evaluasi dan biaya
Evaluasi menggunakan data seed publik, bukan jawaban produksi. Lingkungan runner menyebut qwen3.8-27b dengan context 4.096 token — default runner sendiri, inert melalui HTTP — sedangkan API melaporkan qwen3.8-27b yang melayani 32.768 token. Model penjawab adalah laporan API sendiri, sehingga skor tetap sementara.
Biaya pasti tidak tersedia karena pemakaian token input tidak disimpan. Dengan penghitungan permintaan yang sama seperti baseline — satu panggilan per kasus untuk rubrik jawaban/penolakan, 87 untuk answer-bearing recall, dan satu panggilan per kasus ditambah satu per output yang dijawab pada masing-masing dari dua pemeriksaan faithfulness — ulangan ini mengirim sekitar 545 permintaan judge (100 + 87 + 179 + 179). Dengan retry dinonaktifkan dan batas konservatif 65.536 token input per permintaan, paparan maksimum pada harga input publik $0.042/M adalah 545 × 65,536 × $0.042 / 1,000,000 = $1.50. Ini batas atas, bukan tagihan; nilainya tetap di bawah cap $2. Sumber harga: harga model TypeSafe.
File sumber
- Rekaman run:
eval/golden-seed/easy-runs/golden-seed-easy-20261017-172913-170652-easy.json, beserta-faithfulness.jsondan-judge-config.json; rekaman run sebelumnya ada di sebelahnya. - Tabel per pertanyaan, kedua bahasa:
scripts/generate_docs_evaluation_table.py, dengan perintah penilaian ulang dieval/golden-seed/easy-runs/README.md. - Aturan penilaian:
judge_flags()disrc/aceh_rag/eval/jev_judge.py; penilaian ulang offline:scripts/rescore_golden_seed.py --from-stored-checks. - Kalibrasi judge yang mendasari aturan (200 case-run pada dua run dinilai, dengan label manual dan replay per aturan): laporan kalibrasi judge pada bukti tugas 17 Oktober,
data/aceh-judge-calibration/report.md. - Seleksi set, jumlah baris, dan caveat:
eval/README.md#easy-baseline. - Definisi metrik dan aturan null saat unavailable:
eval/README.md#metrics. - Rumus retrieval:
src/aceh_rag/eval/evaluation.py:238-269. - Penilaian jawaban dan penolakan:
src/aceh_rag/eval/golden_seed.py:2004-2086,6173-6205. - Pencocokan expected span:
src/aceh_rag/eval/golden_seed.py:1807-1815. - Kategori nilai “partial”, “wrong”, dan “unavailable”:
src/aceh_rag/eval/eval_verdicts.py:8-36. - Rumus faithfulness dan penanganan fail-closed:
src/aceh_rag/eval/faithfulness.py:101-140,209-367. - Interpolasi persentil latensi:
src/aceh_rag/eval/report_breakdowns.py:75-82.