วิธีสร้าง 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
- ทำไม MES แบบสั่งพัฒนาจึงตอบโจทย์โรงงานไทยมากกว่า MES สำเร็จรูป
- เมื่อ AI เข้ามาแทนที่การค้นหา: นักเขียนและผู้เชี่ยวชาญจะอยู่รอดอย่างไร
- วิธีคาดการณ์ราคาโลหะสำหรับธุรกิจรีไซเคิล
- Smart Farming ทุเรียนแบบต้นทุนต่ำ (ประเทศไทย)
- ใครย้ายชีสของฉันไป?
- การออกแบบระบบ E-Commerce แบบเฉพาะสำหรับประเทศไทย
- Anti-Patterns ที่การใช้ AI ทำให้ระบบพัง
- ทำไมเราไม่ได้แค่พัฒนาซอฟต์แวร์ — แต่ทำให้ระบบทำงานได้จริง
- ชุด Prompt สำหรับผู้ดูแล Wazuh ที่มีประโยชน์
- เหตุใดการเปลี่ยนระบบ Legacy ทั้งหมดจึงล้มเหลวในภาครัฐ (และอะไรคือทางออกที่ได้ผลจริง)
- Vertical AI Use Cases ที่องค์กรปกครองส่วนท้องถิ่นของไทย “จำเป็นต้องใช้จริง”
- การออกแบบการให้บริการดิจิทัลสำหรับหน่วยงานภาครัฐหลายกรม (บริบทประเทศไทย)
- 7 เหตุผลหลักที่ระบบบริการดิจิทัลภาครัฐล้มเหลวหลังเปิดใช้งานจริง
- สถาปัตยกรรมอ้างอิงสำหรับระบบดิจิทัลระดับจังหวัด / เทศบาล
- สถาปัตยกรรม GovTech เชิงปฏิบัติ: ERP, GIS, ระบบบริการประชาชน และแพลตฟอร์มข้อมูล
- เหตุใดระบบรับมือเหตุฉุกเฉินจึงต้องออกแบบแบบ Offline First (บทเรียนจาก ATAK)
- เหตุใดโครงการซอฟต์แวร์ภาครัฐจึงล้มเหลว — และจะป้องกันได้อย่างไรก่อนเริ่มเขียนโค้ด
- หลัง AI Hype ซาลง: อะไรจะเกิดขึ้นต่อไป (และทำไมธุรกิจไทยต้องสนใจ)
- ทำไม AI ในธุรกิจรีไซเคิลจึงล้มเหลว หากไม่มี System Integration
- ISA-95 vs RAMI 4.0: โรงงานไทยควรใช้แบบไหน (และทำไมควรใช้ทั้งสอง)













