Masalah Utama LLM: Hallucination
Sebagai AI Systems Architect, satu masalah yang paling sering saya hadapi dari klien adalah: "Kenapa AI-nya jawabnya ngawur?" Ini masalah klasik LLM — hallucination. Model tidak punya akses ke data real-time dan cenderung "mengarang" jawaban.
RAG (Retrieval Augmented Generation) adalah solusi yang sudah saya buktikan di berbagai proyek di Bandung dan Indonesia. Intinya sederhana: sebelum LLM menjawab, kita retrieve dulu informasi relevan dari knowledge base, lalu kirimkan sebagai context.
Architectural Overview
Workflow RAG yang saya gunakan di production:
- Document Ingestion: Load → Split → Embed → Store ke vector DB
- Query Processing: User query → Embed → Search similar docs
- Generation: Retrieved context + original query → LLM → Answer
Implementasi Lengkap dengan Python
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
loader = PyPDFLoader("knowledge_base.pdf")
documents = loader.load()
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
chunks = splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4"),
retriever=vectorstore.as_retriever(
search_kwargs={"k": 3}
)
)
answer = qa_chain.invoke(
{"query": "Apa kebijakan refund perusahaan?"}
)
Tips Optimization dari Pengalaman Saya
Dari puluhan proyek RAG yang sudah saya kerjakan, berikut tips yang paling impact:
Chunking Strategy: Jangan asal split. Di pengalaman saya, RecursiveCharacterTextSplitter dengan chunk_size 1000 dan overlap 200 adalah starting point yang bagus. Tapi kamu perlu experiment — setiap domain punya sweet spot berbeda.
Hybrid Search: Gabungkan semantic search dengan keyword search. Di produksi, saya sering pakai BM25 + embedding search untuk hasil yang lebih akurat.
Reranking: Setelah retrieval, gunakan reranker untuk mengurutkan hasil. Ini bisa meningkatkan accuracy 15-25% dari pengalaman saya.
Evaluasi dan Monitoring
Jangan deploy RAG tanpa evaluasi. Saya biasanya menyiapkan test set 50-100 pertanyaan dan mengukur metrics: relevancy, accuracy, dan faithfulness. Gunakan frameworks seperti RAGAS untuk automated evaluation. Dalam pengalaman saya, RAG yang tidak di-evaluate sama saja seperti blind coding — kamu tidak tahu apakah sistemnya benar-benar bekerja atau tidak.
Kesalahan Umum dalam Implementasi RAG
Dari pengalaman saya, kesalahan paling umum adalah chunking yang terlalu kecil atau terlalu besar. Chunk terlalu kecil kehilangan konteks, chunk terlalu besar mengurangi precision retrieval. Saya selalu menyarankan untuk experiment dengan berbagai ukuran chunk dan mengukur retrieval accuracy untuk domain spesifik Anda.
Kesalahan lain adalah mengabaikan metadata. Metadata seperti judul dokumen, tanggal publish, dan kategori bisa sangat membantu meningkatkan relevancy retrieval. Saya sering menambahkan metadata filtering sebagai step tambahan sebelum vector search.
Multi-Modal RAG
Di pengalaman terbaru saya, RAG tidak hanya untuk teks. Multi-modal RAG yang memproses gambar, tabel, dan grafik dari dokumen menjadi semakin relevan. Untuk use case di Indonesia, banyak dokumen bisnis yang berisi tabel kompleks — kemampuan untuk retrieve dan memahami data tabular ini bisa menjadi competitive advantage yang signifikan.