100% Tempatan & Berdaulat (Sovereign AI)
Setiap komponen sistem — model bahasa, embedder, reranker, ChromaDB, pengurusan sesi, log audit — beroperasi di dalam pelayan tempatan TEKUN. Tiada data perbualan, dokumen rujukan, atau metadata pengguna dihantar ke perkhidmatan awan asing (AWS, Google Cloud, Azure, OpenAI, Anthropic). Pematuhan penuh dengan kedaulatan data Malaysia dan Akta Perlindungan Data Peribadi (PDPA) 2010.

GAMBARAN KESELURUHAN

TEKUN AI ialah sistem chatbot AI sepenuhnya tempatan untuk TEKUN Nasional — menjawab soalan berkaitan skim pembiayaan mikro, syarat kelayakan, prosedur permohonan, dan perkhidmatan rasmi TEKUN. Sistem ini menggunakan pendekatan RAG (Retrieval-Augmented Generation) dengan pencarian hibrid, pengembangan pertanyaan automatik, penilaian kendiri, dan kategori-boost untuk memastikan jawapan berkualiti tinggi.

5,885
Chunks Diindeks
122B
Parameter LLM
14
Ciri AI
On-Prem
Pelayan Tempatan

ALIRAN PEMPROSESAN (PIPELINE)

Setiap soalan pengguna melalui 8 langkah pemprosesan sebelum jawapan dihasilkan:

Klasifikasi Pertanyaan
Sistem mengkategorikan soalan sebagai internal (dokumen TEKUN), external (maklumat web), atau hybrid (kedua-duanya). Menggunakan kata kunci dan corak regex untuk pengesanan tepat.
classify_query() → "internal" | "external" | "hybrid"
Pengembangan Pertanyaan (Query Expansion)
Model LLM pantas (Qwen3.5-27B) menjana 3 variasi soalan asal — bercampur Bahasa Melayu dan Bahasa Inggeris dengan sinonim/parafrasa — untuk meningkatkan penemuan semula. Contoh: "cuti bersalin" turut dicari sebagai "maternity leave" dan "kelayakan cuti ibu".
Qwen3.5-27B → 3 variasi + soalan asal = 4 pertanyaan (TEKUN_QUERY_EXPANSION=1)
HyDE (Hypothetical Document Embedding)
Model pantas menjana satu petikan dokumen hipotesis dalam gaya penulisan rasmi TEKUN untuk soalan tersebut. Embedding petikan ini ditambah sebagai pertanyaan ke-5, kerana dokumen sebenar ditulis dalam bentuk jawapan, bukan soalan — ini menutup jurang fraseologi soalan-vs-dokumen.
Qwen3.5-27B → 1 dokumen hipotesis ~3 ayat (TEKUN_HYDE=1)
Klasifikasi Kategori (Category Routing)
Pengklasifikasi berdasarkan kata kunci (rule-based) memetakan soalan kepada salah satu daripada BSM (sumber manusia: cuti, klinik panel), PEROLEHAN (tender, sebut harga, lantikan), atau ISO (kualiti, alam sekitar, QSHE). Digunakan kemudian untuk soft boost dalam fusion.
classify_query() → "BSM" | "PEROLEHAN" | "ISO" | None
Pencarian Hibrid (Vector + BM25)
Dua kaedah pencarian dijalankan serentak: Vector search ke atas semua 5 variasi pertanyaan menggunakan embeddings Mesolitica (semantik), dan BM25 ke atas pertanyaan asal sahaja (kata kunci, dihadkan kepada top-50 mengelak bunyi bising).
ChromaDB HNSW (M=32, ef=200) × 5 + BM25Okapi top-50 (TEKUN_BM25_TOP_N=50)
Reciprocal Rank Fusion + Category Boost
Hasil vector dan BM25 digabungkan menggunakan RRF (k=60). Dokumen yang sumbernya sepadan dengan kategori yang dikesan (langkah 4) mendapat soft boost 1.3× pada skor RRF. Bukan tapisan keras — jika klasifikasi salah, dokumen lain masih muncul, hanya diturunkan kedudukan.
RRF fusion + 1.3× category boost (TEKUN_CATEGORY_BOOST=1)
Carian Web (jika berkaitan)
Untuk pertanyaan external atau hybrid, sistem mencari web menggunakan dwi-pembekal: Tavily (utama) dan Brave Search (sandaran). Pertanyaan difokuskan kepada topik TEKUN secara automatik.
Tavily API (advanced) → Brave fallback → top 5 hasil
Penarafan Semula (Multilingual Cross-Encoder)
Cross-encoder pelbagai bahasa menilai setiap pasangan (soalan, dokumen) untuk menentukan relevansi sebenar. Sangat lebih baik untuk Bahasa Melayu berbanding model lama yang dilatih hanya dengan Bahasa Inggeris.
BAAI/bge-reranker-v2-m3 on GPU → top 7 reranked
Penjanaan Jawapan (LLM Generation)
Model utama Qwen3.5-122B menjana jawapan berdasarkan dokumen yang diperoleh, dengan arahan Chain-of-Thought (CoT) untuk penaakulan berstruktur. Jawapan distrim secara langsung melalui SSE.
Qwen3.5-122B → SSE streaming → max 4000 token
Cadangan Susulan (Follow-up Suggestions)
Diparse secara inline daripada respons LLM (penanda SOALAN_SUSULAN:) — tiada panggilan LLM tambahan. Membantu pengguna meneroka topik lebih mendalam.
Inline parse → 3 soalan cadangan (sifar latency tambahan)
Citation Grounding Check (Fact Verification)
Selepas jawapan distrim sepenuhnya kepada pengguna, model pantas memeriksa setiap dakwaan fakta dalam jawapan terhadap konteks dokumen. Setiap ayat dilabel SUPPORTED, NOT_SUPPORTED, atau NO_CLAIM. Skor grounded_pct dihantar dalam SSE done event sebagai metadata untuk badge "Verified" pada antara muka. Tidak melambatkan TTFT.
Qwen3.5-27B → per-claim verdict (TEKUN_GROUNDING_CHECK=1)

