# 1. Judul
**Blueprint Optimasi Retrieval: Implementasi Bilingual Mega-Sentence & Peningkatan Jangkauan Top-K**

# 2. Tanggal
Sabtu, 9 Mei 2026

# 3. Deskripsi
Dokumen ini merupakan cetak biru (*blueprint*) teknis untuk mengoptimalkan ketajaman dan daya jangkau (*recall*) dari mesin pencari semantik (*Semantic Retriever*) pada arsitektur "Small-to-Big Retrieval" yang telah diimplementasikan sebelumnya. Fokus utama optimasi ini adalah menangani literatur akademik yang bersifat multi-bahasa (Inggris dan Indonesia) atau memiliki bahasa campuran. Optimasi dilakukan dengan mengganti kueri pencarian statis menjadi format **Bilingual Mega-Sentence** (kalimat padat makna dalam dua bahasa) dan memperlebar jaring pencarian semantik dari `top_k = 2` menjadi `top_k = 3` guna meminimalisir risiko terpotongnya informasi krusial.

# 4. Metodologi
Optimasi ini menerapkan pendekatan *Semantic Density Engineering* untuk pencarian ruang vektor:
1.  **Context Expansion:** Menaikkan parameter limit pencarian kemiripan (*Cosine Similarity*) untuk mengambil 3 *Child Chunks* teratas (`top_k=3`) per pilar, guna mengamankan paragraf jurnal yang panjang atau terpisah.
2.  **Bilingual Mega-Sentence Routing:** Menulis ulang kelima *query* statis menjadi kalimat tunggal yang sangat padat secara semantik, memadukan leksikon Bahasa Indonesia dan terminologi baku jurnal Bahasa Inggris (*glossary terms*), serta menyertakan jangkar linguistik (contoh: *"however"*, *"this paper proposes"*) yang sering digunakan penulis jurnal.

# 5. Keputusan (Decision Log)
1.  **Pelebaran Threshold (Top-K = 3):** Memperlebar jaring tangkapan semantik menjadi 3 *parent chunk* teratas. Kalkulasi beban token LLM diproyeksikan sedikit meningkat menjadi ~4.000 hingga 5.500 token, namun tingkat pengamanan informasi dari keterpotongan (khususnya untuk *Methodology* dan *Gap*) meningkat secara signifikan. Hal ini diizinkan selama tidak mendekati batas berbahaya 25.000 karakter.
2.  **Penolakan Nested Array:** Keputusan tegas menolak penggunaan *array* pencarian per-kata (*keyword array*). Mesin *embedding* membutuhkan kalimat utuh untuk memetakan pusat gravitasi semantik (*centroid*). Pencarian kata per kata akan menghancurkan skor kemiripan *Cosine Similarity* pada level kalimat.

# 6. Alur Diagram
```mermaid
flowchart TD
    classDef process fill:#f9f2f4,stroke:#333,stroke-width:2px;
    classDef config fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;
    
    A[Child Chunks Vector Array] --> S{In-Memory Cosine Similarity}:::process
    
    Q[Bilingual Mega-Sentence<br>Queries]:::config --> E[Alibaba text-embedding-v3]
    E --> QV[Vektor Query Sangat Padat]
    QV --> S
    
    S --> |Ambil 3 Teratas per Pilar<br>Top-K = 3| M[15 Child Chunks]
    M --> R{Deduplikasi Parent ID<br>via Python Set}:::process
    R --> ST[9-12 Parent Chunks Unik]
```

# 7. Struktur Folder (Tree)
Pembaruan ini secara spesifik hanya akan menargetkan modifikasi pada satu file utama di *service layer*:
```text
/home/daegir/Documents/PERCOBAAN/backend-sre-(Knowledge Extractor)/
├── app/
│   └── services/
│       ├── ingestion.py                 # (TARGET MODIFIKASI: Query & Top-K)
└── Markdown/
    └── small-to-big-retrieval/
        ├── Plan/
        │   └── optimization-bilingual-routing-plan.md  # File dokumen ini
        └── Log-Execution/               # Untuk pelaporan eksekusi
```

# 8. Asumsi & Scope
*   **Scope In:** 
    *   Memodifikasi variabel `query_texts` di dalam `app/services/ingestion.py` dengan 5 kalimat *Bilingual Mega-Sentence* yang telah disepakati.
    *   Mengubah nilai `top_k=2` menjadi `top_k=3` pada pemanggilan `retriever.find_top_k_parents`.
    *   Mencatat perubahan performa (*tokens*, latensi) ke dalam metrik matriks monitoring.
*   **Out of Scope (Non-Goals):**
    *   TIDAK membuat *nested array* atau struktur *dictionary* untuk *query*.
    *   TIDAK memodifikasi parameter atau *library* pada mesin pemotong teks (`smart_chunker.py`).
    *   TIDAK memodifikasi sistem *database* (Supabase/Neo4j).
