Team Ai
Apppublic

kelompok-a/knowledge-retrieval-assistant

sourceHugging Faceupdated 10mo agoView on Hugging Face
1likes
App README

Knowledge Retrieval Assistant (TF-IDF Q&A)

Aplikasi ini adalah Knowledge Retrieval Assistant sederhana untuk mendukung Knowledge Management System (KMS). Pengguna bisa upload dokumen pengetahuan (PDF/TXT) lalu mengajukan pertanyaan. Aplikasi akan mencari potongan teks yang paling relevan menggunakan TF-IDF + cosine similarity dan menyimpan riwayat pencarian sebagai Knowledge Log.


✨ Fitur Utama

πŸ” Fitur AI

  • β€”Ekstraksi teks dari PDF (via pdfplumber) atau TXT
  • β€”Preprocessing teks:
  • β€”normalisasi spasi & line break
  • β€”penghapusan header/footer halaman yang berulang
  • β€”pemecahan paragraf dan chunk (dengan overlap)
  • β€”Representasi vektor TF-IDF dengan scikit-learn
  • β€”Pencarian berbasis cosine similarity:
  • β€”pertanyaan user diubah ke vektor
  • β€”sistem mengembalikan top-k potongan teks (chunk) paling relevan
  • β€”menampilkan skor similarity dan nomor halaman

πŸ›οΈ Fitur KMS

Aplikasi ini mengimplementasikan beberapa komponen Knowledge Management:

  1. 1.Knowledge Capture
  • β€”Upload dokumen (PDF/TXT)
  • β€”Ekstraksi dan preprocessing teks:
  • β€”pemisahan per halaman
  • β€”deteksi dan penghapusan header/footer berulang
  • β€”pemecahan paragraf & chunk
  1. 1.Knowledge Storage
  • β€”Menyimpan hasil analisis ke filesystem:
  • β€”index_output/vectorizer.pkl – model TF-IDF
  • β€”index_output/tfidf_matrix.npz – matriks TF-IDF
  • β€”index_output/chunk_meta.json – metadata chunk (teks & nomor halaman)
  • β€”Menyimpan Knowledge Log ke file:
  • β€”knowledge_log.json – riwayat pertanyaan & cuplikan jawaban
  1. 1.Knowledge Retrieval
  • β€”Pencarian pengetahuan berbasis pertanyaan user:
  • β€”mengembalikan chunk teks paling relevan
  • β€”menampilkan nomor halaman terkait
  1. 1.Knowledge Sharing
  • β€”Antarmuka web (Flask atau Gradio) yang:
  • β€”menampilkan ringkasan dokumen (jumlah halaman, paragraf, chunk)
  • β€”menampilkan hasil pencarian untuk pertanyaan pengguna
  • β€”menampilkan Knowledge Log (riwayat pencarian) di UI (mode Gradio)

🧠 Model AI yang Digunakan

Model AI di aplikasi ini adalah kombinasi:

  • β€”TF-IDF (TfidfVectorizer) dari scikit-learn
  • β€”Cosine similarity untuk mengukur kedekatan antara:
  • β€”vektor pertanyaan
  • β€”vektor chunk dokumen

Ini termasuk dalam kategori:

  • β€”Model local dengan scikit-learn, dan
  • β€”Contoh sederhana ML (TF-IDF) seperti yang dipersyaratkan pada deskripsi tugas.

🧩 Tech Stack

  • β€”Bahasa: Python 3.8+
  • β€”NLP / IR:
  • β€”pdfplumber
  • β€”scikit-learn
  • β€”numpy, scipy
  • β€”Sastrawi (opsional, untuk stopword & stemming Bahasa Indonesia)
  • β€”Web Framework:
  • β€”Flask (Mode 1 – klasik)
  • β€”Gradio (Mode 2 – recommended untuk deploy cepat)

πŸ“ Struktur Project

Struktur direktori (kurang lebih):

text
.
β”œβ”€ app.py                # Mode Flask
β”œβ”€ app_gradio.py         # Mode Gradio (disarankan untuk deployment)
β”œβ”€ templates/
β”‚  └─ index.html         # Template Flask
β”œβ”€ index_output/         # Dibuat otomatis (indeks TF-IDF)
β”‚  β”œβ”€ vectorizer.pkl
β”‚  β”œβ”€ tfidf_matrix.npz
β”‚  └─ chunk_meta.json
β”œβ”€ knowledge_log.json    # Dibuat otomatis (Knowledge Log)
β”œβ”€ README.md
└─ requirements.txt
Catatan: Folder `index_output/` dan file `knowledge_log.json` akan muncul setelah aplikasi dijalankan dan digunakan. Di mode Gradio, Knowledge Log bisa dilihat langsung dari UI.

βš™οΈ Instalasi

  1. 1.Clone / salin repo:
bash
git clone https://github.com/wardanaa/knowledge-retrieval-assistant.git
cd knowledge-retrieval-assistant
  1. 1.(Opsional Tapi Direkomendasikan) Buat virtual environment:
bash
python -m venv venv
source venv/bin/activate      # Linux / macOS
# atau
venv\Scripts\activate         # Windows
  1. 1.Install dependensi:
bash
pip install -r requirements.txt

Contoh isi requirements.txt:

text
flask
pdfplumber
numpy
scipy
scikit-learn
Sastrawi
gradio

πŸš€ Mode Aplikasi

