
วัด RAG ให้ถูกจุด: faithfulness สูงไม่ได้แปลว่าค้นเอกสารครบ

ถ้าคำตอบจากระบบ RAG ผิด ให้แยกตรวจสองช่วงก่อนเลือกวิธีแก้: ใช้ context recall ดูว่าบริบทที่ค้นได้ครอบคลุมคำตอบอ้างอิงหรือไม่ และใช้ context precision ดูว่าชิ้นข้อความที่เกี่ยวข้องอยู่ในลำดับที่ดีเพียงใด จากนั้นใช้ faithfulness ตรวจว่าข้อกล่าวอ้างในคำตอบมีบริบทรองรับ และใช้ answer relevancy ตรวจว่าคำตอบตรงกับคำถาม กรอบเมตริก RAG ของ Microsoft อธิบายการแยกคุณภาพฝั่งค้นคืนออกจากคุณภาพฝั่งสร้างคำตอบเช่นนี้
คำตอบที่ยึดบริบททุกประโยคอาจยังขาดเงื่อนไขสำคัญ หากระบบไม่เคยค้นพบข้อความที่มีเงื่อนไขนั้น คะแนน faithfulness สูงจึงบอกได้เพียงว่าคำตอบไม่กล่าวเกินหลักฐานที่ได้รับ ไม่ได้บอกว่าหลักฐานนั้นครบ การวินิจฉัยต้องเก็บคำถาม คำตอบอ้างอิง ผลค้นคืนตามลำดับ บริบทที่ส่งเข้าโมเดลจริง และคำตอบสุดท้ายไว้ในรายการทดสอบเดียวกัน มิฉะนั้นจะระบุไม่ได้ว่าข้อมูลหายไปที่ขั้นใด
สร้างชุดทดสอบที่ย้อนหาข้อผิดพลาดได้
เริ่มจากคำถามที่สะท้อนงานจริงของระบบ และเขียนคำตอบอ้างอิงจากเอกสารที่ผู้รับผิดชอบเนื้อหายืนยันแล้ว สำหรับแต่ละรายการ ให้ระบุชิ้นเอกสารหรือช่วงข้อความที่รองรับคำตอบ พร้อมฉบับเอกสารและขอบเขตการใช้ข้อมูลนั้น ถ้านโยบายมีหลายฉบับหรือเงื่อนไขต่างกันตามประเภทผู้ใช้ คำตอบอ้างอิงต้องบอกให้ชัดว่ากรณีทดสอบถามถึงฉบับและกลุ่มใด
คำตอบอ้างอิงควรเก็บข้อเท็จจริงที่จำเป็นต่อการตอบครบทุกส่วนของคำถาม หากผู้ใช้ถามทั้งกำหนดเวลาและเงื่อนไขสิทธิ์ การเขียนไว้เพียงกำหนดเวลาจะทำให้การวัดความครบของการค้นคืนคลาดเคลื่อน ควรแยกสาระที่ตรวจได้ เช่น ระยะเวลา ผู้มีสิทธิ์ ข้อยกเว้น และเอกสารประกอบ โดยไม่บังคับให้คำตอบที่ระบบสร้างใช้ถ้อยคำเหมือนคำตอบอ้างอิงทุกคำ
บันทึกผลค้นคืนก่อนและหลังขั้นจัดอันดับใหม่แยกกันเมื่อระบบมีขั้นนั้น รวมทั้งชิ้นข้อความที่ผ่านตัวกรองสิทธิ์หรือถูกตัดออกเพราะข้อจำกัดขนาดบริบท ลำดับผลค้นคืนอย่างเดียวไม่พอ หากข้อความที่ได้อันดับดีไม่ได้ถูกส่งต่อไปยังโมเดล การเก็บร่องรอยแต่ละช่วงช่วยแยกกรณีที่ตัวค้นคืนหาเอกสารไม่พบออกจากกรณีที่ระบบพบแล้วแต่ทำข้อมูลหล่นระหว่างทาง
ชุดทดสอบภาษาไทยควรครอบคลุมคำถามที่ใช้ชื่อเต็มกับตัวย่อ ภาษาพูดกับถ้อยคำในเอกสาร และการสะกดชื่อเฉพาะหลายแบบ เพิ่มคำถามที่ต้องประกอบข้อมูลจากหลายย่อหน้า และคำถามที่มีคำปฏิเสธหรือข้อยกเว้นซึ่งเปลี่ยนคำตอบได้ การคัดข้อความจากเอกสารมาใช้เป็นคำถามตรง ๆ เพียงอย่างเดียวอาจทำให้มองไม่เห็นปัญหาที่เกิดเมื่อผู้ใช้เรียกเรื่องเดียวกันด้วยคำต่างออกไป
ควรมีกรณีที่ข้อมูลคำตอบไม่มีอยู่ในคลังด้วย แต่ให้แยกจากกรณีที่มีคำตอบอ้างอิงสำหรับวัด context recall เมื่อไม่มีข้อเท็จจริงอ้างอิงให้ค้น การหารสัดส่วนข้อกล่าวอ้างที่ค้นพบย่อมไม่ตอบโจทย์ การทดสอบประเภทนี้ควรดูว่าระบบแจ้งข้อจำกัดของข้อมูลได้ตรงไปตรงมา และไม่เติมคำตอบที่ไม่มีหลักฐาน
Context recall ชี้ว่าหลักฐานหายไปตรงไหน
นิยาม context recall ของ Ragas ระบุว่ารูปแบบที่ใช้โมเดลประเมินจะนำคำตอบอ้างอิงมาแยกเป็นข้อกล่าวอ้าง แล้วตรวจว่าแต่ละข้อมีบริบทที่ค้นคืนรองรับหรือไม่ คะแนนจึงขึ้นกับความครบและความถูกต้องของคำตอบอ้างอิงด้วย หากคำตอบอ้างอิงละข้อยกเว้นสำคัญ คะแนนที่ดูสูงก็ไม่ช่วยเผยว่าระบบค้นข้อยกเว้นนั้นไม่พบ
เมื่อ recall ต่ำ จุดแรกที่ต้องตรวจคือข้อเท็จจริงนั้นมีอยู่ในคลังเอกสารที่ระบบเข้าถึงได้หรือไม่ หากไม่มี ให้แก้การนำเอกสารเข้า การเลือกฉบับที่ใช้งาน และการอัปเดตเนื้อหา การปรับคำสั่งให้โมเดลอธิบายละเอียดขึ้นไม่สามารถสร้างหลักฐานที่คลังไม่มี และการเพิ่มจำนวนผลค้นคืนก็ไม่ช่วยในกรณีนี้
หากเอกสารอยู่ในคลัง ให้ดูว่าข้อความที่ต้องการถูกตัดแบ่งจนเงื่อนไขแยกจากคำตอบหลักหรือไม่ ตัวอย่างเช่น ย่อหน้าหนึ่งบอกระยะเวลา แต่อีกย่อหน้าถัดไปบอกข้อยกเว้น หากชิ้นข้อความที่ใช้ค้นแยกสองส่วนโดยไม่มีบริบทเชื่อมกัน ระบบอาจพบเพียงส่วนแรก กรณีเช่นนี้ชี้ไปที่การตัดแบ่งและการเก็บโครงสร้างเอกสาร มากกว่าการเขียนคำตอบ
ถ้าชิ้นข้อความถูกจัดเก็บครบแต่ไม่ปรากฏในผลค้นคืน ให้ตรวจการทำดัชนี การจับคู่คำถามกับเอกสาร ตัวกรองข้อมูล และจำนวนผลที่ดึงมา คำถามภาษาไทยที่ใช้ตัวย่ออาจไม่ตรงกับชื่อเต็มในเอกสาร ส่วนคำถามที่มีหลายเงื่อนไขอาจพาเครื่องค้นไปหาเพียงเงื่อนไขที่เด่นที่สุด การเปิดดูผลรายคำถามจะบอกได้ว่าควรปรับการค้น การขยายคำ หรือการจัดหมวดข้อมูลส่วนใด
ต้องแยกบริบทที่ค้นพบออกจากบริบทที่โมเดลได้รับด้วย หากข้อความที่รองรับคำตอบอ้างอิงอยู่ในผลค้นคืน แต่ถูกตัดออกก่อนสร้างคำตอบ คะแนนที่คำนวณจากผลค้นคืนทั้งหมดอาจปิดบังปัญหาในการส่งต่อข้อมูล สำหรับการวินิจฉัยคำตอบผิด ให้ตรวจทั้งผลค้นคืนเต็มชุดและชุดที่ส่งเข้าโมเดลจริง พร้อมระบุให้ชัดว่าแต่ละคะแนนคำนวณจากชุดใด
Context precision บอกว่าหลักฐานอยู่ในตำแหน่งที่ใช้ได้หรือไม่
นิยาม context precision ของ Ragas ให้ความสำคัญกับการจัดชิ้นข้อความที่เกี่ยวข้องไว้เหนือชิ้นที่ไม่เกี่ยวข้อง จึงควรเก็บลำดับผลค้นคืน ไม่ใช่เพียงรายชื่อเอกสารที่พบ เมตริกนี้ช่วยระบุกรณีที่หลักฐานมีอยู่แล้วแต่ถูกผลลัพธ์รบกวนแทรกไว้ก่อนหน้า โดยเฉพาะเมื่อระบบส่งชิ้นข้อความเข้าโมเดลได้จำกัด
ถ้า recall สูงแต่ precision ต่ำ ให้ดูว่าข้อความที่จำเป็นอยู่ลำดับใดและเข้าสู่บริบทจริงหรือไม่ เอกสารที่มีคำเหมือนคำถามมากอาจขึ้นก่อนเอกสารที่ตอบคำถามครบกว่า ควรตรวจเกณฑ์จัดอันดับ ความละเอียดของชิ้นข้อความ และความสัมพันธ์ระหว่างคำถามกับข้อความที่ถูกเลือก ก่อนสรุปว่าโมเดลสร้างคำตอบไม่ดี
การเลือกชนิดของ context precision มีผลต่อการตีความ แบบที่เทียบผลค้นคืนกับคำตอบอ้างอิงเหมาะกับชุดทดสอบที่มีคำตอบที่ตรวจแล้ว ส่วนแบบที่เทียบกับคำตอบที่ระบบสร้างใช้งานได้เมื่อไม่มีคำตอบอ้างอิง แต่มีข้อจำกัด: หากคำตอบสุดท้ายละเงื่อนไขสำคัญ ข้อความที่มีเงื่อนไขนั้นอาจดูไม่เกี่ยวข้องเมื่อใช้คำตอบที่บกพร่องเป็นเกณฑ์
Recall และ precision ต่ำพร้อมกันอาจมีมากกว่าหนึ่งต้นเหตุ คลังเอกสารอาจขาดบางส่วน ขณะที่ตัวจัดอันดับยังวางข้อความรบกวนไว้สูง การแก้ด้วยการดึงผลเพิ่มอาจทำให้พบหลักฐานมากขึ้น แต่เพิ่มข้อความที่ไม่เกี่ยวข้องตามมาด้วย จึงต้องดูตำแหน่งของหลักฐานที่เพิ่มขึ้นและตรวจว่าหลักฐานนั้นถูกส่งถึงโมเดลจริงหรือไม่
Faithfulness และ answer relevancy แยกข้อผิดพลาดในคำตอบ
Faithfulness ตรวจข้อกล่าวอ้างที่คำตอบสร้างขึ้นกับบริบทที่โมเดลได้รับ หากคำตอบระบุเงื่อนไขหรือระยะเวลาที่อนุมานจากบริบทไม่ได้ คะแนนด้านนี้ควรสะท้อนปัญหา แต่การตอบสั้นจนไม่กล่าวถึงเงื่อนไขที่ขาดไปอาจยังได้คะแนนสูง เพราะไม่มีข้อกล่าวอ้างที่เกินหลักฐานให้ลงโทษ นี่คือเหตุผลที่ต้องอ่านคะแนนนี้คู่กับความครบของการค้นคืนและคำตอบอ้างอิง
เมื่อหลักฐานอยู่ในบริบทครบ แต่ faithfulness ต่ำ ให้ตรวจคำสั่งที่กำหนดขอบเขตการตอบ การใช้ข้อมูลทั่วไปของโมเดลแทนข้อความที่ค้นมา และการสรุปเงื่อนไขหลายข้อให้กลายเป็นข้อเดียว คำสั่งควรทำให้ระบบผูกข้อความสำคัญในคำตอบกับหลักฐานที่ได้รับ และยอมระบุเมื่อหลักฐานไม่พอ อย่างไรก็ดี การแก้คำสั่งควรตามหลังการยืนยันว่าข้อความที่ถูกต้องเข้าสู่บริบทแล้ว
Answer relevancy ถามอีกอย่างหนึ่งว่าคำตอบตอบสิ่งที่ผู้ใช้ถามหรือไม่ คำตอบอาจมีหลักฐานรองรับทุกประโยค แต่พูดถึงขั้นตอนขอคืนสินค้าแทนกำหนดเวลาคืนสินค้า หรืออธิบายเพียงข้อแรกของคำถามที่มีหลายส่วน ความตรงคำถามจึงต้องพิจารณาจากคำถามและคำตอบร่วมกัน ไม่ควรอนุมานจาก faithfulness เพียงค่าเดียว
ความตรงคำถามก็ไม่ใช่การรับรองความถูกต้องของข้อเท็จจริง คำตอบที่ให้รูปแบบตรงใจผู้ใช้และตอบครบทุกหัวข้ออาจระบุค่าผิด หรือเพิ่มเงื่อนไขที่ไม่มีในบริบท หากคะแนน relevancy ดีแต่ faithfulness ต่ำ ให้เปิดดูข้อกล่าวอ้างที่ไม่ได้รับการรองรับ หากทั้งสองค่าต่ำ ทั้งการเลือกประเด็นและการยึดหลักฐานอาจต้องแก้พร้อมกัน
เมตริกที่ใช้โมเดลตัดสินอาจแยกข้อกล่าวอ้างผิดหรืออ่านความหมายของคำปฏิเสธคลาดเคลื่อน โดยเฉพาะเมื่อประโยคมีเงื่อนไขซ้อนกัน ก่อนใช้คะแนนเป็นเกณฑ์ตัดสินระบบ ควรให้ผู้ตรวจที่เข้าใจเนื้อหาตัดสินตัวอย่างชุดเดียวกัน แล้วดูกรณีที่คำตัดสินไม่ตรงกัน การตรวจเช่นนี้บอกได้ว่าความผิดปกติอยู่ที่ระบบ RAG หรืออยู่ที่ผู้ให้คะแนนอัตโนมัติ
จับรูปแบบคะแนนคู่กับจุดที่ควรแก้
คะแนนทั้งสี่เป็นสัญญาณระบุตำแหน่งปัญหา ไม่ใช่คำสั่งแก้แบบตายตัว ให้เริ่มจากรายการทดสอบที่ตอบผิดและดูข้อความจริงในแต่ละช่วงของระบบ การตีความควรยึดว่ามีหลักฐานใดอยู่ในคลัง ถูกค้นพบ ถูกส่งเข้าโมเดล และถูกใช้ในคำตอบ แทนการดูค่าเฉลี่ยรวมเพียงค่าเดียว
- Recall ต่ำ แต่ faithfulness สูง: คำตอบอาจยึดข้อความที่ค้นพบอย่างเคร่งครัด ขณะที่ข้อความนั้นไม่ครอบคลุมคำตอบอ้างอิง ให้ตรวจคลังเอกสาร การทำดัชนี และการค้นคืนก่อนแก้คำสั่งสร้างคำตอบ
- Recall สูง แต่ precision ต่ำ: หลักฐานอยู่ในผลค้นคืนแล้ว แต่อาจถูกวางหลังข้อความรบกวน ให้ตรวจลำดับผล การจัดอันดับใหม่ และข้อจำกัดของบริบทที่ส่งเข้าโมเดล
- Recall และ precision ดี แต่ faithfulness ต่ำ: หลักฐานที่ต้องใช้มีอยู่และถูกจัดไว้ดี ให้ตรวจว่าคำตอบเพิ่มข้อกล่าวอ้างนอกบริบท อ่านเงื่อนไขผิด หรือใช้ข้อความที่ได้รับไม่ครบ
- ผลค้นคืนดีและ faithfulness สูง แต่ relevancy ต่ำ: ข้อความที่ตอบมีหลักฐานรองรับ ทว่าระบบอาจตอบผิดประเด็นหรือละบางส่วนของคำถาม ให้ตรวจวิธีตีความคำถามและรูปแบบคำสั่งตอบ
รูปแบบเหล่านี้อาจเกิดร่วมกันในรายการเดียว เช่น ระบบค้นข้อยกเว้นไม่พบ แล้วยังแต่งข้อยกเว้นอีกข้อขึ้นเอง กรณีนั้นทั้ง recall และ faithfulness มีเหตุให้ต่ำ การแก้เฉพาะฝั่งใดฝั่งหนึ่งจึงอาจทำให้คะแนนบางตัวดีขึ้นแต่คำตอบยังผิด ควรเก็บข้อผิดพลาดรายข้อกล่าวอ้างไว้ข้างคะแนนรวมเพื่อเห็นงานแก้ที่เหลือ
ตัวอย่างชุดทดสอบภาษาไทยและการตรวจคะแนน
สมมติว่าเอกสารนโยบายคืนสินค้าระบุว่า “คืนได้ภายในเจ็ดวัน โดยต้องมีหลักฐานการซื้อและสินค้ายังไม่ถูกใช้” คำถามทดสอบคือ “คืนสินค้าได้ภายในกี่วัน และต้องมีเงื่อนไขอะไรบ้าง” คำตอบอ้างอิงต้องครอบคลุมทั้งระยะเวลาและเงื่อนไขทั้งสอง พร้อมระบุช่วงเอกสารที่รองรับ ตัวเลขและนโยบายนี้เป็นเพียงตัวอย่างสมมติ ไม่ใช่เงื่อนไขของร้านค้าใด
หากระบบค้นพบเฉพาะข้อความเรื่องเจ็ดวัน แล้วตอบว่า “คืนได้ภายในเจ็ดวัน” คำตอบอาจมี faithfulness สูง เพราะไม่ได้กล่าวเกินสิ่งที่ได้รับ แต่ context recall ควรชี้ว่าหลักฐานสำหรับเงื่อนไขยังขาด การเปิดดูคลังและผลค้นคืนต่อจะบอกได้ว่าเงื่อนไขไม่อยู่ในคลัง อยู่คนละชิ้นข้อความ หรืออยู่ในผลลำดับท้ายที่ไม่ได้ส่งให้โมเดล
ในอีกกรณีสมมติ บริบทมีครบทุกเงื่อนไข แต่คำตอบระบุว่า “คืนได้ภายในสิบสี่วัน” ข้อกล่าวอ้างเรื่องเวลานี้ไม่สอดคล้องกับบริบท จึงชี้ไปที่ faithfulness หากคำตอบพูดถึงวิธีห่อสินค้าอย่างละเอียด แต่ไม่บอกกำหนดเวลาและเงื่อนไขที่ถูกถาม ปัญหาความตรงคำถามก็ปรากฏด้วย แม้ข้อความบางส่วนจะมีหลักฐานรองรับ
เพิ่มคำถามที่เปลี่ยนถ้อยคำแต่คงเจตนาเดิม เช่น “ของยังไม่แกะ คืนได้เมื่อไร” และคำถามที่เปลี่ยนเงื่อนไขจริง เช่น สินค้าถูกใช้แล้วหรือไม่มีหลักฐานการซื้อ การจับคู่คำถามเหล่านี้ช่วยดูว่าระบบค้นคืนตามความหมายได้หรือเพียงจับคำตรงตัว ทั้งยังเผยว่าคำตอบแยกข้อยกเว้นที่มีผลต่อสิทธิ์ได้หรือไม่
ให้ผู้ตรวจทานทำเครื่องหมายทีละข้อว่าคำตอบอ้างอิงมีสาระใด บริบทที่ส่งเข้าโมเดลรองรับสาระใด และคำตอบสุดท้ายกล่าวอ้างสิ่งใดเกินบริบท เมื่อเทียบผลกับผู้ให้คะแนนอัตโนมัติ ให้สนใจกรณีที่คะแนนดูดีแต่ผู้ตรวจพบเงื่อนไขหายไปหรือคำปฏิเสธถูกอ่านกลับความหมาย เก็บกรณีที่เห็นต่างพร้อมเหตุผลไว้ปรับเกณฑ์ตัดสิน แล้วใช้ชุดคำถามเดิมเปรียบเทียบหลังแก้คลังเอกสาร ตัวค้นคืน หรือคำสั่งสร้างคำตอบ
อ่านเพิ่มเติม:
บทความที่เกี่ยวข้อง


Gemini API หรือ Claude API: โมเดลถูกกว่าอาจไม่ถูกในงานเขียนโค้ด

ChatGPT Plus หรือ Claude Pro: งานยาวติดเพดานคนละแบบ

กัน prompt injection ใน RAG: คำสั่งว่า “อย่าเชื่อเอกสาร” ยังไม่พอ

Dify หรือ Flowise: ระบบทีมที่พร้อมกว่าแลกกับเซิร์ฟเวอร์หนักขึ้น

ปิดข้อมูลส่วนบุคคลก่อนส่งให้ LLM: redaction กับ tokenization ใช้แทนกันไม่ได้
สมัครรับจดหมายข่าวของเรา
รับข่าวสารล่าสุดเกี่ยวกับ Web3, AI และคริปโตส่งตรงถึงกล่องจดหมายของคุณ