*   **Asumsi:** Kinerja Alibaba `text-embedding-v3` terbukti andal dalam menangani *query* campuran (*bilingual*) dan dapat memusatkan ruang vektor dengan akurat untuk teks campuran bahasa Inggris dan Indonesia.

# 9. Konsep Tabel Metriks
Keberhasilan optimasi akan diukur dari perubahan profil pada tabel matriks saat *runtime*:
| Metrik | Kondisi Sebelum Optimasi | Target Sesudah Optimasi | Status Keberhasilan |
| :--- | :--- | :--- | :--- |
| **Token Input LLM** | Sangat Rendah (~2.500) | Sedikit Naik (~4.000 - 5.500) | Normal (Diterima demi akurasi mutlak) |
| **Parent Chunk Ditemukan** | Rata-rata 6 - 8 Chunk Unik | Rata-rata 9 - 12 Chunk Unik | Penangkapan informasi yang lebih komprehensif |
| **Akurasi Ekstraksi LLM** | Kadang informasi terpotong | Informasi Utuh & Ekstraksi Lengkap | Akurasi mutlak tanpa *Lost in the Middle* |

# 10. Konsep Logika
Logika optimasi dipusatkan pada penggantian konfigurasi di `ingestion.py`:
1.  **Parameter Update:** Pada baris di mana *retriever* dipanggil, ganti argumen `top_k=2` menjadi `top_k=3`.
2.  **Query Engineering:** Ganti *list* `query_texts` yang lama dengan konfigurasi *Bilingual Mega-Sentence* berikut:
    *   *"Latar belakang, masalah, dan motivasi penelitian ini. Background, research problem, motivation, context, introduction, underlying issue."*
    *   *"Metode, pendekatan, arsitektur, algoritma, eksperimen, atau dataset yang digunakan. Methodology, proposed method, approach, system architecture, dataset, materials, experimental setup, procedure."*
    *   *"Gap penelitian, keterbatasan, kelemahan, atau masalah yang belum terselesaikan. Research gap, limitations, weakness, unresolved problem, remains a challenge, yet to be explored, however."*
    *   *"Tujuan utama, sasaran, atau pertanyaan penelitian yang ingin dijawab. Main objective, research goal, purpose of this study, aims to investigate, to evaluate, this paper proposes."*
    *   *"Pekerjaan di masa depan, saran untuk peneliti lain, atau langkah selanjutnya. Future work, recommendations, future research directions, next steps, further investigation."*

# 11. Langkah Implementasi
1.  Membuka *script* utama `app/services/ingestion.py`.
2.  Menemukan deklarasi variabel `query_texts`.
3.  Mengganti konten variabel tersebut dengan kelima *Bilingual Mega-Sentence*.
4.  Menemukan pemanggilan fungsi `retriever.find_top_k_parents`.
5.  Mengganti nilai parameter argumen `top_k=2` menjadi `top_k=3`.
6.  Melakukan pengujian (*dry-run*) pada keseluruhan sistem menggunakan perintah `time python app/services/ingestion.py` untuk mengonfirmasi logika tidak *crash* dan memantau matriks performa (*token & timing*).

# 12. Tabel Eksekusi Task

| Check Box | Fase | Task | Detail Task | Deskripsi | Acceptance Criteria |
| :---: | :---: | :---: | :--- | :--- | :--- |
| [x] | 1 - Konfigurasi | Modifikasi `query_texts` | Ganti daftar pertanyaan semantik dengan *Bilingual Mega-Sentence* | Menyematkan istilah akademik Bahasa Inggris dan kata transisi (misal: *however*, *proposed method*) ke dalam kalimat query bahasa Indonesia yang sudah ada di `ingestion.py`. | Kelima query di `ingestion.py` telah terganti sempurna menjadi kalimat panjang dwibahasa sesuai konsep logika. |
| [x] | 2 - Konfigurasi | Modifikasi Parameter `top_k` | Ubah parameter *retriever* pencarian | Modifikasi baris kode pemanggilan `find_top_k_parents` untuk mengubah nilai `top_k=2` menjadi `top_k=3`. | Pemanggilan fungsi sekarang memuat `top_k=3` dengan benar tanpa *syntax error*. |
| [x] | 3 - Pengujian | Eksekusi Pipeline End-to-End | Jalankan `python app/services/ingestion.py` untuk mengukur dampak | Pantau hasil matriks pemantauan di konsol. Pastikan jumlah *Parent Chunks* yang dideduplikasi sedikit meningkat, dan token *input* LLM berada di rentang ~4000-5500. | Logika eksekusi selesai tanpa *crash*. Matriks performa muncul mencetak hasil penggunaan token baru. |
| [x] | 4 - Dokumentasi | Laporan Log Eksekusi Optimasi | Buat `task-09-optimization-log.md` | Dokumentasikan semua tindakan, perbandingan token sebelum/sesudah, dan laporan kelancaran *update* ke dalam folder `Log-Execution`. | File laporan sukses dibuat dan mencerminkan kesimpulan teknis yang akurat. |