Lewati ke konten utama

Penyajian Model

Semua inferensi di-host sendiri untuk lingkungan yang dikirimkan. Aplikasi menggunakan endpoint yang dapat dikonfigurasi untuk LLM, embedding, reranker, dan OCR, sehingga local dan production berbeda berdasarkan lingkungan, bukan kode aplikasi. (Host review-staging sudah dihapus — audit produksi firstmate 2026-10-07.)

Peran model​

PeranProfil lokalTujuan
LLMQwen3-14B-AWQ (qwen3-14b) pada profil A30Penalaran, perencanaan, sintesis
EmbeddingBGE-M3, 1024 dimensiVektor kueri dan dokumen
Rerankerbge-reranker-v2-m3Reranking kandidat cross-encoder
OCRPaddleOCR-VL-0.9B melalui wrapper OCREkstraksi teks pindaian/gambar

ID model adalah konfigurasi, bukan kontrak API hard-coded. GET /models melaporkan ID yang diterima oleh POST /generate; /healthz melaporkan liveness proses, sedangkan /readyz memeriksa endpoint health embedding dan reranker bersama layanan data dan observability yang wajib. Produksi melayani window 65536 token (ACEH_RAG_SYNTHESIS__SERVED_CONTEXT_WINDOW_TOKENS=65536); default Python lebih rendah sampai ditimpa oleh suatu environment.

Cara model diorkestrasi untuk setiap request​

Model yang berbeda berjalan pada tahap yang berbeda, dan sebagian hanya berjalan saat diperlukan. Pertanyaan yang paling umum, "ketika PDF diunggah, bagaimana sistem menentukan apakah OCR diperlukan?", dijawab oleh aturan born-digital-first: pipeline selalu mencoba ekstraksi teks langsung terlebih dahulu dan hanya memanggil model OCR ketika teks tersebut tidak ada atau tidak dapat digunakan, yang menjadi tanda dokumen hasil pemindaian. File gambar selalu langsung diproses oleh OCR.

Ingesti: menentukan apakah OCR berjalan​

  • Format born-digital (PDF, DOCX, XLSX, PPTX, CSV, HTML, MD) diurai untuk mengambil teks tanpa pemanggilan model.
  • PDF yang hasil ekstraksinya tidak menghasilkan teks, terlalu sedikit karakter, atau gibberish dengan sinyal rendah diperlakukan sebagai hasil pemindaian dan dialihkan ke model OCR (PaddleOCR-VL), dengan merender setiap halaman menjadi gambar terlebih dahulu. Text layer yang hanya berisi stempel aplikasi pemindai juga dapat memicu OCR. Lihat aturan kepadatan teks dan kompromi untuk dokumen dengan sedikit teks untuk kontrak routing lengkap.
  • File gambar (PNG, JPG, TIFF, …) selalu diproses oleh model OCR.
  • Teks kemudian dipecah menjadi chunk, dan setiap chunk melewati gerbang: confidence OCR yang dapat dibandingkan lintas versi model harus berada pada atau di atas ambang batas (default 0.85). Jika skor dari backend sendiri tidak dapat dibandingkan dengan production, confidence gerbang tersebut diturunkan dari teks keluaran OCR. Hanya chunk yang disetujui yang dikirim ke model embedding dan diindeks; apa pun yang berada di bawah ambang batas ditandai needs_ocr_review, diarahkan ke manusia, dan dikecualikan dari pencarian (ADR-0005).

Kueri: pencarian, pemeringkatan ulang, dan sintesis​

Sebuah kueri menyentuh tiga seam model yang dikonfigurasi secara berurutan, yaitu embedding, reranker, lalu LLM:

  • Model embedding mengubah kueri menjadi vektor untuk pencarian semantik; pencarian leksikal berjalan secara paralel pada teks kueri mentah.
  • Kandidat semantik (pgvector) dan leksikal (Postgres FTS) dipadukan dengan RRF, lalu model reranker mengurutkannya. Jika reranker tidak tersedia, urutan hasil paduan digunakan sebagai fallback yang tetap berjalan.
  • Chunk teratas, jika sesuai dengan anggaran konteks, dikirim ke LLM yang dikonfigurasi untuk sintesis. Grounding tabel Open Data dan BPS dipangkas terlebih dahulu hingga batas yang lebih ketat antara batas karakter yang dikonfigurasi dan ruang tersisa dalam window token penyajian setelah framing prompt aktual, kueri, memori yang dipanggil kembali, dan direktif tool dihitung. Jika baris BPS pertama saja tidak dapat dimuat, pembacaan BPS turun menjadi grounding status dan fallback Open Data dijalankan. Pemeriksaan kesesuaian dan Government Policy Guard berjalan sebelum jawaban bersitasi dikembalikan.

Setiap model di atas diakses melalui endpoint terkonfigurasinya sendiri, sehingga routing model per kasus penggunaan yang dijelaskan dalam catatan roadmap di bawah dapat memilih model pada seam yang sama tanpa mengubah alurnya.

Tata letak runtime​

Lihat snapshot produksi yang diaudit untuk ref deployment, pengaturan runtime, inventaris korpus, dan deployment yang masih tertunda.

Kontrak endpoint​

  • LLM, embedding, dan reranker dipanggil melalui kontrak HTTP yang kompatibel dengan OpenAI atau dimiliki aplikasi.
  • LiteLLM adalah client yang menghadap aplikasi untuk pemanggilan model.
  • OCR diakses melalui endpoint service OCR yang dapat dikonfigurasi.
  • Template prompt diberi versi sebagai file di repo; hanya fragmen peran/audiens/bahasa agent-editorial yang boleh diambil dari Langfuse di balik kontrak milik kode (ADR-0006). Mengedit prompt lain di Langfuse tidak berpengaruh pada runtime.

Batas routing model per kasus penggunaan​

Batas saat ini

Service memilih satu keluarga model yang dikonfigurasi per peran untuk suatu environment. Mengubah model LLM, embedding, reranker, atau OCR adalah perubahan konfigurasi tingkat deployment, bukan entitlement per request. Profil A30 lokal menggunakan alokasi model di atas; pengaturan produksi dicatat dalam runbook yang ditautkan pada Tata letak runtime.

Lapisan routing model di masa mendatang dapat memetakan aplikasi atau kasus penggunaan ke endpoint dan pool penyajian khusus. Setiap keluarga model akan memerlukan evaluasi dataset Golden, validasi Bahasa Indonesia, dan pemeriksaan Government Policy Guard sendiri sebelum dipromosikan.