Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SISTEM OTOMATISASI PEMBUATAN QUERY SQL MENGGUNAKAN SEMANTIC EMBEDDING DAN LARGE LANGUAGE MODEL (LLM)

Sistem ini merupakan aplikasi full-stack berbasis AI yang dirancang untuk melakukan otomatisasi pembuatan query SQL dari bahasa alami. Sistem mendukung arsitektur multi-database dengan kemampuan dynamic connection switching antar database rumah sakit, serta memanfaatkan Semantic Embedding dan Large Language Model (LLM) untuk menghasilkan query SQL yang kontekstual dan akurat.


🧩 Deskripsi Umum Sistem

Aplikasi memungkinkan pengguna untuk menuliskan pertanyaan dalam bahasa alami (Bahasa Indonesia), kemudian sistem akan:

  1. Menentukan database rumah sakit yang relevan
  2. Mengambil konteks skema dan knowledge base menggunakan embedding
  3. Menghasilkan query SQL secara otomatis menggunakan LLM
  4. Menjalankan query ke database tujuan
  5. Menampilkan hasil query secara real-time pada antarmuka pengguna

Sistem ini sangat cocok digunakan pada lingkungan dengan banyak database terpisah namun memiliki struktur serupa, seperti sistem informasi rumah sakit.


🚀 Tech Stack Overview

🔹 Backend

  • NestJS — Framework backend berbasis TypeScript yang scalable

  • Prisma ORM — Manajemen skema dan koneksi multi-database

  • PostgreSQL (Dockerized) — Database relasional dengan dukungan multi schema

  • Ollama — Local embedding service

    • Model embedding: bge atau nomic
  • OpenRouter API — Penyedia Large Language Model (LLM)

    • Model LLM:

      • deepseek/deepseek-r1-distill-qwen-32b
      • deepseek/deepseek-r1-distill-llama-70b

🔹 Frontend

  • React + Vite — Antarmuka pengguna modern dan cepat
  • TailwindCSS — Styling responsif dan efisien

⚙️ Fitur Utama Sistem

  • ✅ Konversi bahasa alami menjadi query SQL secara otomatis
  • ✅ Dynamic database switching antar rumah sakit (rs_a_db, rs_b_db, dll.)
  • ✅ Arsitektur multi-schema (public dan rag)
  • ✅ Eksekusi SQL dan visualisasi hasil secara real-time
  • ✅ Integrasi semantic embedding untuk query yang lebih kontekstual
  • ✅ Mendukung lebih dari satu model embedding dan LLM

🧠 Arsitektur Sistem

User Query
   ↓
Frontend (React)
   ↓
Backend API (NestJS)
   ↓
Dynamic Database Selector
   ↓
Prisma Client (Multi-Database)
   ↓
Embedding Generator (Ollama: bge / nomic)
   ↓
LLM via OpenRouter (DeepSeek)
   ↓
PostgreSQL (rs_a_db, rs_b_db, rs_c_db, ...)
   ↓
Query Result → Frontend UI

🌍 Konfigurasi Environment

Buat file .env di dalam direktori backend/:

# ===============================
# 🌐 DATABASE CONFIGURATION
# ===============================

# Default database (metadata sistem)
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/rsmu_db?schema=public"

# Shadow database untuk Prisma migration
SHADOW_DATABASE_URL="postgresql://postgres:postgres@localhost:5433/rsmu_shadow?schema=public"

# ===============================
# 🧠 AI & EMBEDDING CONFIGURATION
# ===============================

# Ollama (Embedding Service)
OLLAMA_URL="http://localhost:11434"

# OpenRouter (LLM)
OPENROUTER_API_KEY="your-openrouter-api-key"

# ===============================
# ⚙️ APPLICATION CONFIG
# ===============================
PORT=3000
FRONTEND_URL="http://localhost:5173"

🏥 Struktur Database Rumah Sakit

Setiap rumah sakit menggunakan database terpisah dengan format nama:

rs_a_db
rs_b_db
rs_c_db
rs_d_db

Setiap database memiliki dua schema utama:

  • public — Data utama sistem (pasien, dokter, transaksi, dll.)
  • rag — Knowledge base embedding untuk semantic retrieval

🐳 Menjalankan Proyek

1️⃣ Clone Repository

git clone https://github.com/Dindamaharn/LLM-Project-SQL-Query-Generator.git
cd LLM-Project-SQL-Query-Generator

2️⃣ Menjalankan Database (Docker)

docker compose up -d

Database tersedia di:

localhost:5433

3️⃣ Menjalankan Backend

cd backend
npm install
npx prisma migrate dev --name init
npm run start:dev

Backend berjalan di:

http://localhost:3000

4️⃣ Menjalankan Frontend

cd ../frontend
npm install
npm run dev

Frontend berjalan di:

http://localhost:5173

🧩 Contoh Alur Penggunaan

🧠 Input Pengguna

“Tampilkan semua pasien yang dirawat bulan lalu di RS_C”

⚙️ Alur Sistem

  1. Sistem menentukan database aktif → rs_c_db
  2. Mengambil konteks menggunakan embedding (bge / nomic)
  3. Mengirim prompt ke LLM melalui OpenRouter (DeepSeek)
  4. LLM menghasilkan query SQL yang sesuai
  5. Query dijalankan pada schema yang relevan (public / rag)
  6. Hasil ditampilkan secara real-time di UI

📌 Catatan

  • Sistem mendukung pengembangan lebih lanjut untuk penambahan rumah sakit baru
  • Model embedding dan LLM dapat diganti tanpa mengubah arsitektur utama
  • Cocok digunakan sebagai sistem SQL assistant berbasis AI di lingkungan enterprise

Dikembangkan sebagai proyek eksplorasi integrasi Semantic Embedding dan LLM dalam sistem basis data multi-tenant.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages