วิธีสร้าง RAG Chatbot ด้วย LangChain + Ollama
ในบทความนี้ คุณจะได้เรียนรู้วิธีสร้าง RAG (Retrieval-Augmented Generation) chatbot ด้วย LangChain และ Ollama พร้อมแสดงขั้นตอนเต็มในการ เพิ่มเอกสาร เข้าไปในเอเจนต์ของคุณแบบไดนามิก!
ไปทีละขั้นตอนกันเลยครับ
RAG Chatbot คืออะไร?
RAG ย่อมาจาก Retrieval-Augmented Generation หมายถึงการที่ chatbot จะไม่เพียงตอบคำถามจากความรู้ภายใน แต่จะ ค้นหาข้อมูลที่เกี่ยวข้องจากภายนอก แล้วจึง สร้างคำตอบที่ชาญฉลาดและแม่นยำ
ข้อดีของแนวทางนี้คือ:
- ให้คำตอบที่ แม่นยำ มากขึ้น
- อัปเดตความรู้ ได้ตลอดเวลา
- ตอบคำถามเฉพาะทางได้ดียิ่งขึ้น (domain-specific)
เครื่องมือที่ใช้
- LangChain: เฟรมเวิร์กสำหรับเชื่อมต่อ LLM, retrieval, tools, agents
- Ollama: โปรแกรมรันโมเดล LLM บนเครื่อง เช่น
Mistral,Llama3 - FAISS: เครื่องมือ vector search ในเครื่อง สำหรับดึงข้อมูลอย่างรวดเร็ว
ขั้นตอนที่ 1: ติดตั้ง
ติดตั้งไลบรารีที่จำเป็น:
pip install langchain ollama faiss-cpu
ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Ollama และเปิดใช้งานเรียบร้อยแล้ว:
- https://ollama.com/
- ดาวน์โหลดโมเดล เช่น
mistral,llama3,phi3เป็นต้น
ขั้นตอนที่ 2: ตัวอย่างโค้ดสร้าง RAG Chatbot
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.llms import Ollama
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.text_splitter import CharacterTextSplitter
from langchain.docstore.document import Document
# 1. เตรียมเอกสาร
my_docs = [
Document(page_content="Python เป็นภาษาโปรแกรมที่สร้างโดย Guido van Rossum."),
Document(page_content="LangChain ช่วยสร้างแอปที่ขับเคลื่อนด้วย language model."),
Document(page_content="เมืองหลวงของประเทศไทยคือกรุงเทพมหานคร."),
]
# 2. แบ่งเอกสาร
splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
split_docs = splitter.split_documents(my_docs)
# 3. สร้าง Embedding
embedder = OllamaEmbeddings(model="nomic-embed-text")
# 4. สร้าง Vector Store (FAISS)
vectorstore = FAISS.from_documents(split_docs, embedder)
# 5. สร้าง Retriever
retriever = vectorstore.as_retriever()
# 6. โหลด LLM (Ollama)
llm = Ollama(model="mistral")
# 7. สร้าง RetrievalQA Chain
rag_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever,
return_source_documents=True
)
# 8. ถามคำถาม
query = "ใครเป็นผู้สร้างภาษา Python?"
result = rag_chain({"query": query})
print("คำตอบ:", result["result"])
print("เอกสารอ้างอิง:", result["source_documents"])
ขั้นตอนที่ 3: การเพิ่มเอกสารใหม่เข้า Agent
คุณสามารถเพิ่มเอกสารใหม่ได้ทันที โดยไม่ต้องรีสตาร์ทระบบ
Workflow ภาพรวมด้วย Mermaid.js:
graph TD
A["ผู้ใช้อัปโหลดเอกสารใหม่"] --> B["แบ่งเอกสารเป็นชิ้น"]
B --> C["สร้าง Embedding"]
C --> D["เพิ่มลง Vectorstore"]
D --> E["Retriever อัปเดตอัตโนมัติ"]
E --> F["Chatbot ใช้ความรู้ใหม่ได้ทันที"]
ตัวอย่างโค้ด Python เพิ่มเอกสาร:
# สมมุติว่ามีเอกสารใหม่
new_doc = Document(page_content="Django เป็นเฟรมเวิร์กเว็บยอดนิยมของภาษา Python.")
# 1. แบ่งเอกสาร
new_splits = splitter.split_documents([new_doc])
# 2. สร้าง Embedding
new_vectors = embedder.embed_documents([doc.page_content for doc in new_splits])
# 3. เพิ่มเข้า FAISS
vectorstore.add_documents(new_splits)
# Retriever พร้อมใช้ความรู้ใหม่ทันที!
สรุป
การสร้าง RAG chatbot ด้วย LangChain + Ollama มีความทรงพลังและยืดหยุ่นสูง คุณสามารถ:
- ควบคุมโมเดลได้เอง (ไม่ต้องพึ่ง API ภายนอก)
- อัปเดตข้อมูลใหม่ได้แบบสดๆ
- สร้าง chatbot เฉพาะทางได้เต็มที่
ในระดับ production คุณสามารถเชื่อมต่อกับ:
- โหลดข้อมูลจากไฟล์ PDF
- ดึงข้อมูลจากเว็บไซต์
- ค้นหาจากฐานข้อมูล
อนาคตของ AI คือ โอเพ่นซอร์ส เป็นส่วนตัว และปรับแต่งได้
ติดตาม Part 2 ต่อไป ที่เราจะสอน ทำให้ตอบแบบสตรีมทีละคำ และ เก็บประวัติการสนทนา! 🚀
Get in Touch with us
Related Posts
- สร้าง SOC ตั้งแต่ศูนย์: บันทึกจากสนามจริงด้วย Wazuh + IRIS-web
- ซอฟต์แวร์โรงงานรีไซเคิล: ระบบจัดการครบวงจรสำหรับธุรกิจรีไซเคิลไทย
- คืนทุนจากซอฟต์แวร์พลังงาน: ลดต้นทุนค่าไฟได้ 15–40% จริงหรือ?
- วิธีสร้าง SOC แบบ Lightweight ด้วย Wazuh + Open Source
- วิธีเชื่อมต่อร้านค้าออนไลน์กับระบบ ERP อย่างถูกต้อง: คู่มือปฏิบัติจริง (2026)
- AI Coding Assistant ใช้เครื่องมืออะไรอยู่เบื้องหลัง? (Claude Code, Codex CLI, Aider)
- ประหยัดน้ำมันอย่างได้ผล: ฟิสิกส์ของการขับด้วยโหลดสูง รอบต่ำ
- ระบบบริหารคลังทุเรียนและผลไม้ — WMS เชื่อมบัญชี สร้างเอกสารส่งออกอัตโนมัติ
- ล้งทุเรียนยุคใหม่: หยุดนับสต็อกด้วยกระดาษ เริ่มควบคุมธุรกิจด้วยระบบ
- AI System Reverse Engineering: ใช้ AI ทำความเข้าใจระบบซอฟต์แวร์ Legacy (Architecture, Code และ Data)
- ความได้เปรียบของมนุษย์: บริการพัฒนาซอฟต์แวร์ที่ AI ไม่อาจทดแทนได้
- จาก Zero สู่ OCPP: สร้างแพลตฟอร์มชาร์จ EV แบบ White-Label
- Wazuh Decoders & Rules: โมเดลความเข้าใจที่หายไป
- การสร้างระบบติดตาม OEE แบบเรียลไทม์สำหรับโรงงานอุตสาหกรรม
- ความเชื่อเรื่อง Enterprise Software ราคาเป็นล้านกำลังจะจบลง มื่อ Open‑Source + AI กำลังแทนที่ระบบองค์กรราคาแพง
- วิธี Cache ข้อมูล Ecommerce โดยไม่แสดงราคาหรือสต็อกที่ล้าสมัย
- การนำ AI เข้าสู่ระบบ Legacy: บูรณาการ ERP, SCADA และระบบ On-Premise ด้วย Machine Learning
- ราคาของความฉลาด: AI ต้องใช้เงินเท่าไหร่กันแน่
- ทำไม RAG App ของคุณถึงพังใน Production (และวิธีแก้ไข)
- AI-Assisted Programming ในยุค AI: บทเรียนจาก *The Elements of Style* ที่ช่วยให้คุณเขียนโค้ดได้ดีกว่าด้วย Copilot













