วิธีทดสอบหน่วยความจำ RAG ให้เร็วก่ายกองด้วย Playwright และ Chroma
เปลี่ยนจากการใช้ Postman แบบเดิมๆ มาเป็นการทดสอบอัตโนมัติแบบ end-to-end ที่เจาะลึกถึงฐานข้อมูลเวกเตอร์โดยตรง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การทดสอบความจำ RAG แบบดั้งเดิมด้วย Postman และ Chroma มีความล่าช้าและผิดพลาดได้ง่าย
- การใช้ Playwright ช่วยควบคุมเบราว์เซอร์จริงจำลองพฤติกรรมผู้ใช้ได้อย่างแม่นยำ
- เชื่อมต่อกับ Chroma แบบฝังตัวเพื่อตรวจสอบข้อมูลหน่วยความจำที่ถูกบันทึกจริงในระบบ
- ลดปัญหาการทำงานตกหล่นและเพิ่มความเร็วในการทดสอบระบบความจำแชทบอทขึ้นหลายเท่า
ปัญหาคลาสสิกตอนตีหนึ่งเริ่มต้นขึ้นเมื่อผู้จัดการผลิตภัณฑ์ส่งข้อความเสียงเข้ามาแจ้งว่า ผู้ใช้ชื่อ 'Zhang San' แจ้งว่าเขาเพิ่งบอกผู้ช่วยเกี่ยวกับอาการแพ้ถั่วลิสง แต่ในข้อความถัดมาผู้ช่วยกลับลืมเรื่องนี้ไปเสียสนิท ผมเลยต้องรีบเปิด Chroma ขึ้นมา ค้นหาด้วยมือถึง 4 ครั้ง รอหน้าเว็บรีเฟรช คัดลอกโทเค็น แล้วนำมารวมคำขอใน Postman ซึ่งหลังจากใช้เวลาแกะบั๊กอยู่พักใหญ่ ก็พบสาเหตุว่าฝั่งฟรอนต์เอนด์มีการเรียกใช้งาน API รุ่นเก่าซ้ำซ้อนโดยไม่จำเป็น ทำให้ข้อมูลความจำที่เพิ่งเขียนลงไปใหม่ถูกทับด้วยข้อความว่างเปล่า ซึ่งเป็นเส้นทางการทำงานที่ระบบทดสอบแบบเดิมไม่เคยครอบคลุมถึงเลย
การทดสอบระบบจัดเก็บหน่วยความจำในแอปพลิเคชัน RAG ด้วยมือผ่าน Postman นั้น เปรียบเสมือนการใช้ไฟฉายส่องดูหน้าตึกระฟ้า ซึ่งแทบจะเชื่อถืออะไรไม่ได้เลย เนื่องจากระบบท่อส่งข้อมูลการเขียนหน่วยความจำของแอป RAG มีความซับซ้อนสูงมากเมื่อเทียบกับ API ปกติทั่วไป
ขั้นตอนการทำงานแบบเก่าที่ต้องส่งบทสนทนาจำกัดผ่าน Postman แล้วค้นหาใน Jupyter ของ Chroma ด้วยมือ มีจุดอ่อนร้ายแรงอยู่ 3 ประการ ได้แก่:
- ไม่สามารถจำลองพฤติกรรมของฟรอนต์เอนด์ที่ซับซ้อนได้จริง
- เสียเวลาเปิดหน้าจอรีเฟรชและคัดลอกข้อมูลด้วยมือทีละขั้นตอน
- พลาดการตรวจสอบเส้นทาง API เก่าที่อาจทับซ้อนข้อมูลหน่วยความจำ
เราจึงต้องการโซลูชันแบบอัตโนมัติครบวงจร (end-to-end) ที่สามารถขับเคลื่อนเบราว์เซอร์จริงให้ผ่านบทสนทนาทั้งหมด แล้วเจาะลึกเข้าไปในฐานข้อมูลเวกเตอร์เพื่อตรวจสอบชิ้นส่วนหน่วยความจำโดยตรง เปรียบเสมือนการส่องกล้องตรวจกระเพาะอาหารให้กับระบบ RAG ของเรานั่นเอง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
การทดสอบแอปพลิเคชันประเภท Retrieval-Augmented Generation (RAG) มีความท้าทายมากกว่าระบบเว็บทั่วไป เพราะนอกจากจะดูการแสดงผลบนหน้าจอแล้ว ยังต้องตรวจสอบความถูกต้องของฐานข้อมูลเวกเตอร์ (Vector Database) ที่ทำหน้าที่เป็นความจำระยะยาว การใช้เครื่องมืออย่าง Playwright ควบคู่กับ Chroma จึงช่วยให้ทีมพัฒนาสามารถจำลองสถานการณ์จริงและตรวจสอบข้อมูลเบื้องหลังได้แบบอัตโนมัติ ลดข้อผิดพลาดจากมนุษย์ได้อย่างมหาศาล
สำหรับการตัดสินใจเลือกเครื่องมือทดสอบ เราได้พิจารณาทางเลือกต่างๆ ดังนี้:
- การทดสอบ API เพียวๆ: ไม่สามารถจำลองพฤติกรรมฟรอนต์เอนด์จริงๆ ได้ เช่น การกรองข้อความสั้นหรือการผสานระบบพร้อมท์
- Selenium ร่วมกับคำสั่งเฉพาะ: ต้องเขียนโค้ดตั้งต้นจำนวนมากสำหรับการรอแบบอะซิงโครนัสและการดักจับเครือข่าย
- การใช้ตัวจำลองฐานข้อมูลเวกเตอร์ขนาดเบา: เสี่ยงต่ออัตราความล้มเหลวในระบบจริงถึง 50% เนื่องจากฐานข้อมูลแต่ละตัวจัดการการคืนค่าและการรีเฟรชดัชนีไม่เหมือนกัน
ดังนั้น ทางเลือกที่ตอบโจทย์ที่สุดจึงเป็นการใช้ Playwright เป็นตัวขับเคลื่อนเบราว์เซอร์ทำงานร่วมกับไคลเอนต์ Chroma โดยตรง รันทุกอย่างในเครื่องหรือผ่านระบบ CI ด้วยสคริปต์สั้นๆ เพียงตัวเดียว
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น