Files
Rag_Kecerdasan_Buatan/README.md
T
2026-11-02 10:51:23 +07:00

7.8 KiB
Raw Blame History

Penjelasan Output Praktikum RAG (Lab 1 – Lab 3)

Dokumen ini menjelaskan hasil eksekusi lab1_chunking.py, lab2_indeks_cari.py, dan lab3_hit_at_k.py. Alurnya berurutan: memotong dokumen (Lab 1) → membangun indeks dan mencari (Lab 2) → mengukur kualitas pencarian (Lab 3).


Lab 1 – Eksperimen Chunking

Tujuan

Memahami bagaimana dokumen PDF dipotong menjadi potongan kecil (chunk), dan bagaimana ukuran chunk serta overlap memengaruhi jumlah dan isi chunk.

Langkah 1 – Membaca 500 karakter pertama

Output menampilkan awal teks pengantar_rag.pdf (judul "Pengantar Retrieval-Augmented Generation (RAG)" dan definisi RAG). Baris ringkasan kualitas teks:

{'File': 'pengantar_rag.pdf', 'Total karakter': 4061,
 'Karakter rusak (U+FFFD)': 0, 'Persentase huruf': '83%'}
Metrik Nilai Arti
Total karakter 4061 Panjang seluruh teks hasil ekstraksi PDF
Karakter rusak (U+FFFD) 0 Tidak ada karakter korup, jadi ekstraksi PDF berhasil bersih
Persentase huruf 83% Sebagian besar isi adalah huruf; sisanya spasi, angka, tanda baca. Ini wajar untuk teks normal

Kesimpulan: PDF dapat dibaca dengan baik sehingga aman dipakai sebagai bahan chunking.

Langkah 2 – Jumlah chunk untuk setiap kombinasi ukuran dan overlap

Ukuran Overlap 10% Overlap 15% Overlap 20%
500 9 chunk 10 chunk 10 chunk
1000 5 chunk 5 chunk 5 chunk
1500 3 chunk 4 chunk 4 chunk

Pola yang terlihat:

  1. Ukuran chunk makin besar → jumlah chunk makin sedikit. Pada ukuran 500 ada 9–10 chunk, pada 1500 hanya 3–4 chunk.
  2. Overlap makin besar → jumlah chunk cenderung naik atau tetap. Overlap membuat jarak geser antar chunk lebih pendek sehingga dibutuhkan lebih banyak chunk untuk menutup teks yang sama. Pada ukuran 1000 jumlahnya tetap 5 karena teks hanya 4061 karakter, jadi perubahan overlap kecil belum menambah chunk.
  3. Ukuran chunk lebih berpengaruh daripada overlap terhadap jumlah chunk.

Langkah 3 – Memeriksa 3 chunk acak (ukuran 500)

Untuk tiap chunk ditampilkan penanda seperti:

chunk #1 [0:500] awal_tengah=False akhir_tengah=True potong_tabel=False
Penanda Arti
[0:500] Chunk mengambil karakter ke-0 sampai ke-500 dari teks
awal_tengah True jika chunk dimulai di tengah kata/kalimat
akhir_tengah True jika chunk berakhir di tengah kata/kalimat
potong_tabel True jika chunk memotong tabel

Pada chunk #1, akhir_tengah=True terlihat dari teks yang berhenti di "...memungkinkan j" (kata terpotong). Ini menunjukkan kelemahan chunking berbasis jumlah karakter: batas chunk tidak mempedulikan batas kata atau kalimat, sehingga makna bisa terpotong. Overlap berguna untuk mengurangi dampak ini karena potongan yang terpotong muncul lagi di awal chunk berikutnya.


Lab 2 – Membangun Indeks dan Mencari

Tujuan

Membangun indeks dari seluruh dokumen, lalu menguji apakah pertanyaan menemukan chunk yang benar.

Langkah 1 – Membangun indeks

etika_keamanan_ai.pdf: 4 chunk
machine_learning_dasar.pdf: 4 chunk
pengantar_rag.pdf: 5 chunk
Total 13 chunk | ukuran=1000 overlap=15% | backend=lsa
  • Ada 3 dokumen, total 13 chunk, dengan konfigurasi ukuran 1000, overlap 15%.
  • backend=lsa berarti pencarian memakai LSA (Latent Semantic Analysis), yaitu representasi vektor berbasis statistik kata. Ini bukan model embedding neural seperti MiniLM.

Langkah 2 – 5 pertanyaan uji

Setiap pertanyaan menampilkan 3 hasil teratas dengan format skor, dokumen#nomor_chunk, dan relevan.

  • skor adalah kemiripan (cosine similarity) antara pertanyaan dan chunk. Makin dekat ke 1, makin mirip.
  • relevan=True berarti chunk tersebut memuat kata kunci jawaban yang sudah ditentukan.
