
Bayangkan memangkas tiket dukungan hingga dua pertiga sambil meningkatkan skor kepuasan pelanggan hingga 42% - semuanya Otomatisasi FAQ didukung oleh Agentic RAGBlog ini mengungkap bagaimana AI Agen mengoordinasikan penelusuran vektor, perutean kueri dinamis, dan orkestrasi LangGraph untuk membuat chatbot cerdas yang menarik konteks dari ChromaDB guna memberikan jawaban akurat dan cepat.
Lupakan pencocokan kata kunci dasar: sistem pencarian otomatis ini memecah pertanyaan kompleks menjadi sub-tugas, mengevaluasi sentimen, dan menyerahkan kasus-kasus sulit kepada spesialis manusia bila diperlukan.
Cari tahu cara membangun chatbot FAQ berbasis AI yang memangkas biaya, mempercepat respons, dan memberikan layanan terbaik hanya dalam beberapa langkah sederhana.
Memahami Agentic RAG: Evolusi Berikutnya dalam Teknologi Chatbot
RAG ( Retrieval Augmented Generation ) tradisional dengan cepat menjadi standar untuk chatbot berbasis pengetahuan. Namun, sistem ini sering kesulitan dengan kueri yang kompleks, mengubah metode pengambilan informasi di tengah percakapan, atau memberikan penalaran multi-langkah.
Apa yang membuat Agentic RAG berbeda?
RAG digunakan untuk pertanyaan sederhana sementara RAG Agentic menangani kasus rumit dan real-time. Perbedaan ini memungkinkan organisasi untuk menerapkan solusi yang tepat untuk berbagai skenario.
Agentic RAG meningkatkan RAG tradisional dengan menggabungkan AI kemampuan agen yang dapat:
- Memecah pertanyaan yang rumit menjadi sub-tugas yang dapat dikelola
- Beralih secara dinamis antara berbagai strategi pengambilan
- Melakukan penalaran multi-langkah untuk memecahkan masalah masalah yang kompleks
- Buat keputusan perutean cerdas berdasarkan konten kueri dan sentimen
- Integrasikan dengan alat eksternal saat diperlukan
Arsitektur cerdas ini memungkinkan sistem untuk mengubah apa yang merupakan operasi pencarian sederhana menjadi proses pengambilan keputusan yang canggih.
Bagaimana Agentic RAG Mengubah Kemampuan Chatbot
RAG tradisional beroperasi sebagai proses linear: menerima permintaan, mengambil informasi, dan menghasilkan respons. Sebaliknya, RAG Agentik menerapkan alur kerja berbasis keputusan yang dinamis:

1. Analisis Kueri Cerdas
Sistem RAG berbasis agen dimulai dengan menganalisis kueri yang masuk untuk menentukan maksud, kompleksitas, dan sentimen. Dekomposisi ini memungkinkan sistem untuk memilih strategi pengambilan dan jalur pemrosesan yang tepat, alih-alih menggunakan pendekatan seragam untuk semua.
2. Mekanisme Pengalihan Strategis
Agen perutean khusus memeriksa kueri yang diklasifikasikan dan mengarahkannya ke sumber data atau alat yang paling relevan. Ini memastikan, misalnya, bahwa pertanyaan tentang pengembalian barang masuk ke basis pengetahuan dukungan sementara pertanyaan tentang produk masuk ke repositori info produk.
3. Transformasi & Perencanaan Kueri
Ketika dihadapkan dengan input yang kompleks atau ambigu, jalur RAG agentik secara otonom:
- Merumuskan kembali pertanyaan yang ambigu untuk mendapatkan hasil yang lebih baik
- Membagi pertanyaan yang terdiri dari beberapa bagian menjadi sub-kueri terpisah
- Tentukan urutan optimal untuk memproses sub-query ini
Menurut penelitian, Jika jawabannya tidak tersedia, saluran tersebut akan menelusuri dokumen lokal atau melakukan pencarian internet untuk meningkatkan konteks.
Komponen Utama Chatbot FAQ Cerdas
Membangun chatbot Agentic RAG yang efektif memerlukan beberapa komponen yang saling berhubungan:

