---
name: rag-router
description: Query dokumen RAG (Retrieval Augmented Generation) berdasarkan keyword trigger di awal pesan. Tanpa slash — plain text detection. Untuk drh. Edi Santosa (Disbunak Kalsel).
triggers:
  - "bkd "   # kepegawaian / BKD
  - "dohi "  # Index Obat Hewan Indonesia (IOHI)
  - "saham " # saham BEI (belum dibuat)
---

# RAG Router Skill

## Trigger (tanpa slash!)

Pesan harus dimulai dengan keyword + spasi:

```
bkd apa syarat Karis Karsu?
dohi obat anti cacing untuk sapi
```

**CATATAN PENTING:** Jangan pakai slash (`/bkd`, `/dohi`) — Telegram/BotFather
menangani `/bkd` sebagai bot command dan mengembalikan "Unknown command".
Pak Edi memilih trigger tanpa slash (Opsi 1).

## Topics & RAG

| Trigger | RAG Path | Topik | Chunks |
|---------|----------|-------|--------|
| `bkd ` | `~/.hermes/rag_bkd_chroma` | Kepegawaian, BKD, pensiun, Karis Karsu, TPP, PLT/PLH | 386 |
| `dohi ` | `~/.hermes/rag_dohi_chroma` | Index Obat Hewan Indonesia (IOHI) Edisi IX 2014, 846 hal | 5.276 |
| `saham ` | `~/.hermes/rag_saham_chroma` | Saham BEI (belum dibuat) | — |

## Langkah

1. **Parse** keyword —ambil kata pertama + spasi, bandingkan dengan daftar trigger
2. **Cek** RAG directory exists: `ls ~/.hermes/rag_<topic>_chroma`
3. **Jalankan** query:
   ```
   bash /home/ubuntu/rag_query.sh <topic> "<query>"
   ```
4. **Parse output** — tiap hasil: `[N] 📄 filename\n    text...`
5. **Kembalikan** jawaban ringkas. Jika hasil tidak relevan, bilang: "Tidak ditemukan info yang relevan."
6. **Strip** markdown artifact (`<!-- -->`, `![](`, `Picture\d+`) sebelum ditampilkan ke user

## Pitfalls

- **Slash trigger (/bkd) TIDAK works** di Telegram — harus plain text trigger tanpa slash
- **PPTX BKD mengandung gambar/shape, bukan teks — markitdown saja menghasilkan chunk kosong.**
  Gunakan `python-pptx` shapes + `markitdown` fallback (lihat `build_rag_bkd_v2.py`)
- Jika RAG directory tidak ada → "RAG `<topic>` belum dibuat."
- Output markdown artifact → strip sebelum ditampilkan
- Chunk panjang: 500 char pertama cukup, tambahkan `...` jika lebih
- ChromaDB query timeout → langsung answer dari pengetahuan umum
- Semua respons dalam Bahasa Indonesia ke Pak Edi

## Build RAG Baru

Untuk buat RAG dari dokumen baru:

```bash
# Gunakan venv: /home/ubuntu/venv_trading/
/home/ubuntu/venv_trading/bin/python3 build_rag_*.py
```

**Setup RAG BKD v2 (pakai python-pptx + markitdown):**
- Builder script: `/home/ubuntu/build_rag_bkd_v2.py`
- PPTX extraction: `python-pptx` shapes + `markitdown` fallback — JANGAN pakai markitdown saja! PPTX dengan konten gambar/tabel akan menghasilkan chunk kosong.
- PDF extraction: `fitz` (pymupdf)
- Chunking: 600 char, overlap 80, pecah di kalimat
- Embedding: `all-MiniLM-L6-v2` via SentenceTransformer
- ChromaDB collection: `bkd_sosialisasi`

**Setup RAG DOHI:**
- Builder script: `/home/ubuntu/build_rag_dohi.py`
- 846 halaman PDF → 5.276 chunk
- Collection: `dohi_iohi`

**Update trigger di skill ini** setelah RAG baru dibuat.
RAG script: `/home/ubuntu/rag_query.sh` (router) dan `/home/ubuntu/build_rag_*.py` (builder)
