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
+31
View File
@@ -0,0 +1,31 @@
"""Lab 2 - Cari di indeks.
Pakai:
python cari.py # mode interaktif, koleksi pedoman_800
python cari.py 1000 # pakai koleksi pedoman_1000
python cari.py 800 "Apa syarat cuti akademik?" # satu pertanyaan
Catatan: jarak lebih kecil = lebih mirip.
"""
import sys
from umum import ambil_embedding, buka_klien, ambil_koleksi, nama_koleksi
ukuran = int(sys.argv[1]) if len(sys.argv) > 1 else 800
emb = ambil_embedding()
koleksi = ambil_koleksi(buka_klien(), nama_koleksi(ukuran), emb)
def tampilkan(pertanyaan, k=3):
hasil = koleksi.query(query_texts=[pertanyaan], n_results=k)
print(f"\nPertanyaan: {pertanyaan}")
for doc, meta, jarak in zip(hasil["documents"][0], hasil["metadatas"][0], hasil["distances"][0]):
print(f"[{meta['sumber']} - hal {meta.get('halaman', '?')} - chunk {meta['chunk']}] jarak={jarak:.3f}")
print(" ", doc[:200].replace("\n", " "), "...\n")
if len(sys.argv) > 2:
tampilkan(" ".join(sys.argv[2:]))
else:
print(f"Koleksi {koleksi.name} ({koleksi.count()} chunk). Ketik 'keluar' untuk berhenti.")
while True:
q = input("\nTanya: ").strip()
if q.lower() in {"keluar", "exit", ""}:
break
tampilkan(q)