Lesson 09 · คาบบ่าย 28 ต.ค. (วิดีโอ 1:34–1:52) · ~25 นาที

RAG และ Fine-tuning เทียบกับ RAG

โยงกับสไลด์ LLM 40–53

เป้าหมายบทนี้: อธิบายขั้นตอนของ RAG, เลือกใช้ RAG หรือ Fine-tune ให้ถูก, และเลือกโมเดลที่ pretrain มากับโดเมนที่ตรง

1ปัญหา: Hallucination

สไลด์ LLM 40: Hallucination: LLM เข้าถึงข้อมูลส่วนตัวไม่ได้ · Perfect prompt ≠ access to missing knowledge
สไลด์ 40ดูประโยคท้ายสไลด์

ถามโมเดลว่าชื่ออาจารย์คนหนึ่ง (เช่น "พีรพล") คือใคร โมเดลตอบจากความจำ (memory) จึงตอบมั่วได้ เพราะเป็นข้อมูลที่ไม่มีในการ pretrain

วิธีแก้: ไปค้นจาก ฐานข้อมูลที่น่าเชื่อถือ ก่อน เช่นฐานข้อมูลภายในบริษัท แล้วค่อยตอบจากเอกสารนั้น

2RAG: Retrieval-Augmented Generation

สไลด์ LLM 42: Basic RAG Architecture: Offline (Parse, Chunk, Embed, Vector DB) และ Online (Question, Retrieve, Context, LLM, Answer)
สไลด์ 42แยกฝั่ง offline กับ online

ค้นเอกสาร (Retrieval) → นำเอกสารที่ค้นมาเสริมเป็น context (Augment) → ให้ LLM เขียนคำตอบ (Generation) ไม่แก้ weight ของโมเดล

เอาเอกสารที่สืบค้นได้มา augment แล้ว generate เป็นคำตอบ: "จงตอบคำถามข้อนี้โดยอ้างอิงจากเอกสารนี้" แทนที่จะตอบจากความมั่ว ๆ

ขั้นที่ 1: Parse และ Chunk

สไลด์ LLM 43: Document parsing & chunking: section-aware, semantic, table-aware
สไลด์ 43ดูข้อควรระวังเรื่องขนาด chunk

ขั้นแรกคือเตรียมเอกสารและ chunking ตัดเอกสารให้เป็นท่อนเล็ก ๆ

ขั้นที่ 2: Embedding

สไลด์ LLM 44: "high blood pressure treatment" กับ "antihypertensive medication" ได้เวกเตอร์ใกล้กัน
สไลด์ 44ดูว่าความหมายใกล้ = เวกเตอร์ใกล้

แปลงแต่ละ chunk เป็น embedding vector (ต่อจากบท 4: ข้อความก็เป็น non-tabular ที่ DL แปลงเป็นเวกเตอร์ได้) เก็บใน Vector DB ข้อความที่ความหมายใกล้กันจะได้เวกเตอร์ใกล้กัน

เอาเวกเตอร์ของคำถามไปสืบค้นในฐานข้อมูลเวกเตอร์ เทคนิคสืบค้นมีหลากหลาย อาจารย์ไม่ลงรายละเอียด

ขั้นที่ 3: Vector search

สไลด์ LLM 45: Vector search: Query → embedding → similarity search (cosine) → top-k chunks
สไลด์ 45ดูสูตร cosine

$$ \cos(q,d)=\frac{q\cdot d}{\lVert q\rVert\,\lVert d\rVert} $$

ลากเวกเตอร์ของคำถามไปรอบ ๆ ดู chunk ที่มุมใกล้กัน (cosine สูง) ถูกเลือกเป็น top-k

ยิ่งใกล้ 1 ยิ่งความหมายใกล้ ดึง top-k chunk มาเป็น context

ขั้นที่ 3.5: Sparse, Dense, Hybrid, Rerank

สไลด์ LLM 46: Sparse (BM25) เหมาะกับคำ/ชื่อ/รหัสเป๊ะ · Dense (vector) เหมาะกับ paraphrase
สไลด์ 46เทียบสองฝั่ง
Sparse / Keyword (BM25)Dense / Vector
ถนัดคำเฉพาะ ชื่อ รหัสความหมาย ความหมายแฝง
จุดอ่อนไม่เข้าใจคำพ้องพลาดคำเฉพาะ/รหัส

