ทำ RAG กับเอกสารภาษาไทย: ปัญหาที่เจอบ่อยและวิธีแก้

Plants.work · · upskilling
ทำ RAG กับเอกสารภาษาไทย: ปัญหาที่เจอบ่อยและวิธีแก้

ภาษาไทยไม่มีการเว้นวรรคระหว่างคำ ทำให้ RAG พลาดในแบบที่ภาษาอังกฤษไม่เจอ รวมปัญหาที่พบบ่อยตั้งแต่ตัดคำ หั่นเอกสาร จนถึงคำทับศัพท์ พร้อมวิธีแก้

ทีมของคุณทำตาม tutorial RAG ภาษาอังกฤษได้ครบทุกขั้น ทดสอบกับเอกสารอังกฤษก็ตอบดี แต่พอใส่คู่มือภาษาไทยเข้าไป ผลกลับค้นไม่เจอบ้าง ตอบผิดหัวข้อบ้าง ปัญหานี้ไม่ได้เกิดจากทีมทำผิด แต่เกิดจากลักษณะของภาษาไทยเองที่เครื่องมือส่วนใหญ่ไม่ได้ออกแบบมาเพื่อมันตั้งแต่ต้น

ทำไมภาษาไทยถึงยากสำหรับ RAG

งานวิจัย PyThaiNLP: Thai Natural Language Processing in Python (2023) อธิบายว่าภาษาไทยในรูปแบบที่ใช้ทั่วไปเขียนต่อกันโดยไม่มีช่องว่างหรือเครื่องหมายคั่นระหว่างคำและระหว่างประโยค ขอบเขตของคำและประโยคจึงไม่ชัด และหลายครั้งไวยากรณ์อย่างเดียวก็แก้ความกำกวมไม่ได้ ระบบที่คิดมาจากภาษาที่เว้นวรรคระหว่างคำ จึงสะดุดตั้งแต่ขั้นแรก

ปัญหาที่ 1: การตัดคำ

Keyword search อย่าง BM25 ต้องรู้ว่า "คำ" คืออะไร ถ้าระบบตัดคำไม่เป็น ข้อความ "ลาคลอดได้กี่วัน" อาจถูกมองเป็นก้อนเดียว และค้นไม่เจอเอกสารที่เขียนว่า "การลาเพื่อคลอดบุตร"

วิธีแก้

ปัญหาที่ 2: หั่นเอกสารกลางประโยค

ตัวหั่นข้อความหลายตัวใช้จุด (.) หรือขึ้นบรรทัดใหม่เป็นจุดตัด แต่ภาษาไทยไม่ใช้จุดจบประโยค และใช้ช่องว่างทั้งเพื่อจบประโยคและเว้นวลี chunk จึงถูกตัดกลางใจความได้ง่าย

วิธีแก้

ปัญหาที่ 3: คำทับศัพท์และภาษาปนกัน

เอกสารองค์กรไทยมักมีคำแบบ "อีเมล" "อีเมล์" และ "email" ปนกัน หรือ "OT" กับ "ค่าล่วงเวลา" พนักงานถามแบบหนึ่ง แต่เอกสารเขียนอีกแบบ

วิธีแก้

ปัญหาที่ 4: ดึงข้อความจาก PDF แล้วเพี้ยน

PDF ภาษาไทยบางไฟล์ เมื่อดึงข้อความออกมา สระและวรรณยุกต์อาจผิดตำแหน่ง หรือได้ตัวอักษรแปลกๆ ขึ้นกับฟอนต์และวิธีสร้างไฟล์ ส่วนไฟล์สแกนต้องผ่าน OCR ที่อ่านภาษาไทยได้ก่อน

วิธีแก้

ตัวอย่างในองค์กรไทย

โรงพยาบาลเอกชนแห่งหนึ่งทำ RAG ให้พยาบาลค้นแนวปฏิบัติภายใน รอบแรกพยาบาลพิมพ์ว่า "คนไข้แพ้ยา ต้องรายงานยังไง" แต่ระบบหาไม่เจอ เพราะเอกสารใช้คำว่า "อาการไม่พึงประสงค์จากการใช้ยา" และ "ADR" ทีมจึงเพิ่มอภิธานศัพท์ที่จับคู่คำพูดในหอผู้ป่วยกับคำทางการ เพิ่มตัวตัดคำภาษาไทยให้ keyword search และหั่นเอกสารตามหัวข้อแทนการนับตัวอักษร ผลการค้นดีขึ้นโดยไม่ต้องเปลี่ยนโมเดลภาษาเลย

ข้อควรระวัง

เครื่องมือส่วนใหญ่ไม่ได้ออกแบบมาเพื่อภาษาไทย เราจึงต้องออกแบบให้ภาษาไทยเอง

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

  1. เก็บคำถามภาษาไทยจริงจากพนักงาน 30 ข้อขึ้นไป รวมภาษาพูดและคำทับศัพท์
  2. ตรวจคุณภาพข้อความที่ดึงจาก PDF ก่อนทำอย่างอื่น
  3. เลือก embedding model หลายภาษา และทดสอบเทียบกันด้วยคำถามชุดนั้น
  4. เพิ่มตัวตัดคำภาษาไทยและอภิธานศัพท์ของบริษัทให้ keyword search
  5. วัดผลซ้ำทุกครั้งที่ปรับ และเก็บคำถามที่พลาดมาเพิ่มในชุดทดสอบ

ถ้าเอกสารของคุณเป็นไฟล์สแกนจำนวนมาก อ่าน Document AI: ดึงข้อมูลจาก PDF และเอกสารสแกน ต่อได้ และถ้าอยากรู้ว่าโมเดล AI ตัวไหนใช้ภาษาไทยได้ดี ลองอ่าน Claude AI กับภาษาไทย บน Plants.work