# RAG DOHI — Index Obat Hewan Indonesia (IOHI)

## Overview
Vector search (RAG) dari dokumen **Index Obat Hewan Indonesia (IOHI) Edisi IX 2014**.
Vector DB: **ChromaDB** + **sentence-transformers** (`all-MiniLM-L6-v2`).
Dibangun Juli 2026.

## File & Path
| Component | Path |
|-----------|------|
| Source document | `/home/ubuntu/kantor/DOHI_IOHI/Index_Obat_Hewan_Indonesia_IOHI_2014.pdf` |
| ChromaDB storage | `/home/ubuntu/.hermes/rag_dohi_chroma/` |
| Build script | `/home/ubuntu/build_rag_dohi.py` |
| Collection name | `dohi_iohi` |
| Total chunks | 5.276 (chunk size: 600 chars, overlap 80) |

## Dokumen Source
- **Nama**: Index Obat Hewan Indonesia (IOHI) Edisi IX 2014
- **Penerbit**: Asosiasi Obat Hewan Indonesia (ASOHI) + Direktorat Kesehatan Hewan, Ditjen Peternakan & Keswan
- **Halaman**: 846 hal
- **Ukuran file**: 17 MB
- **ISBN**: 978-979-628-028-5

## Struktur Isi IOHI
| Halaman | Kategori |
|---------|----------|
| 11–348 | Sediaan Farmasetik (anti bakteri, anti mikotik, anti protozoa, anti parasit, anti inflamasi, vitamin, mineral, dll) |
| 349–480 | Sediaan Biologik (vaksin: Avian, Mammalia, Per怀里 Ikan) |
| 481–596 | Sediaan Premiks (Feed Additive + Feed Suplemen) |
| 597–602 | Sediaan Alami |
| 603–810 | Sediaan Lain-lain (kosmetika, pelarut, infus, dll) |
| 811–846 | Indeks Umum (nama dagang A–Z) |

## Query Script (Python)
```python
import chromadb
from sentence_transformers import SentenceTransformer

chroma_client = chromadb.PersistentClient(path="/home/ubuntu/.hermes/rag_dohi_chroma")
collection = chroma_client.get_collection("dohi_iohi")
model = SentenceTransformer("all-MiniLM-L6-v2")

q = "antibiotik untuk sapi sakit pernapasan"
results = collection.query(
    query_embeddings=model.encode([q]).tolist(),
    n_results=3
)

for doc, meta in zip(results['documents'][0], results['metadatas'][0]):
    print(f"📄 Hal {meta['halaman']}: {doc[:400]}")
```

## Query Interface
Trigger: ketik `dohi ` (tanpa slash) di awal pesan Telegram → auto-detect sebagai query RAG DOHI.

**Cara pakai di Telegram:**
```
dohi antibiotik untuk sapi sakit pernapasan
dohi obat anti cacing untuk ayam
dohi vaksin untuk Newcastle Disease
dohi vitamin untuk ternak ayam petelur
```

**Script query:**
```bash
/home/ubuntu/rag_query.sh dohi "<pertanyaan>"
```

Python venv: `/home/ubuntu/venv_trading/bin/python3`

## Build / Rebuild RAG DOHI
```bash
/home/ubuntu/venv_trading/bin/python3 /home/ubuntu/build_rag_dohi.py
```

Script auto-extract semua teks dari PDF 846 halaman, chunk 600 chars, overlap 80.
Ekstraksi: pymupdf (`fitz`), bukan markitdown (markitdown tidak bisa baca PDF IOHI ini — banyak halaman image-only).

## Setup Environment
```bash
python3 -m venv /home/ubuntu/venv_trading
/home/ubuntu/venv_trading/bin/pip install chromadb sentence-transformers pymupdf torch
```

## Tested Queries (July 2026)
| Query | Top Result |
|-------|-----------|
| "antibiotik untuk sapi sakit pernapasan" | Hal 164: TYCOL + ant biokimia saluran pernapasan ✅ |
| "obat anti cacing ayam" | Hal 119: infeksi saluran pencernaan & pernapasan ✅ |
| "vaksin Newcastle Disease" | Hal 349+: Sediaan Biologik ✅ |

## Pitfalls
1. **PDF image-only pages**: Beberapa halaman IOHI berisi scan/image, bukan teks. Teks kosong di halaman tersebut di-skip otomatis oleh build script.
2. **HF_TOKEN**: Model download tanpa token → warning "unauthenticated requests". Ini OK, tidak block.
3. **Chunking**: Break di `. ` (period + space) lebih baik dari char limit saja — menghasilkan chunk yang lebih readable. Chunk size 600, overlap 80 (lebih kecil dari BKD karena dokumen padat).
4. **Metadata**: Setiap chunk menyimpan nomor halaman sumber — berguna untuk referensi balik ke dokumen asli.
