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
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
💻
2. Kode: RAG Pipeline Lengkap
ChromaDB + OpenAI dalam 30 baris
09_rag_pipeline.py
# pip install chromadb openaiimport 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."