𝗪𝗵𝘆 𝗠𝘆 𝗥𝗔𝗚 𝗔𝗽𝗽 𝗛𝗮𝗹𝗹𝘂𝗰𝗶𝗻𝗮𝘁𝗲𝗱 𝗔𝗻𝗱 𝗛𝗼𝘄 𝗜 𝗙𝗶𝘅𝗲𝗱 𝗜𝘁

ครั้งหนึ่งผมเคยสาธิต RAG support bot ให้เพื่อนร่วมงานดู

บอทบอกเธอว่านโยบายการคืนเงินของเราคือ 30 วัน

แต่นโยบายจริงๆ ของเราคือ 14 วัน

บอทไม่ได้บอกว่ามันไม่แน่ใจ แต่มันกลับสร้างคำตอบขึ้นมาเองด้วยความมั่นใจเต็มเปี่ยม

RAG ควรจะช่วยหยุดอาการ Hallucination ได้ แต่การตั้งค่าของผมกลับแค่ย้ายปัญหาไปที่อื่นเท่านั้น

ผมแก้ไขเรื่องนี้ได้โดยทำตาม 5 ขั้นตอนดังนี้

  1. ปรับปรุงกลยุทธ์การทำ Chunking

เมื่อก่อนผมใช้วิธีแบ่งเอกสารตามจำนวนตัวอักษร ซึ่งเป็นความผิดพลาด

หนึ่ง Chunk มักจะมีหลายหัวข้อปนกัน เช่น เรื่องการจัดส่งและการคืนสินค้า ทำให้โมเดลนำข้อมูลเหล่านี้มาผสมกันจนกลายเป็นคำตอบที่ผิด

วิธีแก้ไข: ผมเปลี่ยนมาใช้ semantic chunking โดยแบ่งข้อความตามหัวข้อ (headings) และย่อหน้า (paragraphs) แทน

  1. เลิกเชื่อถือแค่ค่า Similarity Score เพียงอย่างเดียว

ตัว Retriever ของผมดึง 3 Chunk แรกออกมาโดยอิงจากค่า cosine similarity

ความคล้ายคลึง (Similar) ไม่ได้แปลว่าความเกี่ยวข้อง (Relevant) เสมอไป Chunk หนึ่งอาจจะดูคล้ายกับคำถาม แต่ไม่มีคำตอบอยู่ในนั้นเลยก็ได้

วิธีแก้ไข: ผมเพิ่มขั้นตอน reranking ด้วย cross-encoder ซึ่งช่วยให้ผมรู้ว่าเมื่อไหร่ที่ระบบไม่มีข้อมูลจริงอยู่เลย

  1. อนุญาตให้โมเดล "ตอบไม่ได้"

Prompt เก่าของผมบอกแค่ว่า: จงใช้บริบท (context) เพื่อตอบคำถาม

หากในบริบทไม่มีคำตอบ โมเดลก็จะเติมช่องว่างด้วยการเดาเอาเอง

วิธีแก้ไข: ผมเพิ่มคำสั่งโดยตรงลงไปว่า "หากไม่มีคำตอบในบริบท ให้ตอบว่าไม่ทราบ" เพียงแค่นี้ก็ช่วยหยุดอาการ Hallucination ส่วนใหญ่ได้แล้ว

  1. กำหนดเกณฑ์การดึงข้อมูล (Retrieval Threshold)

บางครั้งเมื่อการดึงข้อมูลล้มเหลว โมเดลจะใช้ความรู้ทั่วไปมาตอบ ผมเคยหวังว่าแค่ใช้ Prompt อย่างเดียวก็พอ แต่ความหวังไม่ใช่กลยุทธ์ที่ดี

วิธีแก้ไข: ผมเพิ่มการตัดคะแนน (score cutoff) หากคะแนนการดึงข้อมูลต่ำเกินไป ระบบจะส่งคำตอบสำรอง (fallback response) ออกมาแทน ซึ่งหมายความว่าถ้าไม่มีบริบท ก็จะไม่มีการตอบคำถาม

  1. ทดสอบเพื่อหาจุดที่ล้มเหลว ไม่ใช่แค่ทดสอบความสำเร็จ

เมื่อก่อนผมทดสอบเฉพาะคำถามง่ายๆ โดยละเลยคำถามที่กำกวมหรือข้อมูลที่ขาดหายไป

วิธีแก้ไข: ผมสร้างชุดข้อมูลประเมินผล (evaluation set) ที่เป็น "คำถามดัก" (trap questions) ซึ่งเป็นกรณีที่ไม่มีคำตอบอยู่ในข้อมูล การรันการทดสอบเหล่านี้เป็นประจำจะช่วยให้เห็นชัดเจนว่าระบบของคุณพังตรงไหน

RAG ไม่ได้กำจัดอาการ Hallucination ให้หมดไป แต่มันทำให้เราควบคุมมันได้

บอทของผมยังไม่รู้ทุกรายละเอียด แต่ตอนนี้มันยอมรับเมื่อมันไม่แน่ใจ ซึ่งนั่นทำให้มันสามารถนำไปใช้งานจริงได้

Source: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10

Optional learning community: https://t.me/GyaanSetuAi