Pertanyaan Kata kunci Hasil peringkat 1 Penilaian
Siapa yang memperkenalkan RAG dan tahun berapa? Lewis, 2020 pengantar_rag.pdf#0, skor 0.741, relevan Benar. Chunk berisi info Lewis dan 2020
Berapa dimensi embedding yang dihasilkan model MiniLM? 384 pengantar_rag.pdf#1, skor 0.969, relevan Benar dan skornya sangat tinggi
Apa itu overfitting dan apa cirinya? overfitting, data latih machine_learning_dasar.pdf#0, skor 0.939, relevan Benar. Peringkat 2 juga relevan
Undang-undang apa yang mengatur pelindungan data pribadi di Indonesia? 27 Tahun 2022 (terpotong di screenshot) Cek hasilnya di terminal

Hal yang bisa dibaca dari hasil:

  • Jawaban yang benar umumnya berada di peringkat 1 dengan selisih skor yang jelas dari hasil lainnya. Contoh: pertanyaan MiniLM, 0.969 dibanding 0.351.
  • Pada pertanyaan pertama, peringkat 2 (0.736, dokumen etika AI) skornya hampir sama dengan peringkat 1 (0.741) walaupun tidak relevan. Ini tanda LSA kadang bingung pada pertanyaan yang kosakatanya umum.
  • Hasil yang relevan=False di peringkat bawah itu normal. Yang penting jawaban benar ada di posisi atas.

Lab 3 – Mengukur Kualitas dengan Hit@k

Tujuan

Mengukur secara kuantitatif apakah chunk jawaban benar muncul di k hasil teratas, lalu membandingkan dua ukuran chunk.

Definisi

Hit@k = proporsi pertanyaan yang chunk jawabannya muncul dalam k peringkat teratas.

Hit@k = (jumlah pertanyaan yang jawabannya ada di top-k) / (total pertanyaan)

Contoh: Hit@5 = 0.933 berarti 93,3% pertanyaan berhasil. Karena nilainya kelipatan 1/15, kemungkinan ada 15 pertanyaan uji, dan 14 di antaranya berhasil, sedangkan 1 gagal.

Hasil perbandingan

Koleksi Total chunk Hit@1 Hit@3 Hit@5
Ukuran 500, overlap 15% 25 0.933 0.933 0.933
Ukuran 1000, overlap 15% 13 1.0 1.0 1.0

Diagnosis kegagalan (k=5)

ukuran 500, no. 7 (Bagaimana menyatukan ketepatan dan kelengkapan menjadi satu angka?):
chunk jawaban ada tetapi baru muncul di peringkat 18 (> 5)
  • Pertanyaan no. 7 gagal pada ukuran 500. Chunk jawabannya ada di indeks, tetapi berada di peringkat 18, jauh di luar top-5.
  • Pada ukuran 1000, tidak ada pertanyaan yang gagal.
  • Perhatikan bahwa Hit@1, Hit@3, dan Hit@5 pada ukuran 500 sama-sama 0.933. Artinya pertanyaan yang gagal tidak sekadar "hampir masuk", tetapi benar-benar jauh dari top-5. Memperbesar k tidak menolong.

Dugaan penyebab (sesuai kesimpulan program)

  1. Ketidakcocokan kosakata. Pertanyaan memakai istilah berbeda dari dokumen. Contoh: pertanyaan memakai "ketepatan dan kelengkapan", sedangkan dokumen memakai istilah Inggris seperti precision dan recall atau F1. LSA berbasis kata sehingga sulit menjembatani parafrase ini.
  2. Chunk kecil memuat sedikit konteks. Chunk 500 karakter hanya memuat sedikit kata konteks, sehingga skor kemiripannya kalah dari chunk lain yang topiknya lebih umum.

Kesimpulan dan catatan penting

  • Ukuran 1000 karakter lebih baik daripada 500 karakter pada eksperimen ini (Hit@k 1.00 dibanding 0.93).
  • Skor sempurna jangan dianggap bukti sistem sudah sangat baik. Korpusnya hanya 3 dokumen kecil (13–25 chunk) dengan topik yang jelas berbeda, sehingga pencarian relatif mudah. Pada PDF yang lebih besar dan topiknya lebih mirip antar dokumen, Hit@k diperkirakan turun dan perbedaan antar ukuran chunk akan lebih terlihat.
  • Laporan akhir tersimpan ke Lab3_Hit_at_k.pdf.

Ringkasan Keseluruhan

Lab Pertanyaan yang dijawab Temuan utama
Lab 1 Bagaimana ukuran dan overlap memengaruhi chunk? Ukuran besar menghasilkan chunk lebih sedikit. Chunking karakter bisa memotong kata atau kalimat
Lab 2 Apakah pertanyaan menemukan chunk yang tepat? Umumnya ya, jawaban benar di peringkat teratas dengan skor tinggi (backend LSA)
Lab 3 Ukuran chunk mana yang lebih baik? Ukuran 1000 lebih baik (Hit@k = 1.0) daripada 500 (0.933), tetapi korpus kecil sehingga hasil perlu ditafsirkan hati-hati