Skip to content

Repository files navigation

RAGDiva

Sistem Informasi Arsip Digital dan Visitasi Akreditasi (Ardiva) yang dilengkapi dengan Retrieval Augmented Generation (RAG)

Tech Stack

Sistem Informasi ini dibangun menggunakan

  • Hono.js sebagai Backend
  • Langchain.js sebagai Agentic AI
  • Milvus sebagai VectorDB
  • MySQL sebagai Database
  • Prisma sebagai ORM
  • RabbitMQ sebagai Message Broker
  • MarkItDown sebagai Document Converter
  • React.js sebagai Front End
  • Tanstack Routes dan Tanstack Query sebagai Pendukung

Instalasi

Konfigurasi .env backend

cp ragdiva-backend/.env.docker .env.bak
nano ragdiva-backend/.env.docker

Jalankan docker

Instalasi Docker : https://docs.docker.com/engine/install/

docker compose up -d

Screenshot

alt text alt text alt text


Struktur Folder

Proyek RAGDiva dibagi menjadi beberapa modul/service yang masing-masing berjalan sebagai container terpisah dan diatur oleh docker-compose.yaml di root.

Ragdiva/
├── docker-compose.yaml              # Orkestrasi seluruh service
├── readme.md
├── images/                          # Aset screenshot dokumentasi
│
├── ragdiva-backend/                 # Service: REST API & AI Agent
│   ├── Dockerfile
│   ├── package.json
│   ├── tsconfig.json
│   ├── prisma.config.ts
│   ├── prisma/
│   │   ├── schema.prisma            # Definisi skema database MySQL
│   │   └── migrations/              # Riwayat migrasi database
│   ├── files/                       # Penyimpanan file yang diupload
│   └── src/
│       ├── index.ts                 # Entry point aplikasi Hono.js
│       ├── setup-admin.ts           # Script inisialisasi akun admin
│       ├── routes/                  # Definisi endpoint HTTP (router)
│       ├── handlers/                # Handler tiap endpoint (controller)
│       ├── services/                # Business logic & orkestrasi
│       ├── repositories/            # Query ke database via Prisma
│       ├── middleware/              # Auth, validasi request, dsb.
│       ├── schema/                  # Validasi input (Zod schema)
│       ├── types/                   # TypeScript type & interface
│       ├── utils/                   # Helper & fungsi utilitas
│       ├── tools/                   # Tool yang digunakan oleh AI agent
│       └── lib/                     # Modul infrastruktur & integrasi
│           ├── agent/               # LangChain.js AI agent & chain
│           ├── broadcast/           # Server-Sent Events (SSE)
│           ├── database/            # Koneksi Prisma client
│           ├── embedding/           # Model embedding teks
│           ├── milvus/              # Koneksi & operasi Vector DB
│           ├── rabbitmq/            # Publisher & consumer pesan
│           ├── semaphore/           # Kontrol konkurensi proses
│           └── text-splitter/       # Pemotongan teks untuk indexing
│
├── ragdiva-frontend/                # Service: Antarmuka Pengguna
│   ├── Dockerfile
│   ├── vite.config.ts
│   ├── index.html                   # Entry point HTML
│   └── src/
│       ├── main.tsx                 # Entry point React
│       ├── index.css                # Global stylesheet
│       ├── routes/                  # Definisi rute TanStack Router
│       ├── pages/                   # Komponen halaman
│       ├── features/                # Fitur mandiri (chat, arsip, dsb.)
│       ├── components/              # Komponen UI yang dapat digunakan ulang
│       ├── hooks/                   # Custom React hooks
│       ├── context/                 # React context providers
│       ├── providers/               # Provider wrapper (auth, query, dsb.)
│       ├── middleware/              # Middleware navigasi/autentikasi
│       ├── lib/                     # Utilitas & konfigurasi library
│       └── types/                   # TypeScript type definitions
│
├── ragdiva-document-converter/      # Service: Konversi Dokumen (Python)
│   ├── Dockerfile
│   ├── main.py                      # Entry point worker
│   ├── requirements.txt
│   └── app/
│       ├── config.py                # Konfigurasi dari environment
│       ├── converter.py             # Logika konversi via MarkItDown
│       └── worker.py                # Consumer RabbitMQ & proses konversi
│
└── ragdiva-reverse-proxy/           # Service: Reverse Proxy
    ├── Dockerfile
    └── nginx.conf                   # Konfigurasi routing Nginx

