# ADR-001: Arsitektur AI On-Premise — GPU Node + RAG + Memory > **Status:** Accepted > **Tanggal:** 2026-07-06 > **Decider:** Tim IT GIS Portal --- ## Konteks Organisasi ingin mengimplementasikan AI on-premise yang bisa: 1. Membantu user membuat teks (email, laporan) dengan konteks personal 2. Menjawab pertanyaan tentang codebase dan infrastruktur 3. Membantu coding dan proses deploy 4. Belajar dari kebiasaan user (personalisasi) Semua ini harus berjalan **100% on-premise** tanpa mengirim data ke cloud. --- ## Hardware yang Tersedia | Node | Spec | Peran | |------|------|-------| | PC-Multimedia `10.100.1.14` | Core Ultra 7 265K, 64 GB RAM, RTX 5060 Ti ~16 GB VRAM | **GPU inference node (utama)** | | VM aiopr `10.100.1.26` | 48 vCPU, 62 GB RAM, no GPU | **CPU inference node (fallback)** | | PostgreSQL `10.100.1.25` | — | **Vector DB (pgvector)** | --- ## Keputusan ### 1. Dual-node Ollama - **PC-Multimedia** = node utama GPU inference → model besar (14B), cepat - **VM .26** = fallback CPU inference + background embedding/indexing - Consumer (geonet-console) default ke PC-Multimedia, fallback ke VM .26 ### 2. Tiga Level AI Capability (implementasi bertahap) #### Level 1 — Context Injection (Fase 1) Profil user LDAP (nama, jabatan, atasan) di-inject ke system prompt setiap request. - Effort: rendah - Value: tinggi — AI langsung "kenal" user #### Level 2 — RAG + Memory (Fase 2–3) - **Codebase RAG:** seluruh repo di-index ke pgvector (`geonet_project_search`), di-retrieve saat relevan - **User Memory:** pola interaksi per user disimpan ke DB, di-retrieve untuk personalisasi - Contoh: user sering minta template email ke Pak Taufik → AI ingat gaya & penerima #### Level 3 — Deploy Agent (Fase 4, opsional) AI dengan tool calling: bisa SSH ke server, `docker exec`, `php artisan`, git — untuk bantu deploy otomatis. ### 3. Model yang Dipilih | Tujuan | Model | VRAM | |--------|-------|------| | Coding & deploy assist | `qwen2.5-coder:14b` | ~9 GB | | Chat umum / email / teks | `qwen2.5:14b` | ~9 GB | | Embedding / RAG | `nomic-embed-text` | ~0.3 GB | | Fallback ringan | `qwen2.5:7b` (di VM .26) | ~5 GB CPU | ### 4. Storage Model Model disimpan di `T:\ollama\models` (Samsung SSD 9100 PRO 2TB, 323 GB free) — drive tercepat di PC-Multimedia. --- ## Konsekuensi ### Positif - Privasi penuh — kode dan data user tidak keluar jaringan - Biaya operasional nol (hardware sudah ada) - Latensi rendah (LAN lokal) - Bisa index seluruh codebase tanpa batas token cloud ### Negatif / Risiko - PC-Multimedia adalah workstation, bukan server — availability tergantung PC nyala - Kualitas model 14B di bawah GPT-4/Claude untuk task kompleks - Fine-tuning (Level 3+) butuh data latih yang cukup banyak - GPU inference hanya bisa 1 request sekaligus (VRAM shared) ### Mitigasi - Power plan PC-Multimedia: "High Performance", disable sleep - Fallback otomatis ke VM .26 jika PC-Multimedia tidak reachable - Fine-tuning hanya untuk template spesifik, bukan model utama --- ## Alternatif yang Ditolak | Alternatif | Alasan ditolak | |------------|----------------| | Full cloud (OpenAI/Anthropic) | Kode dikirim ke luar, biaya bulanan | | Fine-tuning sebagai langkah pertama | Overkill untuk kasus email/chat; RAG sudah cukup | | Hanya VM .26 (tanpa GPU) | Lambat untuk model 14B, tidak ada GPU | --- ## Roadmap Implementasi ``` Fase 1 (1-2 hari) Install Ollama GPU di PC-Multimedia Fase 2 (3-5 hari) pgvector + indexer codebase monorepo Fase 3 (1 minggu) Integrasi geonet-console: /api/v1/ai/chat + user memory Fase 4 (opsional) Deploy agent: tool calling SSH/docker ``` Detail task → [docs/todo.md](../todo.md)