Files
Daud_Kecerdasan_Buatan/cari.py
T

32 lines
1.2 KiB
Python

"""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)