KOMPONEN UTAMA

Model AI

LLM Utama
Model bahasa berskala besar (122 bilion parameter) untuk penjanaan jawapan berkualiti tinggi. Dihos di pelayan tempatan — tiada perkongsian dengan OpenAI, Anthropic, atau awan asing.
Server Tempatan
LLM Pantas
Qwen3.5-27B
Model lebih kecil (27B parameter) untuk tugas utiliti: pengembangan pertanyaan, penilaian kendiri, dan cadangan susulan. Lebih pantas untuk tugasan sokongan.
Server Tempatan
Embeddings
Mesolitica Mistral 191M
Model embedding khusus Bahasa Melayu (191 juta parameter). Menukar teks kepada vektor 1024-dimensi untuk pencarian semantik. Dijalankan secara tempatan pada GPU.
GPU Tempatan
Penarafan Semula
BAAI/bge-reranker-v2-m3
Cross-encoder pelbagai bahasa SOTA yang menilai relevansi pasangan soalan-dokumen. Sangat lebih baik untuk Bahasa Melayu berbanding model ms-marco-MiniLM lama (yang dilatih hanya dengan data Bahasa Inggeris). Ini adalah peningkatan ketepatan paling besar dalam pipeline v4.
GPU Tempatan

Suara (Voice)

Speech-to-Text
Whisper large-v3
Model transkripsi OpenAI dalam mod float16 pada GPU. Menyokong Bahasa Melayu dan Bahasa Inggeris. Menggunakan Faster-Whisper untuk prestasi optimum.
GPU Tempatan
Text-to-Speech
MMS-TTS Malay
Model TTS Meta (Massively Multilingual Speech) khusus Bahasa Melayu. Menjana audio WAV 16kHz secara tempatan pada GPU.
GPU Tempatan

Carian Web

Pembekal Utama
Tavily Search
API carian AI yang mengembalikan kandungan berstruktur. Hanya kata kunci carian dihantar (bukan perbualan penuh atau PII pengguna), dan hanya jika soalan memerlukan maklumat web terkini. Boleh dilumpuhkan sepenuhnya jika TEKUN mahu mod 100% offline.
Carian Web (Pilihan)
Pembekal Sandaran
Brave Search
Sandaran jika Tavily gagal atau tidak tersedia. Sama seperti Tavily — hanya kata kunci carian dihantar, bukan kandungan perbualan.
Carian Web (Pilihan)