Hybrid = ใช้ทั้งสองอย่าง (สไลด์ 47: ไม่ได้แทนกัน แต่เสริมกัน)

สไลด์ LLM 48: 1M documents → Retriever (fast/high recall) Top 50 → Reranker (precise) Top 5 → LLM
สไลด์ 48ดูตัวเลขที่ลดลงเป็นขั้น

Retrieve กว้าง ๆ ก่อน (recall) แล้ว Rerank ให้แม่น (precision) ส่งเฉพาะ top 5 ให้ LLM

ขั้นที่ 4: Generate

LLM อ่าน question + context ที่ค้นได้ แล้วตอบ ถ้า retrieval แย่ hallucination ยังเกิดได้ (สไลด์ 51: "Higher if retrieval techniques/tools is weak")

3Fine-tuning เทียบกับ RAG

สไลด์ LLM 50: Fine-tuning = retrain LLM ที่ pretrain แล้วด้วยข้อมูลโดเมนของเรา
สไลด์ 50ดูเป้าหมาย "behave like an expert"

Fine-tune LLM คือการเทรนต่อยอดบน pretrained LLM ที่มีอยู่ ถามว่าแพงไหม? แพง เพราะ LLM ใหญ่มาก

สไลด์ LLM 51: ตาราง Fine-tuning vs RAG (cost, maintenance, knowledge, hallucination, best for)
สไลด์ 51อ่านทีละแถว
หัวข้อFine-tuningRAG
ต้นทุน/ความเร็วเทรนแพง ใช้งานเร็วเทรนถูก ตอบช้ากว่า
ดูแลต้อง retrain เมื่อข้อมูลใหม่อัปเดตข้อมูลอย่างเดียว
ความรู้อยู่ ใน โมเดลอยู่ นอก โมเดล
Hallucinationต่ำในโดเมนที่เทรนสูงถ้า retrieval อ่อน
เหมาะกับงานคงที่ซ้ำ ๆความรู้เปลี่ยน/ใหญ่

Fine-tuning ปรับ พฤติกรรม (how the model behaves) · RAG ปรับ ความรู้ (what the model knows)

ปกติเรานิยมไป prompt/RAG ก่อน ถ้ายังอยากเปลี่ยนพฤติกรรมของโมเดลจึงค่อยไป fine-tune

ถ้าต้องการให้ LLM ตอบคำถามเรื่องกฎหมายได้ → RAG (เพิ่มความรู้) แต่ถ้าต้องการให้ "พูดเหมือนหมอ/นักกฎหมาย" (เปลี่ยนพฤติกรรมการพูด) → fine-tune

ไม่จำเป็นต้องเลือกระหว่าง fine-tune กับ RAG ใช้ทั้งคู่ร่วมกันได้

อย่าตอบว่า "ใช้ fine-tune เพื่อให้โมเดลรู้ข้อมูลล่าสุด" ข้อมูลที่เปลี่ยนบ่อยเหมาะกับ RAG ส่วน fine-tune ต้องเทรนใหม่ทุกครั้งและแพง

4ธีมของอาจารย์: เลือก pretrained model ให้ถูกโดเมน

สไลด์ LLM 52: MedGemma (Google DeepMind)
สไลด์ 52ดูว่าเป็น Gemma ที่ปรับด้วยข้อมูลการแพทย์

ตอนนี้ต้องดูด้วยว่าโมเดลถูก pretrain บนข้อมูลอะไร ไม่ใช่ดูแค่ขนาด เช่น MedGemma ปรับ Gemma ด้วยข้อมูลการแพทย์ให้เป็นผู้เชี่ยวชาญฝั่งแพทย์ และ WeatherNext pretrain บนข้อมูลอากาศ

5ลองทำ

อ่านเพิ่ม / ที่มา

ติดตรงไหน ถาม Claude ได้เลย บอกเลขบทกับเลขข้อมาด้วย