📝 Artikel ini ditulis dalam Bahasa Indonesia
Seri Belajar LLM Part 4

RAG — Retrieval-Augmented Generation

Berikan LLM akses ke dokumen Anda: Vector DB, Embeddings, Chunking, Hybrid Search. Part 4 mengajarkan cara membangun RAG pipeline dari nol: embed dokumen, simpan di vector database, retrieve chunks relevan, dan augment prompt — sehingga LLM menjawab BERDASARKAN data Anda, bukan hallucination.

Maret 202630 menit bacaRAG • Vector DB • Embeddings • ChromaDB • Chunking
📚 Seri Belajar LLM:
1 2 3 4 5 6 7 8 9 10

Daftar Isi

  1. Masalah — LLM tidak tahu data Anda
  2. RAG Pipeline — Retrieve, Augment, Generate
  3. Embeddings — Kata sebagai vektor
  4. Vector Databases — ChromaDB, Pinecone, Qdrant
  5. Chunking — Cara memotong dokumen
  6. Kode: RAG Pipeline — 30 baris Python
  7. Advanced RAG — Reranking, Hybrid Search, Agentic RAG
  8. Evaluasi RAG — Faithfulness, Relevance, Answer Quality
  9. Ringkasan
🔍

1. Masalah: LLM Tidak Tahu Data Internal Anda

LLM tahu internet, tapi tidak tahu dokumen HR, SOP, atau data terbaru perusahaan Anda

LLM dilatih pada data internet sampai cutoff date tertentu. Mereka tidak tahu: dokumen internal perusahaan, data setelah cutoff, informasi privat, atau konteks spesifik bisnis Anda. RAG (Retrieval-Augmented Generation) menyelesaikan ini: sebelum LLM menjawab, sistem mencari dokumen relevan dari database Anda dan menyertakannya sebagai konteks dalam prompt. Hasilnya: LLM menjawab berdasarkan dokumen Anda, bukan dari training data yang mungkin outdated atau tidak relevan.

RAG Pipeline — Dari Query ke Grounded Answer

Query"kebijakan cuti?" Embed + SearchVector DBTop-K chunks Augment PromptQuery + Context"Based on docs..." LLMGenerate answer Grounded Answer"Cuti 12 hari/tahunsesuai kebijakan..." RAG = Retrieval + Augmentation + Generation. LLM menjawab BERDASARKAN dokumen Anda, bukan dari training data.
💻

2. Kode: RAG Pipeline Lengkap

ChromaDB + OpenAI dalam 30 baris
09_rag_pipeline.py
# pip install chromadb openai import chromadb from openai import OpenAI client = OpenAI() db = chromadb.Client() collection = db.get_or_create_collection("company_docs") # 1. INGEST: masukkan dokumen (sekali saja) docs = [ "Kebijakan cuti: karyawan tetap mendapat 12 hari cuti per tahun.", "Proses reimburse: submit via app HR dalam 7 hari kerja.", "Jam kerja: Senin-Jumat 09:00-17:00, WFH Jumat.", ] collection.add(documents=docs, ids=["d1","d2","d3"]) # 2. RETRIEVE: cari dokumen relevan results = collection.query( query_texts=["berapa hari cuti karyawan?"], n_results=3 ) # 3. GENERATE: augment prompt + LLM context = "\n".join(results["documents"][0]) response = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "Jawab HANYA berdasarkan konteks."}, {"role": "user", "content": f"Konteks:\n{context}\n\nPertanyaan: berapa hari cuti?"} ] ) print(response.choices[0].message.content) # "Karyawan tetap mendapat 12 hari cuti per tahun."
📊

3. Vector Databases — Tempat Menyimpan Embeddings

Pilih yang tepat untuk use case Anda
DatabaseTypeBest ForPricingScalability
ChromaDBOpen-source, localPrototype, small projectsFreeSingle machine
PineconeManaged cloudProduction, zero-ops$$$Auto-scale
WeaviateOpen-source, hybridHybrid search (vector+keyword)Free/$Kubernetes
QdrantOpen-source, RustHigh performanceFree/$Distributed
pgvectorPostgreSQL extensionAlready using PostgresFreeWith PG

4. Chunking Strategies — Cara Memotong Dokumen

Chunk size sangat mempengaruhi kualitas retrieval
StrategyChunk SizeProConBest For
Fixed Size500-1000 charsSimple, konsistenBisa potong tengah kalimatQuick prototype
Sentence-based3-5 sentencesNatural boundariesUkuran bervariasiArticles, reports
RecursiveAdaptiveRespect document structureLebih kompleksLong documents
SemanticBy topicBest relevanceButuh embedding modelProduction RAG
Parent-ChildSection + subsectionRetrieves context hierarchyComplex setupEnterprise docs
🔧

5. Advanced RAG Techniques

Reranking, Hybrid Search, Query Expansion, Agentic RAG
TechniqueApa ItuImpact
RerankingSort retrieved chunks by relevance (cross-encoder)+ 10-20% relevance
Hybrid SearchVector search + keyword search (BM25) combinedBetter for exact terms
Query ExpansionRephrase query into multiple variationsBetter recall
HyDEGenerate hypothetical answer, then search for similar docsCreative retrieval
Agentic RAGLLM decides what to search, iterates if neededBest quality, slower
LLM
Tech Review Desk — Seri Belajar LLM
Sumber: Sebastian Raschka, Anthropic, OpenAI, Hugging Face, LLMOrbit, DeepSeek technical reports.
rominur@gmail.com  •  t.me/Jekardah_AI