57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import chromadb
|
|
from chromadb.utils import embedding_functions
|
|
|
|
# Menggunakan model embedding yang sama
|
|
emb = embedding_functions.SentenceTransformerEmbeddingFunction(
|
|
model_name="paraphrase-multilingual-MiniLM-L12-v2"
|
|
)
|
|
|
|
# Membuka database
|
|
client = chromadb.PersistentClient(path="./chroma_db")
|
|
|
|
# Membuka koleksi ukuran 1000
|
|
koleksi = client.get_collection(
|
|
name="pedoman_1000",
|
|
embedding_function=emb
|
|
)
|
|
|
|
# 5 pertanyaan biasa + 2 parafrase
|
|
PERTANYAAN = [
|
|
("Biasa", "Apa yang dimaksud dengan airworthiness?"),
|
|
("Biasa", "Apa kepanjangan dan pengertian MRO?"),
|
|
("Biasa", "Apa perbedaan line maintenance dan base maintenance?"),
|
|
("Biasa", "Apa tujuan utama aircraft maintenance?"),
|
|
("Biasa", "Apa itu Non-Destructive Testing?"),
|
|
|
|
("Parafrase", "Bagaimana mengetahui bahwa sebuah pesawat layak diterbangkan dengan aman?"),
|
|
("Parafrase", "Jenis perawatan rutin apa yang dilakukan ketika pesawat masih beroperasi?")
|
|
]
|
|
|
|
if koleksi.count() == 0:
|
|
print("Database masih kosong.")
|
|
|
|
else:
|
|
for nomor, (jenis, pertanyaan) in enumerate(PERTANYAAN, 1):
|
|
|
|
print("\n" + "=" * 60)
|
|
print(f"Pertanyaan {nomor} ({jenis})")
|
|
print(pertanyaan)
|
|
|
|
hasil = koleksi.query(
|
|
query_texts=[pertanyaan],
|
|
n_results=min(3, koleksi.count())
|
|
)
|
|
|
|
for peringkat, (doc, meta, jarak) in enumerate(
|
|
zip(
|
|
hasil["documents"][0],
|
|
hasil["metadatas"][0],
|
|
hasil["distances"][0]
|
|
),
|
|
start=1
|
|
):
|
|
print(f"\nPeringkat {peringkat}")
|
|
print(f"Sumber: {meta['sumber']}")
|
|
print(f"Chunk: {meta['chunk']}")
|
|
print(f"Jarak: {jarak:.3f}")
|
|
print(doc[:300]) |