Nota kedaulatan data: Semua dokumen TEKUN, perbualan pengguna, log audit, dan memori sesi kekal di pelayan tempatan. Hanya carian web (Tavily/Brave) menggunakan API luaran — itupun hanya menghantar kata kunci carian tanpa PII atau kandungan perbualan. Untuk operasi 100% offline, carian web boleh dilumpuhkan melalui backend.env.

PANGKALAN PENGETAHUAN

PerkaraButiran
DokumenDokumen rasmi TEKUN — skim pembiayaan, garis panduan, polisi HR, prosedur perolehan, SOP (tertakluk pada data yang diingest)
Halaman85 halaman, 7 seksyen utama (A-G)
Chunks515 chunks (600 aksara setiap chunk, 120 aksara overlap)
MetadataNama fail, indeks chunk, nombor halaman, jenis dokumen
Pangkalan VektorChromaDB dengan HNSW (M=32, construction_ef=200, search_ef=100)
Dimensi Vektor1024 (Mesolitica Mistral 191M)

Liputan Dokumen

SeksyenKandungan
Section A (1.0-5.0)Umum -- tujuan, objektif, skop perkhidmatan, inventori aset, peraturan dan piawaian
Section B (6.0)Pelan Pengurusan Fasiliti (FMP)
Section C (7.0-12.0)Organisasi tapak kontraktor -- program kerja, pembayaran, sumber manusia, SHE, QMS
Section D (13.0-20.0)Perkhidmatan pengurusan fasiliti -- peralihan, FCA, help desk, MIS, utiliti, risiko, HSE
Section E (21.0-23.0)Operasi dan penyelenggaraan kejuruteraan -- CMMS, landskap, mekanikal, elektrikal, sivil
Section F (24.0-25.0)Perkhidmatan kustodial -- pembersihan, kawalan perosak
Section G (26.0)Nasihat teknikal dan cadangan pakar

INFRASTRUKTUR

Perkakasan

Pelayan
AMD Radeon AI PRO R9700
GPU R9700 dengan 32GB VRAM (gfx1201 / RDNA 4), CPU Intel 9th-gen 8 teras / 16 thread, 32GB DDR4-2666, papan induk Z390 AORUS PRO WIFI. Semua model embedding dan reranker dijalankan secara tempatan pada GPU.
Tempatan
Perisian
Stack Teknologi
Ubuntu 26.04, ROCm 6.4, Python 3.12, PyTorch 2.9.1+rocm6.4, FastAPI + Uvicorn, Caddy (TLS & reverse proxy), Redis, ChromaDB.
Pengeluaran

Perkhidmatan

KomponenButiran
Backend APIFastAPI pada port 8004 (loopback), 1 Uvicorn worker, uvloop
CacheRedis (port 6379) -- respons dicache selama 10 minit
GatewayCaddy -- TLS Let's Encrypt automatik (TLS-ALPN-01), zstd/gzip, reverse proxy, gerbang SSO via forward_auth
Domain Awamchatbot.tekun.gov.my -- DNS Cloudflare (DNS-only) menghala ke WAN TEKUN, port 443 diteruskan ke pelayan ini (172.31.0.5)
Systemdtekun-chatbot.service -- auto-start, had memori 32GB, perlindungan keselamatan

KESELAMATAN & KUALITI

Kawalan Kadar
Rate Limiting
Had 30 permintaan seminit bagi setiap IP. Dilaksanakan pada lapisan aplikasi FastAPI (di belakang Caddy reverse proxy).
Pengesahan URL
URL Verification
Hanya URL dari sumber web yang disahkan dibenarkan dalam jawapan. LLM tidak boleh mereka URL.
Penilaian Kendiri
3-Dimensi Scoring
Setiap jawapan dinilai secara automatik: Relevan (1-5), Tepat (1-5), Lengkap (1-5). Skor rendah memberi amaran kualiti.
Anti-Halusinasi
Source Grounding
Arahan sistem mewajibkan rujukan seksyen dokumen. Jika maklumat tidak dijumpai, chatbot akan menyatakan terus terang.
TEKUN AI — TEKUN Nasional
Inovasi oleh Pendakwah Teknologi