Tugas P-10: RAG Part 1 (Lab 1-3)

This commit is contained in:
2026-11-02 15:32:35 +07:00
commit 3872cf11a3
19 changed files with 830 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
"""Lab 2 - Jalankan 7 pertanyaan sekaligus (5 biasa + 2 parafrase) dan simpan hasilnya.
Pakai: python lab2_tanya.py (koleksi pedoman_1000)
python lab2_tanya.py 500 (koleksi pedoman_500)
Hasil: hasil_lab2.txt. Isi sendiri baris 'Relevan?' setelah membaca chunk teratas.
"""
import sys
from umum import ambil_embedding, buka_klien, ambil_koleksi, nama_koleksi
PERTANYAAN = [
("biasa", "Apa syarat untuk dapat mengambil skripsi?"),
("biasa", "Berapa lama peminjaman perangkat keras laboratorium?"),
("biasa", "Berapa persen kehadiran minimal agar boleh ikut ujian akhir?"),
("biasa", "Apa format huruf dan spasi penulisan skripsi?"),
("biasa", "Bagaimana prosedur ujian susulan?"),
("parafrase", "Bolehkah saya berhenti kuliah sementara waktu?"),
("parafrase", "Bagaimana kalau saya dapat surel penipuan yang meminta password?"),
]
ukuran = int(sys.argv[1]) if len(sys.argv) > 1 else 1000
koleksi = ambil_koleksi(buka_klien(), nama_koleksi(ukuran), ambil_embedding())
baris = [f"Koleksi: {koleksi.name} ({koleksi.count()} chunk)\n"]
for jenis, q in PERTANYAAN:
baris.append(f"[{jenis}] {q}")
hasil = koleksi.query(query_texts=[q], n_results=3)
for r, (doc, meta, jarak) in enumerate(zip(hasil["documents"][0], hasil["metadatas"][0], hasil["distances"][0]), 1):
baris.append(f" #{r} {meta['sumber']} hal {meta['halaman']} chunk {meta['chunk']} jarak={jarak:.3f}")
baris.append(f" {doc[:250]} ...")
baris.append(" Relevan? (isi: ya/tidak, chunk teratas): ____\n")
teks = "\n".join(baris)
print(teks)
open("hasil_lab2.txt", "w", encoding="utf-8").write(teks)
print("Disimpan ke hasil_lab2.txt")