# Dokumen Desain & Perencanaan: PoC Task 2 Neo4j Vector Migration

## 1. Ringkasan Pemahaman
- **Tujuan:** Membuat skrip Python *standalone* (Proof of Concept) terisolasi untuk menguji integrasi *End-to-End* jalur ekstraksi graf: PDF Asli -> Parsing -> Ekstraksi 5 Pilar Gemini LLM -> Vektorisasi Gemini -> Penyimpanan Node & Edge di Neo4j AuraDB.
- **Batasan Utama:** Menggunakan ekstensi lisensi Neo4j AuraDB Free Plan dan Model Vektor ekosistem Gemini (768 Dimensi).
- **Format:** Murni eksekusi baris perintah (CLI Terminal), tidak mencakup integrasi Frontend/Vis.js atau penyimpanan RAG Supabase berskala besar.

## 2. Asumsi Spesifikasi
1. **Keamanan:** Rahasia API (Google dan Neo4j) divalidasi dan diimpor menggunakan `python-dotenv`.
2. **Performa Uji Coba:** Toleransi terhadap lambatnya proses unggah demi mengeksekusi model *Pre-Computed Edge Generation* di fase ini.
3. **Pustaka (*Libraries*):** Diutamakan menggunakan `neo4j` terbaru, `google-genai`, dan `PyMuPDF` untuk *parsing*.

## 3. Catatan Keputusan / Decision Log
*   **Dec 1 (Alur Komponen Ekstraksi):** Mengutamakan ekstraksi kompresi menggunakan LLM atas PDF (menjadi 5 pilar), barulah di-embed, bukan melakukan *embed* utuh ke *chunk* kasar.
*   **Dec 2 (Manajemen Pembuatan Edge - Pendekatan 1 Dinamis/Real-Time):** Garis relasi tidak dipisah ke skrip batch eksternal, melainkan dieksekusi berturut-turut di dalam memori saat mengunggah PDF, menggunakan pencarian vektor kustom demi akurasi kedekatan logis graf.
*   **Dec 3 (Strategi Teks Summary Edge - Pre-computed NLP):** Untuk memotong potensi kegagalan generasi (API LLM Error/Quota hit) atau latensi saat pengguna meng-klik garis relasi (*Edge*), sistem sepakat membangkitkan teks tersebut saat pengkodingan Node, lalu diamankan ke dalam properti baris Neo4j (Edge Property Storage).

## 4. Desain Skrip dan Struktur Repositori Akhir
Pohon Root: `poc-task2-neo4j-vector/`
- `/Literature`: Wadah file pengujian (`.pdf`).
- `/Markdown`: Folder khusus dokumentasi / riset skenario.

**A. `setup_indexes.py`**
Tugas: Koneksi aman dan melayangkan perintah administrasi `CREATE VECTOR INDEX` di perapian (AuraDB).
  - Mempersiapkan lima tata letak kerangka vektor graf dengan standar properti `vector.dimensions: 768`.

**B. `embed_and_ingest.py`**
Tugas: Pusat Pemrosesan Logika.
  - *Parsing*: Membaca teks asli dokumen di dalam folder PDF literature.
  - *LLM Extracting*: Gemini mengerucutkan ribuan frasa jadi 5 pilar penting abstrak.
  - *LLM Embedding*: Masing-masing dikodekan jadi 768 array numerik.
  - *Create Node*: Memasukkan ID Jurnal, Judul + 5 vektor properti sebagai basis awal.
  - *Vector Search*: KNN Vector Similarity untuk mendeteksi Node terdahulu yang melewati ambang batas (contoh `cos_sim` > 0.75).
  - *Summary Generation*: Gemini LLM membaca dua entitas yang mirip dan memproduksi teks kalimat rasional ("Kenapa kedua literatur ini dipandang terhubung?").
  - *Create Edge*: Mengikat keras Node 1 dan Node 2 dengan atribut parameter `{weight: [nilai float], summary: [teks]}`.

**C. `query_similarity.py`**
Tugas: Alat pembuktian verifikasi di luar antarmuka.
  - Melakukan tembakan kueri pencarian melalui basis murni terminal dan membaca nilai pengikatan relasi JSON untuk memastikan tak terjadi pelanggaran kapasitas memori AuraDB tanpa menuntut *render* UI Vis.js pihak klien.

---
*Dokumen ini merupakan turunan langsung validasi fase persetujuan (Design Lock).*