Model Bahasa Besar (LLM)
LLM berfungsi sebagai otak sistem, menangani interpretasi kueri, penalaran , dan pembuatan respons. Untuk kinerja optimal tanpa biaya berlebihan, model seperti o4-mini dari OpenAI memberikan keseimbangan yang baik antara kemampuan dan efisiensi.
Basis Data Vektor
Basis data vektor menyimpan pengetahuan perusahaan Anda dalam format yang dioptimalkan untuk pencarian. ChromaDB unggul dalam hal ini dengan:
- Mengubah teks menjadi penempatan numerik untuk pencarian semantik
- Mendukung kueri kesamaan yang efisien di seluruh kumpulan data besar
- Memelihara metadata untuk penyaringan (seperti pencarian khusus departemen)
Agen Orkestrasi
Orkestrasi memecah kueri kompleks menjadi tugas-tugas yang lebih kecil, menugaskannya ke agen-agen khusus, dan menggabungkan hasilnya menjadi satu jawaban yang kohesif. Ia mengelola aliran informasi untuk memastikan setiap bagian dari pertanyaan pengguna ditangani oleh komponen yang tepat.
Sistem Manajemen Memori
Chatbot yang efektif memerlukan kesadaran konteks. Sistem memori:
- Melacak riwayat percakapan
- Menyimpan preferensi pengguna
- Mempertahankan pemahaman kontekstual melintasi beberapa belokan
Ini menciptakan pengalaman pengguna yang lebih alami dan tidak berulang.
Mesin Validasi
Sebelum tanggapan diberikan, mesin validasi memeriksa ulang konten yang dihasilkan dengan dokumen sumber untuk memastikan keakuratannya. Mesin ini mendeteksi dan mengoreksi potensi kesalahan atau halusinasi, sehingga menjamin jawaban yang andal dan dapat dipercaya.
Panduan Langkah demi Langkah untuk Membangun Chatbot FAQ dengan Agentic RAG