Aplikasi bisa dijalankan dalam dua mode:

  • β€”Mode Gradio – antarmuka modern, mudah di-deploy (disarankan)
  • β€”Mode Flask – antarmuka web klasik (HTML + Bootstrap)

1️⃣ Mode Gradio (Recommended)

File utama: app_gradio.py

Jalankan:

bash
python app_gradio.py

Gradio biasanya akan tampil di:

text
http://127.0.0.1:7860
Alur Penggunaan (Gradio)
  1. 1.Buka URL Gradio di browser.
  2. 2.Upload dokumen (PDF/TXT) melalui komponen file.
  3. 3.Aplikasi akan:
  • β€”mengekstrak dan memproses teks
  • β€”membangun indeks TF-IDF
  • β€”menampilkan:
  • β€”info dokumen (jumlah halaman, paragraf, chunk)
  • β€”preview teks dokumen
  • β€”Tuliskan pertanyaan pada textbox, lalu klik β€œCari Jawaban”.
  • β€”Aplikasi akan menampilkan:
  • β€”beberapa Rank jawaban
  • β€”skor similarity
  • β€”nomor halaman
  • β€”cuplikan teks jawaban
  • β€”Buka accordion β€œKnowledge Log (Riwayat Pencarian)” untuk melihat:
  • β€”daftar pertanyaan terbaru
  • β€”timestamp
  • β€”dokumen terkait
  • β€”halaman jawaban
  • β€”cuplikan jawaban (snippet)
Knowledge Log (Gradio): Disimpan di file `knowledge_log.json`. Ditampilkan langsung di UI lewat tombol β€œRefresh Knowledge Log”. Ini adalah implementasi eksplisit dari Knowledge Storage + Knowledge Retrieval* untuk riwayat pengetahuan.

2️⃣ Mode Flask (Alternatif)

File utama: app.py

Jalankan:

bash
python app.py

Secara default Flask berjalan di:

text
http://localhost:5000
Alur Penggunaan (Flask)
  1. 1.Buka http://localhost:5000.
  2. 2.Di bagian β€œUpload dokumen (PDF / TXT)”:
  • β€”pilih file PDF/TXT
  • β€”klik β€œProses Dokumen”
  • β€”Setelah berhasil, halaman akan menampilkan:
  • β€”nama dokumen
  • β€”jumlah halaman, paragraf, chunk
  • β€”preview teks
  • β€”Di bagian β€œAjukan pertanyaan”:
  • β€”tulis pertanyaan terkait isi dokumen
  • β€”klik β€œCari Jawaban”
  • β€”Aplikasi akan menampilkan daftar hasil dengan:
  • β€”urutan rank
  • β€”skor similarity
  • β€”nomor halaman
  • β€”potongan teks relevan
Pada mode Flask, Knowledge Log tetap disimpan ke knowledge_log.json, meskipun belum ditampilkan di UI. File tersebut masih bisa digunakan sebagai bukti komponen Knowledge Storage di dokumentasi.

🧾 Knowledge Log

File: knowledge_log.json

Setiap kali pengguna mengajukan pertanyaan, aplikasi (mode Gradio & Flask) menyimpan entri log berisi antara lain:

  • β€”Waktu (time)
  • β€”Pertanyaan (question)
  • β€”Nama dokumen (document)
  • β€”Halaman jawaban teratas (top_answer_pages)
  • β€”Cuplikan jawaban teratas (top_answer_snippet)

Di mode Gradio:

  • β€”Log ini bisa dilihat melalui accordion β€œKnowledge Log (Riwayat Pencarian)”.
  • β€”Secara default menampilkan sekitar 20 entri terbaru.

Ini bisa dijadikan bahan:

  • β€”Analisis penggunaan sistem
  • β€”Sumber pengetahuan tambahan (FAQ internal)
  • β€”Bagian pembahasan Knowledge Management di laporan.

πŸ“š Kaitan dengan Knowledge Management System (untuk Laporan)

Ringkasannya:

  • β€”AI Component
  • β€”TF-IDF + cosine similarity (scikit-learn) sebagai model retrieval.
  • β€”Knowledge Capture
  • β€”Upload dan ekstraksi dokumen pengetahuan (PDF/TXT).
  • β€”Preprocessing dan chunking sebagai bentuk strukturisasi pengetahuan.
  • β€”Knowledge Storage
  • β€”Penyimpanan indeks TF-IDF (index_output/).
  • β€”Penyimpanan Knowledge Log (knowledge_log.json).
  • β€”Knowledge Retrieval
  • β€”Pencarian chunk relevan dari dokumen berdasarkan pertanyaan user.
  • β€”Knowledge Sharing
  • β€”Antarmuka web (Flask/Gradio) yang menyajikan:
  • β€”hasil pencarian
  • β€”ringkasan dokumen
  • β€”riwayat pertanyaan (Knowledge Log) ke pengguna.

⚠️ Batasan

  • β€”Sistem hanya melakukan retrieval, bukan jawaban generatif:
  • β€”output berupa potongan teks original dari dokumen.
  • β€”Kualitas hasil sangat dipengaruhi oleh:
  • β€”kualitas dokumen (scan vs teks asli),
  • β€”konsistensi bahasa (ID/EN),
  • β€”jumlah noise.
  • β€”Untuk dokumen yang sangat besar, proses indeks bisa memakan waktu & memori lebih besar.

πŸ“ Lisensi

Silakan gunakan dan modifikasi sesuai kebutuhan. Tambahkan lisensi formal (misalnya MIT) jika diperlukan untuk keperluan publikasi atau open source.