Chunking และ Embedding: หัวใจของ RAG ที่ตอบแม่น

Plants.work · · upskilling
Chunking และ Embedding: หัวใจของ RAG ที่ตอบแม่น

ทำไม RAG ตัวเดียวกันตอบแม่นในบางบริษัทแต่มั่วในอีกบริษัท เข้าใจการหั่นเอกสารและ Embedding พร้อมวิธีตั้งค่าที่ใช้ได้จริง

สองบริษัทใช้โมเดล AI ตัวเดียวกัน ทำ Chatbot ตอบคำถามจากเอกสารเหมือนกัน แต่ที่หนึ่งตอบแม่นจนพนักงานติดใจ อีกที่ตอบมั่วจนไม่มีใครใช้ ความต่างส่วนใหญ่ไม่ได้อยู่ที่โมเดล แต่อยู่ที่ขั้นตอนเตรียมข้อมูลที่คนมักมองข้าม นั่นคือ Chunking และ Embedding

Chunking และ Embedding คืออะไร

ในระบบ RAG เราไม่ได้ส่งเอกสารทั้งเล่มให้ AI อ่าน แต่ต้องหั่นเอกสารเป็นชิ้นเล็กๆ ก่อน การหั่นนี้เรียกว่า Chunking และแต่ละชิ้นเรียกว่า chunk

จากนั้นแต่ละ chunk จะถูกแปลงเป็นชุดตัวเลขยาวๆ ที่เรียกว่า Embedding หรือ vector ซึ่งเป็นเหมือน "พิกัดความหมาย" ข้อความที่ความหมายใกล้กันจะได้พิกัดที่อยู่ใกล้กัน เมื่อผู้ใช้ถามคำถาม ระบบจะแปลงคำถามเป็นพิกัดเหมือนกัน แล้วหา chunk ที่อยู่ใกล้ที่สุด วิธีวัดความใกล้ที่นิยมคือ cosine similarity

ทำไม Chunking ถึงสำคัญ

Chunk ใหญ่เกินไป

หนึ่ง chunk มีหลายเรื่องปนกัน พิกัดความหมายจึงเบลอ ค้นเจอยาก และส่งข้อความที่ไม่เกี่ยวข้องให้ AI อ่านเยอะเกินจำเป็น

Chunk เล็กเกินไป

ข้อความขาดบริบท เช่น chunk ที่เขียนว่า "วงเงินไม่เกิน 3,000 บาทต่อปี" โดยไม่มีหัวข้อกำกับ AI จะไม่รู้เลยว่าเป็นวงเงินของสวัสดิการอะไร

ปัญหาบริบทหาย

Anthropic อธิบายปัญหานี้ในแนวทางที่เรียกว่า Contextual Retrieval (กันยายน 2024) โดยเติมคำอธิบายสั้นๆ ว่า chunk นั้นมาจากส่วนไหนของเอกสารไว้หน้า chunk ก่อนแปลงเป็น embedding ตามรายงานของ Maginative ที่สรุปผลทดสอบของ Anthropic วิธีนี้ลดการค้นไม่เจอ (failed retrievals) ได้ 35% และลดได้ 49% เมื่อใช้คู่กับการค้นแบบคีย์เวิร์ด BM25

วิธีหั่นเอกสารที่ใช้กันบ่อย

เลือก Embedding Model ยังไง

Embedding model คือตัวแปลงข้อความเป็นพิกัด ถ้าเอกสารของคุณเป็นภาษาไทยปนอังกฤษ ต้องเลือกโมเดลที่รองรับหลายภาษา ตัวอย่างเช่น BGE-M3 ของ BAAI ซึ่งเอกสารทางการระบุว่ารองรับมากกว่า 100 ภาษา และรับข้อความได้ถึง 8,192 token สิ่งที่ควรดูประกอบกัน คือ

ตัวอย่างจริงในออฟฟิศไทย

ฝ่ายบัญชีของบริษัทผลิตชิ้นส่วนแห่งหนึ่งนำ "ระเบียบการเบิกค่าใช้จ่าย" มาทำ RAG รอบแรกใช้ fixed-size chunk ผลคือเมื่อถามว่า "เบิกค่าที่พักต่างจังหวัดได้เท่าไร" ระบบดึงตัวเลขของค่าเบี้ยเลี้ยงมาตอบ เพราะสองเรื่องอยู่ติดกันและถูกตัดรวมใน chunk เดียว

รอบที่สองทีมเปลี่ยนมาตัดตามหัวข้อย่อย และเติมบรรทัดนำหน้าทุก chunk ว่า "ระเบียบการเบิกค่าใช้จ่าย หมวดค่าที่พัก" คำตอบแม่นขึ้นอย่างเห็นได้ชัด โดยไม่ต้องเปลี่ยนโมเดล AI เลย

ข้อควรระวัง

AI ตอบได้ดีแค่ไหน ขึ้นกับว่าเราหั่นความรู้ให้มันดีแค่ไหน

เริ่มต้นยังไง

  1. เลือกเอกสาร 3 ถึง 5 ฉบับที่ถูกถามบ่อยที่สุดมาเป็นชุดทดลอง
  2. ทำความสะอาดก่อน: ลบหัวกระดาษซ้ำ เลขหน้า และข้อความที่ไม่จำเป็น
  3. เริ่มจากการตัดตามหัวข้อ พร้อม overlap เล็กน้อย และใส่ชื่อหัวข้อนำหน้าทุก chunk
  4. เขียนคำถามทดสอบพร้อมคำตอบที่ถูก แล้วดูว่าระบบดึง chunk ถูกชิ้นหรือไม่
  5. ปรับขนาด chunk และวิธีตัดทีละอย่าง แล้ววัดผลเทียบกันทุกครั้ง

ถ้ายังไม่แน่ใจว่า RAG ทำงานภาพรวมยังไง เริ่มจาก RAG คืออะไร ก่อน และถ้าอยากพัฒนาทักษะ AI สายข้อมูลต่อ ดูคอร์สที่เกี่ยวข้องได้ที่ Plants.work Learn