Program Reseller Cloud: Jual kembali Cloud VPS & Residential Proxy di bawah brand Anda 100% Whitelabel.Pelajari Reseller
Kembali ke Blog
CATATAN REKAYASA

Cara Membangun Sistem RAG (Retrieval-Augmented Generation) yang Tangguh dengan Node.js dan LLM

Dahono AI9 September 2026135 pembaca
Cara Membangun Sistem RAG (Retrieval-Augmented Generation) yang Tangguh dengan Node.js dan LLM

Halo, tech enthusiast! Selamat datang kembali di blog Dahono. Dalam era perkembangan kecerdasan buatan yang sangat pesat ini, tantangan terbesar bagi developer bukan lagi bagaimana mengakses Model Bahasa Besar (LLM), melainkan bagaimana membuat LLM tersebut memahami konteks data privat kita sendiri.

Jika Anda mencoba bertanya kepada ChatGPT tentang dokumen internal perusahaan Anda, tentu ia tidak akan tahu jawabannya. Di sinilah arsitektur Retrieval-Augmented Generation (RAG) berperan penting. RAG memungkinkan kita menggabungkan pencarian berbasis vektor (vector search) dengan kemampuan generatif LLM.

Di artikel praktis kali ini, kita akan membangun sistem RAG sederhana namun sangat tangguh menggunakan Node.js. Mari kita mulai!


Prasyarat

Sebelum masuk ke baris kode, pastikan Anda telah menyiapkan:

  • Node.js versi 18 atau yang lebih baru.
  • Akun dan API Key untuk penyedia LLM (seperti OpenAI atau melalui AI gateway).
  • Pemahaman dasar tentang async/await di JavaScript.

Langkah 1: Inisialisasi Proyek dan Instalasi Dependensi

Buat direktori baru untuk proyek Anda, laluinisialisasi proyek Node.js:

mkdir dahono-rag-demo
cd dahono-rag-demo
npm init -y

Selanjutnya, instal pustaka yang kita butuhkan untuk mengatur koneksi HTTP dan manipulasi data:

npm install dotenv node-fetch

Jangan lupa untuk membuat file .env di root direktori Anda untuk menyimpan kunci API:

PORT=3000
LLM_API_KEY=your_api_key_here

Langkah 2: Mempersiapkan Fungsi Embedding dan Pencarian Konteks

Dalam sistem RAG standar, dokumen teks dipecah menjadi beberapa bagian (chunks), diubah menjadi vektor angka melalui proses embedding, dan disimpan di dalam database vektor. Untuk kebutuhan tutorial ini, kita akan mensimulasikan fungsi pencarian konteks dokumen internal.

Buat file baru bernama ragService.js:

import fetch from 'node-fetch';
import dotenv from 'dotenv';
dotenv.config();

// Simulasi database pengetahuan internal perusahaan
const knowledgeBase = [
  {
    id: 1,
    content: "Kebijakan cuti karyawan Dahono memberikan hak cuti tahunan sebanyak 12 hari kerja setelah masa kerja 1 tahun."
  },
  {
    id: 2,
    content: "Prosedur klaim penggantian biaya kesehatan (reimburse) medis mewajibkan pengunggahan kuitansi asli maksimal 7 hari setelah tanggal berobat."
  }
];

// Fungsi sederhana untuk mencari relevansi konteks berdasarkan kata kunci
function retrieveContext(query) {
  const lowerQuery = query.toLowerCase();
  const matched = knowledgeBase.filter(item => 
    lowerQuery.split(' ').some(word => item.content.toLowerCase().includes(word))
  );
  
  return matched.length > 0 
    ? matched.map(m => m.content).join('\n') 
    : "Tidak ada informasi spesifik yang ditemukan di database internal.";
}

export async function generateRAGResponse(userQuery) {
  const retrievedContext = retrieveContext(userQuery);

  const prompt = `
Anda adalah asisten AI korporat yang cerdas. Gunakan konteks di bawah ini untuk menjawab pertanyaan pengguna dengan akurat.

Konteks:
${retrievedContext}

Pertanyaan Pengguna:
${userQuery}

Jawaban:
  `;

  // Mengirim permintaan ke LLM (Contoh menggunakan endpoint OpenAI)
  const response = await fetch('https://api.openai.com/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.LLM_API_KEY}`
    },
    body: JSON.stringify({
      model: 'gpt-4o-mini',
      messages: [{ role: 'user', content: prompt }],
      temperature: 0.3
    })
  });

  const data = await response.json();
  return data.choices[0].message.content;
}

Langkah 3: Membuat Server Express untuk Menjalankan API RAG

Sekarang, mari kita buat server sederhana menggunakan modul HTTP bawaan Node.js atau kerangka kerja pilihan Anda agar sistem RAG ini bisa diakses lewat endpoint.

Buat file server.js:

import http from 'http';
import { URL } from 'url';
import { generateRAGResponse } from './ragService.js';
import dotenv from 'dotenv';
dotenv.config();

const server = http.createServer(async (req, res) => {
  const parsedUrl = new URL(req.url, `http://${req.headers.host}`);

  if (req.method === 'POST' && parsedUrl.pathname === '/api/ask') {
    let body = '';
    req.on('data', chunk => {
      body += chunk.toString();
    });
    
    req.on('end', async () => {
      try {
        const { query } = JSON.parse(body);
        if (!query) {
          res.writeHead(400, { 'Content-Type': 'application/json' });
          res.end(JSON.stringify({ error: 'Query tidak boleh kosong!' }));
          return;
        }

        const answer = await generateRAGResponse(query);
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ success: true, answer }));
      } catch (error) {
        res.writeHead(500, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ error: error.message }));
      }
    });
  } else {
    res.writeHead(404, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ error: 'Endpoint tidak ditemukan' }));
  }
});

const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
  console.log(`Server RAG berjalan di port ${PORT}`);
});

Jalankan aplikasi Anda dengan perintah:

node server.js

Mengoptimalkan Infrastruktur AI Anda

Dalam implementasi skala enterprise, mengelola manajemen token, rate limiting, dan kegagalan failover antar model LLM (seperti berpindah dari OpenAI ke Claude atau model open-source) bisa menjadi mimpi buruk.

Jika Anda ingin mengelola lalu lintas API LLM secara efisien, aman, dan tanpa mengubah banyak kode, Anda bisa memanfaatkan Dahono Router sebagai AI Gateway terpusat yang menangani load balancing, fallback, serta cost tracking secara otomatis.

Selain itu, jika kebutuhan Anda merambah ke ranah analisis dokumen hukum yang kompleks, Anda dapat mengeksplorasi solusi inovatif dari Dahono Labs yang berfokus pada riset Legal AI mutakhir, atau gunakan layanan profesional kami melalui Dahono Consulting untuk konsultasi non-litigasi dan implementasi teknologi AI yang aman di perusahaan Anda.

Kesimpulan

Dengan menggabungkan Node.js dan arsitektur RAG, Anda kini memiliki fondasi yang kuat untuk membangun aplikasi cerdas berbasis data internal yang akurat dan minim halusinasi. Teruslah bereksperimen, dan sampai jumpa di artikel tutorial teknologi berikutnya!

KATEGORI

RAG Node.jsRetrieval-Augmented Generationtutorial LLM JavaScriptintegrasi OpenAI APIDahono Routerpengembangan AI