AI Tools
RAG dan Knowledge Base untuk AI Agent
Panduan membuat knowledge base AI agent dengan RAG, embedding, vector database, retrieval, dan mini project AI Docs Assistant untuk naltech-dev-docs.
RAG dan Knowledge Base untuk AI Agent
RAG adalah singkatan dari Retrieval-Augmented Generation. RAG membuat AI bisa menjawab berdasarkan dokumen atau knowledge base yang kita miliki, bukan hanya dari pengetahuan umum model.
Tanpa RAG:
User bertanya
-> model menjawab dari pengetahuan internal dan context yang dikirim
Dengan RAG:
User bertanya
-> sistem mencari dokumen relevan
-> dokumen relevan dikirim ke model
-> model menjawab berdasarkan dokumen tersebut
RAG cocok untuk membuat agent yang bisa menjawab pertanyaan dari dokumentasi internal, catatan project, SOP, issue, changelog, atau knowledge base tim.
Kenapa Agent Butuh Knowledge Base?
Agent punya context window terbatas. Jika semua dokumen selalu dikirim ke model, token akan boros dan lambat.
Knowledge base membantu agent:
- mencari informasi yang relevan saja
- mengurangi token
- menjawab berdasarkan sumber internal
- menghindari jawaban terlalu umum
- membuat dokumentasi lebih berguna
- mempercepat onboarding developer
Contoh:
Pertanyaan:
"Bagaimana cara install 9Router di VPS?"
RAG:
-> cari halaman 9Router Proxy
-> ambil bagian install VPS
-> kirim bagian relevan ke model
-> model menjawab dengan sumber yang tepat
Konsep Penting
Document
Document adalah sumber pengetahuan.
Contoh:
- file Markdown
- issue GitHub
- changelog
- README
- SOP
- catatan meeting
- halaman docs
Chunk
Chunk adalah potongan kecil dari dokumen.
Dokumen panjang dipotong agar mudah dicari.
Contoh:
openclaw.md
-> chunk 1: pengertian OpenClaw
-> chunk 2: instalasi lokal
-> chunk 3: instalasi VPS
-> chunk 4: security
Embedding
Embedding adalah representasi angka dari teks.
Tujuannya agar sistem bisa mencari makna yang mirip, bukan hanya kata yang sama.
Contoh:
"install 9Router di VPS"
bisa mirip dengan:
"cara deploy 9Router pakai Docker di server"
Vector Database
Vector database menyimpan embedding dan mencari chunk yang paling mirip dengan pertanyaan.
Contoh tools:
- Chroma
- Qdrant
- LanceDB
- pgvector
- Supabase Vector
Retrieval
Retrieval adalah proses mencari chunk yang relevan.
Alur:
query user
-> embedding query
-> search vector database
-> ambil top-k chunk
-> kirim chunk ke model
Reranking
Reranking adalah menyusun ulang hasil retrieval agar chunk paling relevan naik ke atas.
Reranking berguna jika:
- dokumen banyak
- hasil retrieval sering meleset
- query ambigu
- top-k terlalu noisy
Alur RAG
Alur indexing:
Dokumen
-> parsing
-> cleaning
-> chunking
-> embedding
-> simpan ke vector database
Alur query:
Pertanyaan user
-> embedding query
-> retrieval dari vector database
-> ambil chunk relevan
-> masukkan ke prompt
-> model menjawab
-> tampilkan sumber
Kapan Perlu RAG?
Gunakan RAG jika:
- dokumen banyak
- pertanyaan sering merujuk knowledge base internal
- agent perlu menjawab berdasarkan sumber tertentu
- context terlalu besar jika dikirim semua
- butuh pencarian semantik
- ingin membangun docs assistant
Tidak perlu RAG jika:
- dokumen sedikit
- cukup baca 1-3 file langsung
- pertanyaan sederhana
- data sering berubah setiap detik
- butuh perhitungan, bukan pencarian dokumen
Prinsip:
Kalau sumbernya sedikit, baca langsung.
Kalau sumbernya banyak, gunakan RAG.
Tools RAG
Chroma
Chroma adalah vector database yang populer untuk eksperimen dan prototyping.
Cocok untuk:
- belajar RAG
- local development
- project kecil
- prototyping cepat
Kelebihan:
- mudah dipakai
- cocok untuk Python/TypeScript
- bisa local
- sederhana untuk pemula
Kekurangan:
- untuk production besar, perlu evaluasi lebih lanjut
- operasional tidak sekuat Qdrant/Postgres untuk beberapa use case
Qdrant
Qdrant adalah vector database yang kuat untuk semantic search.
Cocok untuk:
- production vector search
- filtering metadata
- deployment Docker/VPS/cloud
- dokumen lebih banyak
- search performa tinggi
Kelebihan:
- fokus vector search
- metadata filtering
- performa bagus
- bisa self-host
- dokumentasi kuat
Kekurangan:
- setup lebih serius dibanding Chroma
- perlu memahami collection/vector config
pgvector
pgvector adalah extension PostgreSQL untuk vector similarity search.
Cocok untuk:
- project yang sudah memakai PostgreSQL
- ingin data relasional dan vector dalam satu database
- aplikasi yang butuh query SQL + vector search
Kelebihan:
- tidak perlu database baru jika sudah pakai Postgres
- query SQL familiar
- bisa digabung dengan data bisnis
Kekurangan:
- tuning index perlu dipahami
- untuk vector search skala besar, dedicated vector DB bisa lebih cocok
LanceDB
LanceDB adalah database untuk vector search yang cocok untuk local/embedded dan data AI.
Cocok untuk:
- local RAG
- prototype
- data science workflow
- file-based vector store
Supabase Vector
Supabase Vector memakai PostgreSQL/pgvector.
Cocok untuk:
- aplikasi web
- project yang sudah memakai Supabase
- auth/database/storage dalam satu platform
LangChain dan LlamaIndex
LangChain dan LlamaIndex bukan vector database, tetapi framework untuk membangun aplikasi RAG/agent.
Cocok untuk:
- document loader
- chunking
- retrieval pipeline
- agent dengan tool RAG
- evaluasi dan eksperimen pipeline
LlamaIndex sangat cocok untuk document-centric RAG, sedangkan LangChain cocok untuk workflow/tooling yang lebih luas.
Embedding Model
Embedding model mengubah teks menjadi vector.
Pilihan:
- OpenAI embeddings
- Gemini embeddings
- Cohere embeddings
- Jina embeddings
- BGE / bge-m3
- Nomic embeddings
- Ollama embeddings
- Sentence Transformers
Kriteria memilih embedding:
- bahasa yang didukung
- kualitas retrieval
- biaya
- kecepatan
- ukuran vector
- bisa local atau cloud
Untuk bahasa Indonesia, pilih embedding multilingual jika memungkinkan.
Chunking Strategy
Chunking sangat penting. Banyak RAG gagal bukan karena vector DB, tetapi karena chunking buruk.
Strategi umum:
chunk size: 500-1200 token
overlap: 10-20%
Untuk Markdown:
- potong berdasarkan heading
- pertahankan judul section
- simpan metadata file dan heading
- jangan potong code block sembarangan
Contoh metadata:
{
"source": "src/content/docs/ai-tools/9router-proxy.md",
"title": "9Router Proxy",
"heading": "Cara Install 9Router di VPS",
"category": "AI Tools",
"updated": "2026-05-22"
}
Prompt RAG
Prompt untuk RAG harus memaksa model menjawab berdasarkan context.
Template:
Kamu adalah AI docs assistant.
Jawab pertanyaan user hanya berdasarkan context yang diberikan.
Jika context tidak cukup, jawab "informasi belum tersedia di dokumentasi".
Jangan mengarang.
Sertakan sumber file atau judul section jika tersedia.
Context:
[retrieved chunks]
Pertanyaan:
[user question]
Output:
Jawaban:
...
Sumber:
- 9Router Proxy > Cara Install 9Router di VPS
- AI Automation > Step by Step Membuat AI Automation
Mini Project: AI Docs Assistant untuk naltech-dev-docs
Tujuan:
Membuat assistant yang bisa menjawab pertanyaan dari dokumentasi naltech-dev-docs.
Contoh pertanyaan:
Bagaimana cara install 9Router di VPS?
Apa bedanya OpenClaw dan OpenCode?
Bagaimana membuat AI automation daily VPS report?
Kapan pakai local model?
Bagaimana membuat prompt agent yang aman?
Arsitektur sederhana
Markdown docs
-> indexer script
-> chunks + embeddings
-> vector database
-> query script/API
-> 9Router
-> answer with sources
Struktur folder
rag-docs-assistant/
.env
package.json
scripts/
index-docs.mjs
ask-docs.mjs
data/
chunks.json
vector-store/
Tahap 1: Load Markdown
Ambil semua file:
src/content/docs/**/*.md
Skip:
.env- file binary
- output build
- private notes
Tahap 2: Chunking
Untuk setiap Markdown:
1. baca frontmatter
2. ambil title, category, tags
3. split berdasarkan heading
4. pecah section panjang
5. simpan metadata
Tahap 3: Embedding
Gunakan embedding model:
Cloud embedding -> kualitas bagus, ada biaya
Local embedding -> lebih private, perlu setup
Jika lewat 9Router, pastikan provider embedding tersedia. Jika tidak, pakai embedding provider langsung atau local embedding.
Tahap 4: Simpan vector
Pilihan pemula:
Chroma atau LanceDB
Pilihan production:
Qdrant atau pgvector
Tahap 5: Query
Alur query:
User question
-> embed question
-> retrieve top 5 chunks
-> build prompt
-> ask model via 9Router
-> answer with sources
Tahap 6: Evaluasi
Buat daftar pertanyaan test:
1. Cara install 9Router di VPS?
2. Bagaimana OpenClaw dipakai di VPS?
3. Apa permission matrix untuk agent?
4. Bagaimana cost control AI?
5. Bagaimana local model dihubungkan ke 9Router?
Cek:
- apakah jawabannya benar?
- apakah sumbernya relevan?
- apakah model mengarang?
- apakah chunk yang diambil tepat?
Security untuk RAG
Jangan index file sensitif.
Jangan index:
.env- private key
- API key
- token
- database dump
- credential
- log mentah yang berisi secret
Tambahkan filter:
Skip file jika path mengandung:
.env
secret
private
credential
node_modules
dist
build
Masking:
API key -> [MASKED_API_KEY]
token -> [MASKED_TOKEN]
password -> [MASKED_PASSWORD]
Cost Control RAG
Biaya RAG muncul dari:
- embedding dokumen
- embedding query
- model answer
- re-index dokumen
- reranking
Cara hemat:
- index hanya dokumen penting
- chunk tidak terlalu kecil
- re-index hanya file yang berubah
- cache embedding
- batasi top-k retrieval
- batasi output
- gunakan model ringan untuk query sederhana
Aturan:
top-k awal: 5
max context chunk: 5-8 chunk
output: maksimal 1000-1500 token untuk jawaban docs
Common Problems
Jawaban ngawur
Penyebab:
- chunk tidak relevan
- prompt tidak memaksa jawab dari context
- retrieval buruk
- model terlalu bebas
Solusi:
- tambahkan instruksi “jawab hanya berdasarkan context”
- tampilkan sumber
- perbaiki chunking
- gunakan reranking
Dokumen relevan tidak muncul
Penyebab:
- embedding kurang cocok
- chunk terlalu besar/kecil
- metadata tidak dipakai
- query ambigu
Solusi:
- ubah chunk size
- tambah overlap
- gunakan embedding multilingual
- tambahkan keyword search/hybrid search
Token terlalu besar
Penyebab:
- top-k terlalu banyak
- chunk terlalu besar
- context panjang
- output terlalu panjang
Solusi:
- kurangi top-k
- ringkas chunk
- batasi output
- gunakan reranking sebelum model final
Informasi kadaluarsa
Penyebab:
- index tidak diperbarui
- dokumen berubah tapi vector lama
Solusi:
- simpan hash file
- re-index file yang berubah
- tampilkan
updateddari frontmatter
Rekomendasi untuk NalTech
Tahap belajar:
Markdown docs
-> script index sederhana
-> Chroma/LanceDB local
-> query via 9Router
Tahap lebih serius:
naltech-dev-docs
-> indexer incremental
-> Qdrant or pgvector
-> API docs assistant
-> Telegram/Discord bot
-> answer with sources
Gunakan RAG untuk:
- menjawab pertanyaan dari docs
- onboarding developer
- mencari tutorial internal
- menjelaskan setup project
- membuat FAQ otomatis
Jangan gunakan RAG untuk:
- membaca secret
- mengambil keputusan production tanpa review
- menggantikan dokumentasi yang belum ditulis
Checklist RAG
- Sumber dokumen jelas.
- File sensitif dikecualikan.
- Chunking berdasarkan heading.
- Metadata disimpan.
- Embedding model dipilih.
- Vector store dipilih.
- Query mengambil top-k chunk.
- Prompt melarang model mengarang.
- Jawaban menyertakan sumber.
- Ada test question.
- Ada re-index strategy.
- Usage token dipantau.
Kesimpulan
RAG membuat AI agent bisa memakai knowledge base internal tanpa mengirim semua dokumen ke model.
Pola terbaik:
Dokumen rapi
-> chunking bagus
-> embedding cocok
-> retrieval relevan
-> prompt yang ketat
-> jawaban dengan sumber
Untuk NalTech, mini project terbaik adalah AI Docs Assistant yang menjawab pertanyaan dari naltech-dev-docs. Ini akan membuat dokumentasi yang sudah dibuat menjadi benar-benar hidup dan bisa ditanya oleh agent.