Mari kita uraikan proses implementasi chatbot FAQ cerdas menggunakan Agentic RAG:
Menyiapkan Lingkungan AndaPertama, instal pustaka yang diperlukan:
ular sanca
!pip install langchain langgraph langchain-openai langchain-community chromadb openai python-dotenv pydantic pysqlite3
Kemudian impor komponen yang diperlukan:
ular sanca
import os
import json
from typing import List, TypedDict, Dict
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.documents import Document
from langchain_community.vectorstores import Chroma
from langgraph.graph import StateGraph, END
Mempersiapkan Basis Pengetahuan AndaAtur data FAQ Anda berdasarkan departemen atau kategori. Menggunakan format terstruktur seperti JSON membantu menjaga keteraturan:
ular sanca
DEPARTMENTS = [
"Customer Support",
"Product Information",
"Loyalty Program / Rewards"
]
FAQ_FILES = {
"Customer Support": "customer_support_faq.json",
"Product Information": "product_information_faq.json",
"Loyalty Program / Rewards": "loyalty_program_faq.json"
}
Sebuah studi oleh Botpress menemukan bahwa “basis pengetahuan yang terorganisasi dengan baik meningkatkan akurasi pencarian hingga 35%, yang secara langsung memengaruhi kepuasan pengguna”.
Membuat Penyematan VektorUbah data teks Anda menjadi penyematan vektor untuk pencarian semantik:
ular sanca
def setup_chroma_vector_store(all_faqs, persist_directory, collection_name, embedding_model):
documents = []
for department, faqs in all_faqs.items():
for faq in faqs:
content = faq['answer']
doc = Document(
page_content=content,
metadata={
"department": department,
"question": faq['question']
}
)
documents.append(doc)
vector_store = Chroma.from_documents(
documents=documents,
embedding=embedding_model,
persist_directory=persist_directory,
collection_name=collection_name
)
return vector_store
Untuk kinerja optimal, penelitian menunjukkan penyaringan pengambilan berdasarkan departemen meningkatkan akurasi hingga 31% dibandingkan dengan pencarian basis pengetahuan global.
Mendefinisikan Status AgenAgen Anda perlu mempertahankan status selama percakapan:
ular sanca
class AgentState(TypedDict):
query: str
sentiment: str
department: str
context: str
response: str
error: str | None
Pendekatan terstruktur ini melacak status percakapan saat ini dan memungkinkan interaksi yang lebih koheren.
Menerapkan Klasifikasi KueriNode klasifikasi menganalisis permintaan masuk untuk menentukan sentimen dan departemen terkait:
ular sanca
def classify_query_node(state: AgentState) -> Dict[str, str]:
query = state["query"]
llm = ChatOpenAI(model="o4-mini")
prompt_template = ChatPromptTemplate.from_messages([
SystemMessage(content="""You are an expert query classifier for a retail company.
Analyze the user's query to determine its sentiment and the most relevant department.
The available departments are: Customer Support, Product Information, Loyalty Program / Rewards.
If the query doesn't clearly fit into one of these, classify the department as 'Unknown/Other'.
"""),
HumanMessage(content=f"User Query: {query}")
])
classifier_chain = prompt_template | llm.with_structured_output(ClassificationResult)
result = classifier_chain.invoke({})
return {
"sentiment": result.sentiment.lower(),
"department": result.department
}
Penelitian menunjukkan langkah klasifikasi ini sangat penting – analisis terkini terhadap chatbot perusahaan menemukan bahwa klasifikasi kueri yang akurat meningkatkan rasio penyelesaian hingga 47%.
Pengambilan Konteks BangunanNode pengambilan mengambil informasi yang relevan berdasarkan kueri dan departemen:
ular sanca
def retrieve_context_node(state: AgentState) -> Dict[str, str]:
query = state["query"]
department = state["department"]
retriever = vector_store.as_retriever(
search_type="similarity",
search_kwargs={
'k': 3,
'filter': {'department': department}
}
)
retrieved_docs = retriever.invoke(query)
context = "\n\n---\n\n".join([doc.page_content for doc in retrieved_docs])
return {"context": context, "error": None}
Penerapan filter pada proses pengambilan data secara signifikan meningkatkan relevansi, dengan tolok ukur industri menunjukkan peningkatan sebesar 42% dalam akurasi respons.
Membuat Generasi ResponsPembuat respons menggunakan konteks yang diambil untuk membuat jawaban yang bermanfaat:
ular sanca
def generate_response_node(state: AgentState) -> Dict[str, str]:
query = state["query"]
context = state["context"]
prompt_template = ChatPromptTemplate.from_messages([
SystemMessage(content=f"""You are a helpful AI Chatbot. Answer based only on the provided context.
Be concise and directly address the query. If the context doesn't contain the answer, state that clearly.
Do not make up information.
Context:
{context}
"""),
HumanMessage(content=f"User Query: {query}")
])
RAG_chain = prompt_template | llm
response = RAG_chain.invoke({})
return {"response": response.content}
Menerapkan Eskalasi ManusiaMenurut sebuah penelitian, “kepuasan pelanggan meningkat hingga 83% ketika pertanyaan negatif mendapat perhatian manusia alih-alih respons otomatis”. Chatbot Anda harus mengenali kapan harus menyerahkannya kepada manusia:
ular sanca
def human_escalation_node(state: AgentState) -> Dict[str, str]:
reason = ""
if state.get("sentiment") == "negative":
reason = "Due to the nature of your query,"
elif state.get("department") == UNKNOWN_DEPARTMENT:
reason = "As your query requires specific attention,"
response_text = f"{reason} I need to escalate this to our human support team."
return {"response": response_text}
Membangun Grafik AgenLangGraph menghubungkan simpul-simpul ini menjadi aliran pengambilan keputusan:
ular sanca
def build_agent_graph(vector_store: Chroma) -> StateGraph:
graph = StateGraph(AgentState)
# Add nodes
graph.add_node("classify_query", classify_query_node)
graph.add_node("retrieve_context", retrieve_context_node)
graph.add_node("generate_response", generate_response_node)
graph.add_node("human_escalation", human_escalation_node)
# Set entry point
graph.set_entry_point("classify_query")
# Add edges with conditional routing
graph.add_conditional_edges(
"classify_query",
route_query,
{
"retrieve_context": "retrieve_context",
"human_escalation": "human_escalation"
}
)
graph.add_edge("retrieve_context", "generate_response")
graph.add_edge("generate_response", END)
graph.add_edge("human_escalation", END)
app = graph.compile()
return app
Struktur grafik inilah yang memungkinkan pengambilan keputusan yang dinamis, keunggulan utama dibandingkan alur chatbot linear tradisional.
Menguji dan Mengoptimalkan Chatbot Agentik AndaSetelah implementasi, pengujian menyeluruh sangat penting:
ular sanca
test_queries = [
"How do I track my order?",
"What is the return policy?",
"This is the third time my order was delayed! I'm furious!",
"Tell me about the 'Urban Explorer' jacket materials."
]
for query in test_queries:
inputs = {"query": query}
final_state = agent_app.invoke(inputs)
print(f"Agent Response: {final_state.get('response')}")
Metrik utama yang harus dilacak meliputi:
- Akurasi respons (dibandingkan dengan jawaban manusia)
- Presisi klasifikasi
- Tingkat eskalasi (persentase pertanyaan yang dikirim ke manusia)
- Waktu respons (idealnya kurang dari 2 detik)
- Skor kepuasan pengguna
Keunggulan Agentic RAG Dibandingkan Chatbot Tradisional
Agentic RAG menawarkan beberapa peningkatan penting dibandingkan sistem yang lebih sederhana:
Tantangan Umum dalam Implementasi
Membangun sistem RAG Agentik menghadapi beberapa tantangan:
Kesimpulan: Transformasi Dukungan Pelanggan dengan Agen Cerdas
Agentic RAG menggabungkan pencarian tingkat lanjut dengan pengambilan keputusan otonom untuk mengubah chatbot dasar menjadi asisten digital sejati —yang memahami konteks, mengarahkan masalah sulit, dan tahu kapan harus meningkatkan penanganan masalah.

Organisasi yang mengadopsi Agentic RAG bersama LangGraph dan ChromaDB tidak hanya memangkas biaya dukungan; mereka juga menyenangkan pelanggan dengan jawaban yang cepat dan akurat atau pengalihan tugas antar manusia yang lancar.
Dengan contoh kode dan wawasan arsitektur dalam panduan ini, Anda memiliki semua yang dibutuhkan untuk membangun chatbot FAQ cerdas yang meningkatkan efisiensi dan kepuasan pelanggan.


