{"id":399,"date":"2026-07-09T10:34:36","date_gmt":"2026-07-09T03:34:36","guid":{"rendered":"https:\/\/komunitech.com\/blog\/?p=399"},"modified":"2026-07-11T15:56:56","modified_gmt":"2026-07-11T08:56:56","slug":"cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step","status":"publish","type":"post","link":"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/","title":{"rendered":"Cara Bikin RAG Agent dengan LangChain: Panduan Step-by-Step"},"content":{"rendered":"<p><strong>tl;dr:<\/strong> RAG (Retrieval-Augmented Generation) bikin LLM bisa jawab pertanyaan berbasis dokumen kamu, bukan cuma modal ingatan trainingnya. Pakai LangChain, tinggal load dokumen \u2192 split jadi chunks \u2192 embed ke vector store \u2192 retrieve \u2192 gabung sama LLM chain. Panduan ini step-by-step dari instalasi sampai upgrade ke RAG Agent yang bisa multi-tool.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<label for=\"ez-toc-cssicon-toggle-item-6a9338ad4f191\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"ez-toc-cssicon\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a9338ad4f191\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Pendahuluan\" >Pendahuluan<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Apa_Itu_RAG_dan_Kenapa_Penting\" >Apa Itu RAG dan Kenapa Penting?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Problem_yang_Dipecahkan_RAG\" >Problem yang Dipecahkan RAG<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Arsitektur_RAG_Standard\" >Arsitektur RAG Standard<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_1_Instalasi_Dependensi\" >Step 1: Instalasi Dependensi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_2_Load_Dokumen\" >Step 2: Load Dokumen<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Load_PDF\" >Load PDF<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#documents0page_content_-%3E_teks_halaman_1\" >documents[0].page_content -&gt; teks halaman 1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#documents0metadata_-%3E_source_page_1_Load_Web_Page_from_langchain_communitydocument_loaders_import_WebBaseLoader\" >documents[0].metadata    -&gt; {'source': '...', 'page': 1}\nLoad Web Page\nfrom langchain_community.document_loaders import WebBaseLoader<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Load_CSV_Excel\" >Load CSV \/ Excel<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_3_Split_Dokumen_Jadi_Chunks\" >Step 3: Split Dokumen Jadi Chunks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_4_Buat_Vector_Embeddings_Simpan\" >Step 4: Buat Vector Embeddings &amp; Simpan<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Pilih_model_embedding\" >Pilih model embedding<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Buat_vector_store_dan_simpan_embeddings\" >Buat vector store dan simpan embeddings<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_5_Buat_Retriever\" >Step 5: Buat Retriever<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Advanced_retriever_dengan_similarity_score_threshold\" >Advanced: retriever dengan similarity score threshold<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Advanced_MMR_Maximum_Marginal_Relevance_%E2%80%94_variasi_hasil\" >Advanced: MMR (Maximum Marginal Relevance) \u2014 variasi hasil<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_6_Buat_RAG_Chain\" >Step 6: Buat RAG Chain<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Inisialisasi_model\" >Inisialisasi model<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Template_prompt_RAG\" >Template prompt RAG<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Helper_gabungkan_dokumen_jadi_teks\" >Helper: gabungkan dokumen jadi teks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#RAG_Chain_menggunakan_LCEL\" >RAG Chain menggunakan LCEL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Jalankan\" >Jalankan!<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Step_7_Upgrade_ke_RAG_Agent\" >Step 7: Upgrade ke RAG Agent<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Tools_untuk_agent\" >Tools untuk agent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Buat_RAG_Agent\" >Buat RAG Agent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Test\" >Test<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Advanced_RAG_Techniques\" >Advanced RAG Techniques<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#1_Parent_Document_Retriever\" >1. Parent Document Retriever<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#2_Hybrid_Search_BM25_Vector\" >2. Hybrid Search (BM25 + Vector)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#RAG_vs_Fine-Tuning\" >RAG vs Fine-Tuning<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#RAG_Agent_x_KomuniTech\" >RAG Agent x KomuniTech<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#FAQ\" >FAQ<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Q_Berapa_biaya_operasional_RAG_agent\" >Q: Berapa biaya operasional RAG agent?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Q_Apakah_RAG_bisa_handle_dokumen_berformat_PDF_dengan_tabel\" >Q: Apakah RAG bisa handle dokumen berformat PDF dengan tabel?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Q_Model_embedding_apa_yang_terbaik_untuk_Bahasa_Indonesia\" >Q: Model embedding apa yang terbaik untuk Bahasa Indonesia?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Q_Gimana_cara_update_dokumen_di_RAG_tanpa_rebuild_semua\" >Q: Gimana cara update dokumen di RAG tanpa rebuild semua?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Q_Apa_kelemahan_RAG\" >Q: Apa kelemahan RAG?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Disclaimer\" >Disclaimer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#dYOR_Do_Your_Own_Research\" >dYOR (Do Your Own Research)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Saatnya_Bangun_AI_Agent-mu\" >Saatnya Bangun AI Agent-mu!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#%F0%9F%91%89_Gabung_KomuniTech_sekarang_dan_bikin_RAG_agent_pertamamu\" >\ud83d\udc49 Gabung KomuniTech sekarang dan bikin RAG agent pertamamu!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-bikin-rag-agent-dengan-langchain-panduan-step-by-step\/#Referensi\" >Referensi<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Pendahuluan\"><\/span>Pendahuluan<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>LLM seperti GPT-4o dan Gemini memang pintar. Tapi mereka punya kelemahan fatal: <strong>data training terpotong di tanggal tertentu<\/strong> dan <strong>sering hallucinate<\/strong> kalau ditanya hal spesifik tentang dokumen internal perusahaan.<\/p>\n<p>Solusinya? <strong>RAG (Retrieval-Augmented Generation).<\/strong><\/p>\n<p>RAG adalah arsitektur yang menggabungkan dua kekuatan:<\/p>\n<p>1. <strong>Retrieval<\/strong> \u2014 Mencari data relevan dari database, dokumen, atau API eksternal<\/p>\n<p>2. <strong>Generation<\/strong> \u2014 Menggunakan LLM untuk merangkum jawaban berdasarkan data yang ditemukan<\/p>\n<p>Hasilnya? Agent yang bisa menjawab pertanyaan berdasarkan dokumen kamu \u2014 bukan cuma modal ingatan LLM.<\/p>\n<p>Di panduan ini, kamu akan belajar <a href=\"\/blog\/ai-agent\/cara-kerja-ai-agent-dari-prompt-ke-aksi-otonom\/\">cara bikin RAG agent<\/a> <a href=\"https:\/\/komunitech.com\/blog\/ai-agent\/cara-belajar-bikin-ai-agent-dari-nol-sampai-deploy-pakai-openclaw-2026\/\">dari nol<\/a> menggunakan LangChain. Langsung praktik, kode bisa dicopy-paste.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Apa_Itu_RAG_dan_Kenapa_Penting\"><\/span>Apa Itu RAG dan Kenapa Penting?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Problem_yang_Dipecahkan_RAG\"><\/span>Problem yang Dipecahkan RAG<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<tr>\n<td>\n<p><strong>Problem<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Tanpa RAG<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Dengan RAG<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Data terbaru<\/p>\n<\/td>\n<td>\n<p>LLM hanya tahu data sampai cutoff date<\/p>\n<\/td>\n<td>\n<p>Agent bisa akses dokumen terbaru kapan saja<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Data privat<\/p>\n<\/td>\n<td>\n<p>LLM tidak tahu data internal perusahaan<\/p>\n<\/td>\n<td>\n<p>Dokumen internal bisa dijadikan sumber<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Hallucination<\/p>\n<\/td>\n<td>\n<p>Sering jawab ngasal kalau tidak tahu<\/p>\n<\/td>\n<td>\n<p>Jawaban berdasarkan konteks yang diberikan<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Biaya<\/p>\n<\/td>\n<td>\n<p>Fine-tuning mahal dan perlu ulang<\/p>\n<\/td>\n<td>\n<p>Zero training \u2014 cukup upload dokumen<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Update pengetahuan<\/p>\n<\/td>\n<td>\n<p>Harus retrain model<\/p>\n<\/td>\n<td>\n<p>Tinggal ganti dokumen sumber<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"Arsitektur_RAG_Standard\"><\/span>Arsitektur RAG Standard<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                    \u2502  Dokumen    \u2502\n                    \u2502  PDF\/Web\/DB \u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                           \u25bc\n                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                    \u2502  Text Split \u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                           \u25bc\n                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                    \u2502  Embedding  \u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                           \u25bc\n                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                    \u2502 Vector Store\u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                           \u2502\n    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n    \u2502            Query     \u2502                      \u2502\n    \u2502              \u2502       \u2502                      \u2502\n    \u2502              \u25bc       \u25bc                      \u2502\n    \u2502       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510                      \u2502\n    \u2502       \u2502  Retriever   \u2502                      \u2502\n    \u2502       \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518                      \u2502\n    \u2502              \u2502 Retrieved Documents           \u2502\n    \u2502              \u25bc                               \u2502\n    \u2502       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510                      \u2502\n    \u2502       \u2502  LLM + Prompt\u2502                      \u2502\n    \u2502       \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518                      \u2502\n    \u2502              \u25bc                               \u2502\n    \u2502       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510                      \u2502\n    \u2502       \u2502   Jawaban    \u2502                      \u2502\n    \u2502       \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518                      \u2502\n    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_1_Instalasi_Dependensi\"><\/span>Step 1: Instalasi Dependensi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Pertama, install semua package yang dibutuhkan:<\/p>\n<pre><code class=\"language-python\">pip install -U langchain langchain-openai langchain-chroma\npip install pypdf         # Untuk baca PDF\npip install beautifulsoup4 requests  # Untuk web scraping<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_2_Load_Dokumen\"><\/span>Step 2: Load Dokumen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>LangChain punya <strong>Document Loaders<\/strong> untuk berbagai format. Berikut beberapa yang paling berguna:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Load_PDF\"><\/span>Load PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-python\">from langchain_community.document_loaders import PyPDFLoader\n\nloader = PyPDFLoader(\"laporan-keuangan-2025.pdf\")\ndocuments = loader.load()\nprint(f\"Total halaman: {len(documents)}\")\n<h1><span class=\"ez-toc-section\" id=\"documents0page_content_-%3E_teks_halaman_1\"><\/span>documents[0].page_content -&gt; teks halaman 1<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h1><span class=\"ez-toc-section\" id=\"documents0metadata_-%3E_source_page_1_Load_Web_Page_from_langchain_communitydocument_loaders_import_WebBaseLoader\"><\/span>documents[0].metadata    -&gt; {'source': '...', 'page': 1}<\/code><\/pre>\n<h3>Load Web Page<\/h3>\n<pre><code class=\"language-python\">from langchain_community.document_loaders import WebBaseLoader<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\nloader = WebBaseLoader(\"https:\/\/www.contoh.com\/kebijakan-privasi\")\ndocuments = loader.load()<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Load_CSV_Excel\"><\/span>Load CSV \/ Excel<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-python\">from langchain_community.document_loaders import CSVLoader\n\nloader = CSVLoader(\"data-pelanggan.csv\")\ndocuments = loader.load()<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_3_Split_Dokumen_Jadi_Chunks\"><\/span>Step 3: Split Dokumen Jadi Chunks<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>LLM punya context window terbatas. Dokumen panjang harus dipecah jadi potongan kecil (chunks) supaya bisa diproses.<\/p>\n<pre><code class=\"language-python\">from langchain.text_splitter import RecursiveCharacterTextSplitter\n\ntext_splitter = RecursiveCharacterTextSplitter(\n    chunk_size=500,        # Ukuran per chunk (karakter)\n    chunk_overlap=50,      # Overlap antar chunk biar konteks nyambung\n    length_function=len,\n    separators=[\"nn\", \"n\", \".\", \" \", \"\"]\n)\n\nchunks = text_splitter.split_documents(documents)\nprint(f\"Dari {len(documents)} dokumen jadi {len(chunks)} chunks\")<\/code><\/pre>\n<p><strong>Kenapa pakai RecursiveCharacterTextSplitter?<\/strong> Karena splitter ini coba memisah di batas paragraf dulu, baru kalau terlalu panjang pindah ke batas kalimat, dan seterusnya. Hasilnya lebih rapi daripada split per karakter.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_4_Buat_Vector_Embeddings_Simpan\"><\/span>Step 4: Buat Vector Embeddings &amp; Simpan<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Vector embeddings adalah representasi numerik dari teks. Dokumen yang mirip secara semantik akan punya vector yang berdekatan.<\/p>\n<pre><code class=\"language-python\">from langchain_openai import OpenAIEmbeddings\nfrom langchain_chroma import Chroma\n\n<h1><span class=\"ez-toc-section\" id=\"Pilih_model_embedding\"><\/span>Pilih model embedding<span class=\"ez-toc-section-end\"><\/span><\/h1>\nembeddings = OpenAIEmbeddings(model=\"text-embedding-3-small\")\n\n<h1><span class=\"ez-toc-section\" id=\"Buat_vector_store_dan_simpan_embeddings\"><\/span>Buat vector store dan simpan embeddings<span class=\"ez-toc-section-end\"><\/span><\/h1>\nvector_store = Chroma.from_documents(\n    documents=chunks,\n    embedding=embeddings,\n    collection_name=\"rag_demo\",\n    persist_directory=\".\/chroma_db\"  # Simpan ke disk\n)\n\nprint(f\"\u2705 {len(chunks)} chunks berhasil di-index!\")<\/code><\/pre>\n<p><strong>Tips:<\/strong> Untuk production, jangan pakai Chroma untuk data besar (&gt;1M dokumen). Pilih Pinecone, Qdrant, atau Weaviate yang lebih scalable.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_5_Buat_Retriever\"><\/span>Step 5: Buat Retriever<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Retriever adalah jembatan antara query user dan vector store. Dia yang mencari dokumen paling relevan.<\/p>\n<pre><code class=\"language-python\"># Basic retriever \u2014 ambil 3 dokumen teratas\nretriever = vector_store.as_retriever(search_kwargs={\"k\": 3})\n\n<h1><span class=\"ez-toc-section\" id=\"Advanced_retriever_dengan_similarity_score_threshold\"><\/span>Advanced: retriever dengan similarity score threshold<span class=\"ez-toc-section-end\"><\/span><\/h1>\nretriever = vector_store.as_retriever(\n    search_type=\"similarity_score_threshold\",\n    search_kwargs={\"score_threshold\": 0.7, \"k\": 5}\n)\n\n<h1><span class=\"ez-toc-section\" id=\"Advanced_MMR_Maximum_Marginal_Relevance_%E2%80%94_variasi_hasil\"><\/span>Advanced: MMR (Maximum Marginal Relevance) \u2014 variasi hasil<span class=\"ez-toc-section-end\"><\/span><\/h1>\nretriever = vector_store.as_retriever(\n    search_type=\"mmr\",\n    search_kwargs={\"k\": 3, \"fetch_k\": 10, \"lambda_mult\": 0.5}\n)<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_6_Buat_RAG_Chain\"><\/span>Step 6: Buat RAG Chain<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ini bagian inti: menggabungkan retrieval dengan LLM generation.<\/p>\n<pre><code class=\"language-python\">from langchain_openai import ChatOpenAI\nfrom langchain.prompts import ChatPromptTemplate\nfrom langchain.schema import StrOutputParser\nfrom langchain_core.runnables import RunnablePassthrough\n\n<h1><span class=\"ez-toc-section\" id=\"Inisialisasi_model\"><\/span>Inisialisasi model<span class=\"ez-toc-section-end\"><\/span><\/h1>\nmodel = ChatOpenAI(model=\"gpt-4o-mini\", temperature=0)\n\n<h1><span class=\"ez-toc-section\" id=\"Template_prompt_RAG\"><\/span>Template prompt RAG<span class=\"ez-toc-section-end\"><\/span><\/h1>\ntemplate = \"\"\"Kamu adalah asisten bisnis yang menjawab berdasarkan konteks.\nGunakan informasi berikut untuk menjawab pertanyaan user.\nJika tidak tahu, katakan tidak tahu \u2014 jangan mengarang.\n\nKonteks:\n{context}\n\nPertanyaan: {question}\n\nJawab dalam <a href=\"https:\/\/komunitech.com\/blog\/tutorial\/tutorial-langchain-bahasa-indonesia-untuk-pemula-2026\/\">bahasa Indonesia<\/a> dengan jelas:\"\"\"\n\nprompt = ChatPromptTemplate.from_template(template)\n\n<h1><span class=\"ez-toc-section\" id=\"Helper_gabungkan_dokumen_jadi_teks\"><\/span>Helper: gabungkan dokumen jadi teks<span class=\"ez-toc-section-end\"><\/span><\/h1>\ndef format_docs(docs):\n    return \"nn\".join(doc.page_content for doc in docs)\n\n<h1><span class=\"ez-toc-section\" id=\"RAG_Chain_menggunakan_LCEL\"><\/span>RAG Chain menggunakan LCEL<span class=\"ez-toc-section-end\"><\/span><\/h1>\nrag_chain = (\n    {\"context\": retriever | format_docs, \"question\": RunnablePassthrough()}\n    | prompt\n    | model\n    | StrOutputParser()\n)\n\n<h1><span class=\"ez-toc-section\" id=\"Jalankan\"><\/span>Jalankan!<span class=\"ez-toc-section-end\"><\/span><\/h1>\nresult = rag_chain.invoke(\"Berapa total pendapatan perusahaan di 2025?\")\nprint(result)<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Step_7_Upgrade_ke_RAG_Agent\"><\/span>Step 7: Upgrade ke RAG Agent<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Chain di atas statis \u2014 dia cuma retrieve sekali lalu generate. Biar lebih powerful, upgrade jadi <strong>RAG Agent<\/strong> yang bisa memutuskan kapan perlu retrieve dan bisa panggil multiple tools.<\/p>\n<pre><code class=\"language-python\">from langchain.agents import create_agent, Tool\n\n<h1><span class=\"ez-toc-section\" id=\"Tools_untuk_agent\"><\/span>Tools untuk agent<span class=\"ez-toc-section-end\"><\/span><\/h1>\ndef search_documents(query: str) -&gt; str:\n    \"\"\"Cari informasi dari database dokumen internal\"\"\"\n    docs = retriever.get_relevant_documents(query)\n    return format_docs(docs)\n\ndef get_current_date(query: str) -&gt; str:\n    \"\"\"Dapatkan tanggal hari ini\"\"\"\n    from datetime import datetime\n    return f\"Hari ini: {datetime.now().strftime('%d %B %Y')}\"\n\ntools = [\n    Tool(name=\"CariDokumen\", func=search_documents, description=\"Cari di database dokumen internal\"),\n    Tool(name=\"TanggalSekarang\", func=get_current_date, description=\"Cek tanggal hari ini\"),\n]\n\n<h1><span class=\"ez-toc-section\" id=\"Buat_RAG_Agent\"><\/span>Buat RAG Agent<span class=\"ez-toc-section-end\"><\/span><\/h1>\nagent = create_agent(\n    model=\"openai:gpt-4o\",\n    tools=tools,\n    system_prompt=\"\"\"Kamu adalah asisten bisnis dengan akses ke database dokumen.\nGunakan tool CariDokumen untuk mencari informasi dari dokumen internal.\nGunakan tool TanggalSekarang untuk informasi tanggal.\n\nSelalu gunakan CariDokumen dulu sebelum menjawab pertanyaan spesifik tentang data perusahaan.\"\"\"\n)\n\n<h1><span class=\"ez-toc-section\" id=\"Test\"><\/span>Test<span class=\"ez-toc-section-end\"><\/span><\/h1>\nresult = agent.run(\"Berapa laba bersih perusahaan di Q4 2025?\")\nprint(result)<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Advanced_RAG_Techniques\"><\/span>Advanced RAG Techniques<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Setelah menguasai basic RAG, kamu bisa tingkatkan dengan teknik berikut:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_Parent_Document_Retriever\"><\/span>1. Parent Document Retriever<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ambil chunk kecil untuk relevansi, tapi kembalikan dokumen induk yang lebih panjang untuk konteks:<\/p>\n<pre><code class=\"language-python\">from langchain.retrievers import ParentDocumentRetriever\nfrom langchain.storage import InMemoryStore\n\nparent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)\nchild_splitter = RecursiveCharacterTextSplitter(chunk_size=400)\n\nstore = InMemoryStore()\nparent_retriever = ParentDocumentRetriever(\n    vectorstore=vector_store,\n    docstore=store,\n    child_splitter=child_splitter,\n    parent_splitter=parent_splitter,\n)<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"2_Hybrid_Search_BM25_Vector\"><\/span>2. Hybrid Search (BM25 + Vector)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Gabungkan keyword search (BM25) dengan semantic search (vector) untuk hasil lebih akurat:<\/p>\n<pre><code class=\"language-python\">from langchain.retrievers import EnsembleRetriever\nfrom langchain.retrievers import BM25Retriever\n\nbm25_retriever = BM25Retriever.from_documents(chunks)\nbm25_retriever.k = 3\n\nensemble_retriever = EnsembleRetriever(\n    retrievers=[bm25_retriever, retriever],\n    weights=[0.3, 0.7]  # Bobot BM25 30%, Vector 70%\n)<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"RAG_vs_Fine-Tuning\"><\/span>RAG vs Fine-Tuning<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<table>\n<tr>\n<td>\n<p><strong>Aspek<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>RAG<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Fine-Tuning<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Kebutuhan data<\/p>\n<\/td>\n<td>\n<p>Dokumen referensi<\/p>\n<\/td>\n<td>\n<p>Dataset Q&amp;A terlabel<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Biaya<\/p>\n<\/td>\n<td>\n<p>Rendah (API LLM + storage)<\/p>\n<\/td>\n<td>\n<p>Tinggi (GPU + dataset)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Update pengetahuan<\/p>\n<\/td>\n<td>\n<p>Ganti dokumen, langsung efek<\/p>\n<\/td>\n<td>\n<p>Retrain model, butuh waktu<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Akurasi fakta<\/p>\n<\/td>\n<td>\n<p>Tinggi (karena pakai konteks)<\/p>\n<\/td>\n<td>\n<p>Sedang (bisa hallucinate)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Personalisasi<\/p>\n<\/td>\n<td>\n<p>Terbatas<\/p>\n<\/td>\n<td>\n<p>Tinggi<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Waktu implementasi<\/p>\n<\/td>\n<td>\n<p>1-2 hari<\/p>\n<\/td>\n<td>\n<p>2-4 minggu<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><strong>Kapan pakai RAG:<\/strong> Untuk knowledge base, customer support FAQ, legal doc review, research assistant \u2014 apapun yang butuh akurasi fakta tinggi.<\/p>\n<p><strong>Kapan pakai Fine-Tuning:<\/strong> Untuk personalisasi gaya bicara, domain-specific terminology, atau output format yang rigid.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"RAG_Agent_x_KomuniTech\"><\/span>RAG Agent x KomuniTech<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Membangun RAG agent production-ready bukan cuma soal kode. Ada banyak hal yang sering luput dari tutorial online:<\/p>\n<ul>\n<li><strong>Chunking strategy<\/strong> apa yang cocok untuk dokumen Bahasa Indonesia?<\/li>\n<li><strong>Embedding model<\/strong> mana yang performanya terbaik untuk domain bisnis lokal?<\/li>\n<li><strong>Bagaimana handle dokumen dengan tabel dan gambar?<\/strong><\/li>\n<li><strong>Monitoring<\/strong> \u2014 gimana detect kalau RAG agent mulai ngawur?<\/li>\n<li><strong>Security<\/strong> \u2014 gimana pastikan agent cuma akses dokumen yang diizinkan?<\/li>\n<\/ul>\n<p>Di KomuniTech, semua ini dibahas tuntas.<\/p>\n<blockquote>\n<p>KomuniTech adalah platform belajar Karyawan AI untuk bisnis. Bukan kursus rekaman \u2014 kamu didampingi tim sampai <a href=\"\/blog\/ai-agent\/apa-itu-ai-agent-panduan-lengkap-untuk-pemula-2026\/\">AI Agent<\/a>-mu benar-benar jalan, didukung komunitas praktisi aktif dan garansi hasil.<\/p>\n<\/blockquote>\n<p>Robbie Jeo, CEO KomuniTech, menegaskan,<\/p>\n<blockquote>\n<p>RAG adalah teknologi yang langsung bisa diaplikasikan di bisnis hari ini. Kami di KomuniTech fokus memastikan peserta tidak cuma paham teorinya, tapi bisa bikin RAG agent yang benar-benar bekerja untuk perusahaan mereka.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"FAQ\"><\/span>FAQ<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Q_Berapa_biaya_operasional_RAG_agent\"><\/span>Q: Berapa biaya operasional RAG agent?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A: Biaya utamanya dari API LLM (sekitar $0.01-0.05 per 1000 pertanyaan untuk GPT-4o-mini) dan storage vector (gratis untuk Chroma lokal, ~$10-50\/bulan untuk Pinecone\/Qdrant untuk skala kecil).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Q_Apakah_RAG_bisa_handle_dokumen_berformat_PDF_dengan_tabel\"><\/span>Q: Apakah RAG bisa handle dokumen berformat PDF dengan tabel?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A: Bisa, tapi perlu preprocessing tambahan. LangChain punya <code>PyMuPDFLoader<\/code> dan <code>DocX2TxtLoader<\/code>. Untuk tabel kompleks, pertimbangkan unstructured.io atau layout detection model.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Q_Model_embedding_apa_yang_terbaik_untuk_Bahasa_Indonesia\"><\/span>Q: Model embedding apa yang terbaik untuk Bahasa Indonesia?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A: OpenAI text-embedding-3-small atau 3-large adalah pilihan aman. Untuk open-source, coba BGE-M3 atau multilingual-e5-large yang mendukung Bahasa Indonesia.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Q_Gimana_cara_update_dokumen_di_RAG_tanpa_rebuild_semua\"><\/span>Q: Gimana cara update dokumen di RAG tanpa rebuild semua?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A: Pakai vector store yang support incremental update. Chroma dan Qdrant bisa add\/delete dokumen individual tanpa rebuild seluruh index.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Q_Apa_kelemahan_RAG\"><\/span>Q: Apa kelemahan RAG?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A: RAG sangat bergantung pada kualitas retrieval. Kalau retriever gagal menemukan dokumen relevan, LLM akan jawab berdasarkan pengetahuannya sendiri (rawan hallucination). Butuh eval dan tuning retriever secara berkala.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Disclaimer\"><\/span>Disclaimer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Informasi dalam artikel ini berdasarkan praktik terbaik RAG menggunakan LangChain per Juni 2026. Harga API dan performa model dapat berubah. Lakukan pengujian sendiri sebelum implementasi production.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"dYOR_Do_Your_Own_Research\"><\/span>dYOR (Do Your Own Research)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sebelum deploy RAG agent:<\/p>\n<ul>\n<li>Evaluasi kualitas retrieval dengan metrics seperti Hit Rate dan MRR (Mean Reciprocal Rank)<\/li>\n<li>Bandingkan embedding model: OpenAI vs BGE vs Cohere<\/li>\n<li>Uji berbagai chunk size: 256, 512, 1024 tokens<\/li>\n<li>Buat test set pertanyaan spesifik domain untuk eval<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Saatnya_Bangun_AI_Agent-mu\"><\/span>Saatnya Bangun AI Agent-mu!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>RAG adalah teknologi yang <strong>paling cepat memberikan nilai bisnis<\/strong> dari seluruh ekosistem AI Agent. Tidak perlu nunggu fine-tuning berbulan-bulan \u2014 cukup upload dokumen, dan agent kamu langsung bisa menjawab pertanyaan berdasarkan data perusahaan.<\/p>\n<p>KomuniTech siap mendampingi kamu dari konsep sampai deployment.<\/p>\n<blockquote>\n<p>Robbie Jeo, CEO KomuniTech, menegaskan, *&#8221;Kami tidak hanya mengajarkan teori \u2014 kami memastikan setiap peserta bisa membangun dan menjalankan AI Agent nyata untuk bisnis mereka.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%F0%9F%91%89_Gabung_KomuniTech_sekarang_dan_bikin_RAG_agent_pertamamu\"><\/span>\ud83d\udc49 Gabung KomuniTech sekarang dan bikin RAG agent pertamamu!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"Referensi\"><\/span>Referensi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/python.langchain.com\/docs\/tutorials\/rag\/\" target=\"_blank\" rel=\"noopener nofollow\">LangChain \u2014 RAG Tutorial (Official)<\/a> \u2014 panduan resmi LangChain buat build RAG<\/li>\n<li><a href=\"https:\/\/arxiv.org\/abs\/2005.11401\" target=\"_blank\" rel=\"noopener nofollow\">Lewis et al. (2020) \u2014 Retrieval-Augmented Generation for Knowledge-Intensive NLP<\/a> \u2014 paper original yang mendefinisikan RAG<\/li>\n<li><a href=\"https:\/\/docs.trychroma.com\/\" target=\"_blank\" rel=\"noopener nofollow\">Chroma \u2014 Documentation<\/a> \u2014 docs resmi vector store yang dipakai di contoh<\/li>\n<li><a href=\"https:\/\/platform.openai.com\/docs\/guides\/embeddings\" target=\"_blank\" rel=\"noopener nofollow\">OpenAI \u2014 Embeddings Guide<\/a> \u2014 panduan resmi model embedding text-embedding-3<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>tl;dr: RAG (Retrieval-Augmented Generation) bikin LLM bisa jawab pertanyaan berbasis dokumen kamu, bukan cuma modal ingatan trainingnya. Pakai LangChain, tinggal load dokumen \u2192 split jadi chunks \u2192 embed ke vector store \u2192 retrieve \u2192 gabung sama LLM chain. Panduan ini step-by-step dari instalasi sampai upgrade ke RAG Agent yang bisa multi-tool. Pendahuluan LLM seperti GPT-4o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":400,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75],"tags":[],"class_list":["post-399","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial"],"_links":{"self":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/comments?post=399"}],"version-history":[{"count":2,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/399\/revisions"}],"predecessor-version":[{"id":444,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/399\/revisions\/444"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/media\/400"}],"wp:attachment":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/media?parent=399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/categories?post=399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/tags?post=399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}