Fine-Tuning และ RAG: เทคนิคขั้นสูงในการสอน AI ให้เชี่ยวชาญเฉพาะด้าน
เมื่อคุณต้องการให้ AI เข้าใจธุรกิจหรือข้อมูลเฉพาะของคุณอย่างลึกซึ้ง การใช้ Prompt ทั่วไปอาจไม่เพียงพอ บทความนี้จะพาคุณไปรู้จักกับเทคนิคขั้นสูง 2 วิธี: Fine-Tuning และ RAG (Retrieval-Augmented Generation) พร้อมแนวทางการเลือกใช้ที่เหมาะสมกับความต้องการของคุณ
ทำไมต้องใช้เทคนิคขั้นสูง?
ข้อจำกัดของ Prompt ทั่วไป
แม้ว่า Prompt Engineering จะมีประสิทธิภาพ แต่ก็มีข้อจำกัด:
- ความจุ Context: AI มีขีดจำกัดในการรับข้อมูลต่อครั้ง
- ความแม่นยำ: อาจไม่เข้าใจบริบทเฉพาะทางที่ซับซ้อน
- ความสม่ำเสมอ: ผลลัพธ์อาจแปรปรวนแม้ใช้ Prompt เดียวกัน
- ความรู้ล้าสมัย: ข้อมูลถูกตัดขาด ณ เวลาที่ Train
เมื่อไหร่ต้องใช้เทคนิคขั้นสูง?
คุณควรพิจารณาใช้เทคนิคขั้นสูงเมื่อ:
✅ มีข้อมูลเฉพาะทางจำนวนมากที่ AI ไม่รู้จัก ✅ ต้องการความแม่นยำสูงในเรื่องเฉพาะ ✅ ต้องการให้ AI ตอบตามสไตล์หรือรูปแบบเฉพาะ ✅ ข้อมูลมีการอัปเดตบ่อยครั้ง ✅ มีงบประมาณและทรัพยากรเพียงพอ
Fine-Tuning คืออะไร?
Fine-Tuning คือการ "สอน" AI model ที่มีอยู่แล้วด้วยข้อมูลของคุณเอง ทำให้ AI เรียนรู้และจดจำข้อมูลเฉพาะทางของคุณอย่างถาวร
การทำงานของ Fine-Tuning
Base Model (GPT-4, Claude, etc.)
↓
+ ข้อมูลฝึกฝึกสอน (Training Data) ของคุณ
↓
= Custom Model ที่เข้าใจข้อมูลของคุณโดยเฉพาะ
ตัวอย่างการใช้งาน Fine-Tuning
1. Customer Service Bot
ปัญหา: AI ทั่วไปไม่รู้จักสินค้าและนโยบายของบริษัทคุณ
วิธีแก้: Fine-tune ด้วย:
- ประวัติการสนทนาลูกค้า (Chat History)
- คำถามที่พบบ่อย (FAQ)
- Product Knowledge Base
- Company Policies
ผลลัพธ์: AI ที่ตอบคำถามลูกค้าได้แม่นยำและสอดคล้องกับนโยบายบริษัท
2. Legal Document Analysis
ปัญหา: AI ต้องเข้าใจคำศัพท์กฎหมายและบริบททางกฎหมาย
วิธีแก้: Fine-tune ด้วย:
- เอกสารกฎหมาย
- คำพิพากษา
- สัญญา
- ข้อกฎหมาย
ผลลัพธ์: AI ที่วิเคราะห์เอกสารทางกฎหมายได้แม่นยำ
3. Medical Diagnosis Assistant
ปัญหา: ต้องการ AI ที่เข้าใจศัพท์ทางการแพทย์และอาการต่างๆ
วิธีแก้: Fine-tune ด้วย:
- Medical Journals
- Case Studies
- Symptom Databases
- Treatment Guidelines
ผลลัพธ์: AI ผู้ช่วยแพทย์ที่ให้คำแนะนำได้แม่นยำขึ้น
ขั้นตอนการ Fine-Tuning
1. เตรียมข้อมูล (Data Preparation)
รูปแบบข้อมูล:
[
{
"messages": [
{"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญด้านกฎหมายแรงงาน"},
{"role": "user", "content": "ถ้าบริษัทไล่ออกโดยไม่มีเหตุผล ต้องทำอย่างไร?"},
{"role": "assistant", "content": "ตามกฎหมายแรงงาน..."}
]
},
{
"messages": [
{"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญด้านกฎหมายแรงงาน"},
{"role": "user", "content": "ค่าทดแทนการเลิกจ้างคำนวณอย่างไร?"},
{"role": "assistant", "content": "การคำนวณค่าทดแทน..."}
]
}
]
คุณภาพข้อมูล:
- ✅ มีความหลากหลาย (Diversity)
- ✅ ถูกต้องและเชื่อถือได้ (Accuracy)
- ✅ จำนวนเพียงพอ (ขั้นต่ำ 50-100 ตัวอย่าง, แนะนำ 500+)
- ✅ สะอาดไม่มี Noise หรือข้อมูลผิด
2. เลือก Base Model
ตัวเลือกยอดนิยม:
- GPT-3.5-turbo: ราคาถูก เหมาะสำหรับงานทั่วไป
- GPT-4: ทรงพลังกว่า แต่ราคาแพงกว่า
- Open Source Models: LLaMA 2, Mistral, Falcon (ควบคุมได้เต็มที่)
3. Training Process
# ตัวอย่างการ Fine-tune ด้วย OpenAI API
import openai
# 1. Upload training file
training_file = openai.File.create(
file=open("training_data.jsonl", "rb"),
purpose='fine-tune'
)
# 2. Create fine-tuning job
fine_tune = openai.FineTuning.create(
training_file=training_file.id,
model="gpt-3.5-turbo",
hyperparameters={
"n_epochs": 3
}
)
# 3. Wait for completion
# 4. Use the fine-tuned model
response = openai.ChatCompletion.create(
model="ft:gpt-3.5-turbo:your-org:custom-model:id",
messages=[...]
)
4. Evaluation & Testing
ทดสอบ Model ด้วย:
- Test Set: ชุดข้อมูลที่ไม่เคยใช้ใน Training
- Human Evaluation: ให้คนตรวจสอบคุณภาพคำตอบ
- Metrics: Accuracy, F1-Score, BLEU Score
ข้อดีและข้อเสียของ Fine-Tuning
✅ ข้อดี
- ความแม่นยำสูง: Model เรียนรู้ข้อมูลของคุณอย่างลึกซึ้ง
- ตอบสนองเร็ว: ไม่ต้องส่ง Context ยาวๆ ทุกครั้ง
- ประหยัดในระยะยาว: ใช้ token น้อยลงเมื่อใช้งานจริง
- Consistency: ผลลัพธ์สม่ำเสมอกว่า
❌ ข้อเสีย
- ต้นทุนสูง: ค่า Training สูง โดยเฉพาะ GPT-4
- ใช้เวลานาน: อาจใช้เวลาหลายชั่วโมงถึงหลายวัน
- ต้องการข้อมูลจำนวนมาก: ยิ่งมีข้อมูลคุณภาพดีมาก ยิ่งดี
- Update ยาก: ต้อง Re-train ใหม่ทุกครั้งที่มีข้อมูลเพิ่ม
- Technical Complexity: ต้องมีความรู้ด้าน ML
เมื่อไหร่ควรใช้ Fine-Tuning?
✅ ควรใช้เมื่อ:
- ข้อมูลไม่เปลี่ยนแปลงบ่อย
- ต้องการความสม่ำเสมอสูง
- มีงบประมาณเพียงพอ
- ต้องการ Performance สูงสุด
- มีข้อมูล Training คุณภาพดีจำนวนมาก
❌ ไม่ควรใช้เมื่อ:
- ข้อมูลมีการอัปเดตบ่อย (ทุกวัน/สัปดาห์)
- งบประมาณจำกัด
- ต้องการความยืดหยุ่นในการเปลี่ยนแปลงข้อมูล
RAG (Retrieval-Augmented Generation) คืออะไร?
RAG คือเทคนิคที่ให้ AI "ค้นหา" ข้อมูลที่เกี่ยวข้องจากฐานข้อมูลของคุณก่อน แล้วจึงใช้ข้อมูลนั้นในการสร้างคำตอบ
การทำงานของ RAG
คำถามของผู้ใช้
↓
1. ค้นหาข้อมูลที่เกี่ยวข้องจากฐานข้อมูล (Vector Database)
↓
2. ดึงข้อมูลที่เกี่ยวข้องมา (Top 3-5 ผลลัพธ์)
↓
3. ส่งข้อมูล + คำถามไปให้ AI
↓
4. AI สร้างคำตอบจากข้อมูลที่ได้รับ
↓
คำตอบที่แม่นยำและมีที่มา
สถาปัตยกรรม RAG
┌──────────────┐
│ User Query │
└──────┬───────┘
│
▼
┌─────────────────────┐
│ Embedding Model │ (แปลงคำถามเป็น Vector)
└──────┬──────────────┘
│
▼
┌─────────────────────┐
│ Vector Database │ (ค้นหาข้อมูลที่ใกล้เคียง)
│ (Pinecone, Weaviate)│
└──────┬──────────────┘
│
▼
┌─────────────────────┐
│ Retrieve Top-K │ (ดึงข้อมูล 3-5 อันดับแรก)
└──────┬──────────────┘
│
▼
┌─────────────────────┐
│ LLM (GPT-4, Claude) │ (สร้างคำตอบจากข้อมูล)
└──────┬──────────────┘
│
▼
┌─────────────────────┐
│ Generated Answer │
│ + Source Citations │
└─────────────────────┘
ตัวอย่างการใช้งาน RAG
1. Knowledge Base Search
Use Case: ระบบค้นหาเอกสารภายในบริษัท
ข้อมูล:
- คู่มือพนักงาน
- นโยบายบริษัท
- ขั้นตอนการทำงาน (SOP)
- FAQ ภายในองค์กร
ตัวอย่าง:
User: "วันลาพักร้อนที่เหลือของฉันคือกี่วัน?"
RAG System:
1. ค้นหาข้อมูล → พบ "นโยบายวันลา" และ "ข้อมูลพนักงาน"
2. ดึงข้อมูล → "พนักงานมีสิทธิ์ลา 10 วัน/ปี..."
3. AI ตอบ → "ตามนโยบายบริษัท พนักงานมีสิทธิ์ลาพักร้อน 10 วัน/ปี
คุณใช้ไปแล้ว 4 วัน คงเหลือ 6 วัน (อ้างอิงจากนโยบายวันลา หน้า 5)"
2. E-commerce Product Assistant
Use Case: ตอบคำถามเกี่ยวกับสินค้า
User: "มีกระเป๋าหนังสีดำราคาไม่เกิน 2000 บาทไหม?"
RAG System:
1. ค้นหา → Product Database
2. พบสินค้าที่ตรงเงื่อนไข → 3 รายการ
3. AI สร้างคำตอบ → "มีครับ! เรามีกระเป๋าหนังสีดำในราคาไม่เกิน 2000 บาท 3 รุ่น:
1. กระเป๋าหนัง Classic - 1,590 บาท
2. กระเป๋าหนัง Urban Style - 1,890 บาท
3. กระเป๋าหนัง Business Pro - 1,990 บาท"
3. Documentation Assistant
Use Case: ช่วยเหลือ Developer ค้นหาข้อมูลใน Documentation
User: "วิธีการ setup authentication ใน Next.js 14 App Router ทำอย่างไร?"
RAG System:
1. ค้นหา → Docs Database
2. พบบทความที่เกี่ยวข้อง → "Authentication Setup", "App Router Guide"
3. AI ตอบ → "การ setup authentication ใน Next.js 14 App Router มีขั้นตอนดังนี้:
1. ติดตั้ง next-auth...
2. สร้าง api/auth/[...nextauth]/route.ts...
[Code Examples]
อ้างอิงจาก: Authentication Guide (v14.0)"
ขั้นตอนการสร้าง RAG System
1. เตรียมข้อมูล
# แปลงเอกสารเป็นชิ้นเล็กๆ (Chunks)
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000, # ขนาดแต่ละ chunk
chunk_overlap=200, # overlap เพื่อความต่อเนื่อง
)
documents = text_splitter.split_documents(raw_docs)
2. สร้าง Embeddings
# แปลงข้อความเป็น Vector
from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
vectors = embeddings.embed_documents([doc.page_content for doc in documents])
3. เก็บใน Vector Database
# เก็บ vectors ใน Pinecone
from langchain.vectorstores import Pinecone
import pinecone
pinecone.init(api_key="your-api-key", environment="us-east-1-aws")
vectorstore = Pinecone.from_documents(
documents,
embeddings,
index_name="company-knowledge-base"
)
4. Query & Generate
# ค้นหาและสร้างคำตอบ
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(model_name="gpt-4", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
return_source_documents=True
)
result = qa_chain({"query": "วันลาพักร้อนที่เหลือของฉันคือกี่วัน?"})
print(result["result"])
print(result["source_documents"]) # แสดงแหล่งที่มา
เครื่องมือสำหรับสร้าง RAG
Vector Databases
- Pinecone - Managed, ใช้งานง่าย, แต่เสียเงิน
- Weaviate - Open source, feature-rich
- Chroma - Open source, เบา, เหมาะสำหรับ prototype
- Qdrant - Performance สูง, Rust-based
- Milvus - สำหรับ Large-scale applications
Frameworks
- LangChain - Framework สำหรับสร้าง LLM apps (Python/JS)
- LlamaIndex - เน้นการจัดการและ query ข้อมูล
- Haystack - Production-ready RAG framework
- Semantic Kernel - Microsoft's framework
Advanced RAG Techniques
1. Hybrid Search
รวม Semantic Search และ Keyword Search
# ใช้ทั้ง Vector Search และ BM25
from langchain.retrievers import EnsembleRetriever
from langchain.retrievers import BM25Retriever
bm25_retriever = BM25Retriever.from_documents(documents)
vector_retriever = vectorstore.as_retriever()
ensemble_retriever = EnsembleRetriever(
retrievers=[bm25_retriever, vector_retriever],
weights=[0.5, 0.5]
)
2. Re-ranking
จัดลำดับผลลัพธ์ใหม่เพื่อความแม่นยำ
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import CohereRerank
compressor = CohereRerank(model="rerank-english-v2.0")
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor,
base_retriever=vector_retriever
)
3. Multi-Query RAG
สร้างหลาย Query จาก Query เดียว
# สร้างคำถามหลายรูปแบบจากคำถามเดิม
from langchain.retrievers.multi_query import MultiQueryRetriever
retriever = MultiQueryRetriever.from_llm(
retriever=vectorstore.as_retriever(),
llm=llm
)
# จาก "วิธี setup auth?" → สร้างเป็น:
# - "How to configure authentication?"
# - "Steps for auth implementation"
# - "Authentication setup guide"
4. Parent Document Retriever
เก็บ chunks เล็ก แต่ส่ง document ใหญ่ให้ AI
from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore
store = InMemoryStore()
retriever = ParentDocumentRetriever(
vectorstore=vectorstore,
docstore=store,
child_splitter=small_splitter,
parent_splitter=large_splitter,
)
ข้อดีและข้อเสียของ RAG
✅ ข้อดี
- Update ง่าย: เพิ่มข้อมูลใหม่ได้ทันที ไม่ต้อง Re-train
- Traceable: สามารถอ้างอิงแหล่งที่มาได้
- Cost-Effective: ถูกกว่า Fine-tuning สำหรับข้อมูลที่อัปเดตบ่อย
- Flexible: เปลี่ยนแปลงข้อมูลได้ง่าย
- No Training Required: ไม่ต้อง Train model
❌ ข้อเสีย
- Latency: ช้ากว่าเพราะต้องค้นหาก่อน
- Quality Dependent: ขึ้นอยู่กับคุณภาพของ Retrieval
- Token Usage: ใช้ token มากกว่าเพราะต้องส่ง Context
- Complexity: ต้องจัดการ Vector DB และ Infrastructure
เมื่อไหร่ควรใช้ RAG?
✅ ควรใช้เมื่อ:
- ข้อมูลมีการอัปเดตบ่อย
- ต้องการอ้างอิงแหล่งที่มา
- มีข้อมูลจำนวนมาก (1000+ documents)
- ต้องการความยืดหยุ่นในการเพิ่ม/ลบข้อมูล
- ต้องการ Transparency (รู้ว่าคำตอบมาจากไหน)
❌ ไม่ควรใช้เมื่อ:
- ข้อมูลน้อยมาก (< 50 documents) → ใช้ Prompt ธรรมดาพอ
- ต้องการ Real-time response สูงมาก
- ไม่ต้องการจัดการ Infrastructure
Fine-Tuning vs RAG: เลือกอันไหนดี?
เปรียบเทียบโดยตรง
| หัวข้อ | Fine-Tuning | RAG |
|---|---|---|
| ความแม่นยำ | สูงมาก (ถ้า train ดี) | สูง (ขึ้นกับ retrieval) |
| ต้นทุนเริ่มต้น | สูง | ต่ำ-ปานกลาง |
| ต้นทุนใช้งาน | ต่ำ (token น้อย) | สูง (ส่ง context ทุกครั้ง) |
| Update ข้อมูล | ยาก (ต้อง re-train) | ง่าย (เพิ่มทันที) |
| เวลาตอบสนอง | เร็ว | ปานกลาง-ช้า |
| Transparency | ไม่มี | มี (อ้างอิงแหล่งที่มา) |
| Technical Complexity | สูง | ปานกลาง |
| Data Requirement | มาก (500+ examples) | น้อย (10+ documents) |
Decision Tree: ควรใช้อันไหน?
เริ่มต้น
│
├─ ข้อมูลอัปเดตบ่อย (ทุกวัน/สัปดาห์)?
│ │
│ ├─ ใช่ → RAG ✅
│ │
│ └─ ไม่ →
│ │
│ ├─ มีงบประมาณจำกัด?
│ │ │
│ │ ├─ ใช่ → RAG ✅
│ │ │
│ │ └─ ไม่ →
│ │ │
│ │ ├─ ต้องการ transparency?
│ │ │ │
│ │ │ ├─ ใช่ → RAG ✅
│ │ │ │
│ │ │ └─ ไม่ → Fine-Tuning ✅
กรณีศึกษา: เลือกเทคนิคที่เหมาะสม
Case 1: Customer Support Chatbot
สถานการณ์: บริษัท E-commerce ต้องการ chatbot ตอบคำถามลูกค้า
ข้อมูล:
- Product Catalog (1000+ สินค้า, อัปเดตทุกวัน)
- FAQ (50 คำถาม, เพิ่มเติมบ่อย)
- Policies (10 หน้า, แก้ไขทุกเดือน)
คำตอบ: RAG ✅
- ข้อมูลอัปเดตบ่อย
- ต้องการอ้างอิงแหล่งที่มา
- ต้องการความยืดหยุ่น
Case 2: Legal Document Drafting
สถานการณ์: บริษัททนายความต้องการ AI ช่วยร่างสัญญา
ข้อมูล:
- Template สัญญา (มาตรฐาน, ไม่เปลี่ยนแปลงบ่อย)
- Legal Clauses (500+ ข้อ)
- Company Style Guide
คำตอบ: Fine-Tuning ✅
- ข้อมูลคงที่
- ต้องการความสม่ำเสมอสูง
- ต้องการรูปแบบการเขียนเฉพาะ
Case 3: Medical Diagnosis Support
สถานการณ์: โรงพยาบาลต้องการ AI ช่วยแพทย์วินิจฉัยโรค
ข้อมูล:
- Medical Journals (อัปเดตบ่อย)
- Hospital Case Studies (เพิ่มทุกวัน)
- Treatment Guidelines (อัปเดตทุกปี)
คำตอบ: RAG + Fine-Tuning ✅ (Hybrid)
- RAG: สำหรับ Medical Journals และ Case Studies ที่อัปเดตบ่อย
- Fine-Tuning: สำหรับ Medical Terminology และ Diagnosis Reasoning
Hybrid Approach: รวมทั้ง 2 เทคนิค
บางครั้งคุณอาจต้องการใช้ทั้ง 2 เทคนิครวมกัน:
Fine-Tuned Model (เรียนรู้ Domain Knowledge)
+
RAG (ดึงข้อมูลล่าสุด)
=
Best of Both Worlds
ตัวอย่าง Hybrid System
# 1. Fine-tune model สำหรับ domain knowledge
fine_tuned_llm = ChatOpenAI(model="ft:gpt-3.5-turbo:org:medical:id")
# 2. ใช้ RAG เพื่อดึงข้อมูลล่าสุด
qa_chain = RetrievalQA.from_chain_type(
llm=fine_tuned_llm, # ใช้ Fine-tuned model
retriever=vectorstore.as_retriever()
)
# ได้ AI ที่:
# - เข้าใจ Medical Terms ดี (จาก Fine-tuning)
# - รู้จักข้อมูลล่าสุด (จาก RAG)
สรุป: เส้นทางการเลือกเทคนิค
Quick Decision Guide
ใช้ Prompt Engineering ถ้า:
- งานง่าย ข้อมูลน้อย
- ไม่ต้องการความแม่นยำสูงมาก
- Budget จำกัด
ใช้ RAG ถ้า:
- ข้อมูลอัปเดตบ่อย
- ต้องการอ้างอิงแหล่งที่มา
- มีข้อมูลจำนวนมาก
ใช้ Fine-Tuning ถ้า:
- ข้อมูลคงที่
- ต้องการความสม่ำเสมอสูงสุด
- มีงบประมาณเพียงพอ
- มีข้อมูล Training คุณภาพดี
ใช้ Hybrid (RAG + Fine-Tuning) ถ้า:
- ต้องการทั้ง Domain Expertise และข้อมูลล่าสุด
- มี Budget และ Technical Resources
- Application มีความสำคัญสูง (เช่น Medical, Legal)
ขั้นตอนการเริ่มต้น
-
เริ่มจาก Prompt Engineering
- ทดสอบว่าได้ผลพอหรือไม่
-
ลอง RAG
- ถ้า Prompt ไม่เพียงพอและมีข้อมูลจำนวนมาก
-
พิจารณา Fine-Tuning
- ถ้า RAG ยังไม่เพียงพอหรือต้องการ performance สูงสุด
-
Hybrid Approach
- เมื่อต้องการทั้ง 2 อย่าง
พร้อมสร้าง AI ที่เชี่ยวชาญเฉพาะด้านแล้วหรือยัง?
สมัครเรียนคอร์สขั้นสูง Fine-Tuning และ RAG ของเราได้ที่ AI Unlocked หรือปรึกษาทีมงานเพื่อออกแบบ AI Solution ที่เหมาะกับธุรกิจของคุณ!
เขียนโดย
AI Unlocked Team
บทความอื่นๆ ที่น่าสนใจ
วิธีติดตั้ง FFmpeg บน Windows และ Mac: คู่มือฉบับสมบูรณ์
เรียนรู้วิธีติดตั้ง FFmpeg บน Windows และ macOS พร้อมการตั้งค่า PATH อย่างละเอียด เพื่อใช้งานโปรแกรมตัดต่อวิดีโอและเสียงระดับมืออาชีพ
Prompt Engineering: ศิลปะการสอน AI ให้ทำงานตามที่ต้องการ
เจาะลึกเทคนิค Prompt Engineering ขั้นสูง พร้อมกรอบความคิด frameworks และตัวอย่างจริงที่นำไปใช้ได้ทันที
วิธีสอน AI ให้เข้าใจธุรกิจของคุณ: คู่มือสำหรับผู้เริ่มต้น
เรียนรู้วิธีการสอน AI ให้เข้าใจบริบทและความต้องการของธุรกิจคุณอย่างมีประสิทธิภาพ พร้อมเทคนิคและตัวอย่างจริง