วิธีสร้าง 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
- SimpliPOSFlex. POS สำหรับธุรกิจที่อยู่บนความจริงของหน้างาน
- แนวคิดการเขียนโปรแกรมแบบคลาสสิก: บทเรียนที่เรายังได้เรียนรู้จาก Kernighan & Pike
- ก่อนจะเริ่มเขียนโค้ด: 5 คำถามที่เราถามลูกค้าทุกครั้ง
- ทำไมระบบที่ทำกำไรได้ อาจไม่มีคุณค่าที่แท้จริง
- โลกของเธอ
- สร้างระบบ Automation ที่เชื่อถือได้ด้วย Temporal + Local LLM + Robot Framework แนวทางสำหรับองค์กรไทยที่ต้องการ Automate งานบัญชี-ERP อย่างปลอดภัย
- RPA + AI: ทำไมระบบอัตโนมัติถึงล้มเหลว หากไม่มี “ความฉลาด” และการควบคุมที่ดี
- การจำลองความขัดแย้งชายแดนและ Proxy War
- แก้ “การค้นหาและการเข้าถึง” ก่อน ก้าวแรกที่เร็วที่สุดในการฟื้นคุณค่าห้องสมุดมหาวิทยาลัยในยุคดิจิทัล
- เรากำลังสร้างแพลตฟอร์มใหม่ สำหรับโรงงานที่ขายเศษวัสดุ และโรงงานรีไซเคิลในประเทศไทย
- แนวทางพัฒนา MES ด้วย Python สำหรับโรงงานไทย
- MES vs ERP vs SCADA: บทบาทและขอบเขตที่โรงงานไทยควรรู้
- ทำไมการเรียนเขียนโปรแกรมถึง “เจ็บปวด” — และเราจะแก้มันอย่างไร
- องค์กรควรเลือก AI แบบ GPT หรือ AI แบบ Gemini?
- ตัวอย่างการใช้งานจริงที่ GPT-5.2 เหนือกว่า GPT-5.1 อย่างชัดเจน
- ChatGPT 5.2 vs 5.1 — อธิบายความแตกต่างด้วยอุปมาเข้าใจง่าย
- ทำไมธุรกิจที่กำลังเติบโต มัก “โตเกิน” ซอฟต์แวร์สำเร็จรูปในที่สุด และบริษัทที่ประสบความสำเร็จเขาจัดการอย่างไร
- Computer Vision บน Edge Device และสภาพแวดล้อมทรัพยากรจำกัด: ความท้าทายและโอกาสสำหรับไทย
- Simplico — โซลูชัน AI Automation และระบบซอฟต์แวร์เฉพาะทางสำหรับธุรกิจไทย
- AI สำหรับ Predictive Maintenance — จากเซนเซอร์สู่โมเดลพยากรณ์