Penjelasan Sumber Daya Pemrograman

ragdiva-backend

Ditulis dalam TypeScript dengan runtime Node.js menggunakan framework Hono.js yang ringan dan berkinerja tinggi.

Sumber Daya Keterangan
src/index.ts Entry point — mendaftarkan middleware global, routes, dan memulai server
src/routes/ Mendefinisikan grup endpoint HTTP; setiap file mewakili satu domain fitur
src/handlers/ Menerima request HTTP, memanggil service, mengembalikan response
src/services/ Mengandung logika bisnis utama; mengorkestrasikan repository dan library
src/repositories/ Lapisan akses data; semua query ke MySQL dilakukan melalui Prisma ORM
src/middleware/ Autentikasi JWT, validasi request, dan penanganan error global
src/schema/ Validasi payload request menggunakan Zod
src/tools/ Fungsi-fungsi yang dapat dipanggil oleh AI agent (tool calling)
src/lib/agent/ Konfigurasi LangChain.js — agent, chain, dan memory
src/lib/milvus/ Wrapper koneksi dan operasi CRUD ke Milvus Vector DB
src/lib/rabbitmq/ Publisher dan consumer pesan untuk antrian pemrosesan dokumen
src/lib/embedding/ Modul untuk menghasilkan vektor embedding dari teks dokumen
src/lib/broadcast/ Implementasi Server-Sent Events untuk streaming respons AI
prisma/schema.prisma Mendefinisikan model data (User, File, Kriteria, dsb.) untuk MySQL

ragdiva-frontend

Ditulis dalam TypeScript dengan React.js dan di-bundle menggunakan Vite.

Sumber Daya Keterangan
src/main.tsx Entry point React; mendaftarkan router dan provider global
src/routes/ Definisi rute aplikasi menggunakan TanStack Router
src/pages/ Komponen tingkat halaman yang di-render oleh router
src/features/ Fitur mandiri (mis. chat/, file-manager/) dengan komponen dan logika sendiri
src/components/ Komponen UI generik yang dipakai ulang lintas fitur
src/hooks/ Custom hooks untuk logika yang dapat dipakai ulang (mis. useAuth)
src/providers/ Wrapper global: TanStack Query, session, tema, dsb.
src/middleware/ Penjaga rute (route guard) berbasis status autentikasi
src/lib/ Konfigurasi klien HTTP (fetch/axios), helper format, dsb.

ragdiva-document-converter

Ditulis dalam Python 3, berjalan sebagai worker yang mendengarkan antrian RabbitMQ.

Sumber Daya Keterangan
main.py Entry point; menginisialisasi koneksi dan menjalankan worker loop
app/config.py Membaca variabel environment (URL RabbitMQ, Milvus, dsb.)
app/converter.py Menggunakan library MarkItDown untuk mengkonversi file ke Markdown
app/worker.py Consumer RabbitMQ; menerima pesan, menjalankan konversi, menyimpan hasil ke Milvus

ragdiva-reverse-proxy

Konfigurasi Nginx yang bertindak sebagai pintu masuk tunggal (single entry point) ke seluruh layanan.

Sumber Daya Keterangan
nginx.conf Mendefinisikan routing: /api/* diteruskan ke backend, / diteruskan ke frontend

About

Ardiva (STB SPME) with Retrieval Augmented Generation

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages