Tugas P-10: RAG Part 1 (Lab 1-3)
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user