Text-to-SQL วัดผลยังไง

Text-to-SQL วัดผลยังไง

ใครที่ได้อ่านบทความ Text-to-SQL ด้วย LLM ไปแล้ว หรือใครที่กำลังพยายามจะ Improve text-to-sql กันอยู่ บทความนี้เรามาวัดกันหน่อยดีกว่าว่า Text-to-SQL ที่เราทำนั้น เจ๋งแค่ไหน 😎

Text-To-SQL ด้วย LLM
Text-to-SQL ด้วย LLM มันเวิร์คไหมนะ? 🤔 เดี๋ยวนี้ Large Language Model (LLM) กำลังฮ็อตฮิตสุด ๆ เลยนะครับ หลายคนก็เลยอยากจะเอามาใช้งานกับข้อมูลตัวเองบ้าง โดยเฉพาะอย่างยิ่งการคุยกับฐานข้อมูลด้วยภาษาธรรมดา แล้วให้มันสร้าง SQL Query มาให้เราเลย อย่างเจ๋ง!

จริง ๆ แล้ว งานวิจัยเกี่ยวกับ Text-to-SQL เนี่ยมีมานานแล้วนะฮะ ก็เลยมีชุดข้อมูลทดสอบเยอะแยะมากมาย แต่ข้อมูลที่ดี ที่เราอยากจะทดสอบเนี่ย มันควรจะเป็นข้อมูลที่เป็นคล้ายกับข้อมูลขนาดใหญ่ในองค์กร ที่มี table เป็นร้อย column ชื่อก็กำกวม หรือโจทย์ที่ต้อง join หลาย ๆ table เข้าด้วยกัน

เอาล่ะ มาดูกันดีกว่าว่ามี dataset อะไรน่าสนใจบ้าง

สมัครสมาชิก

หรือ เลี้ยงกาแฟ ☕

เอาหน่อย!

Metrics ที่ใช้วัด

ส่วนเรื่อง metrics ที่ใช้วัดกันบ่อย ๆ จะมี 3 ตัวหลัก ๆ คือ

  1. Valid SQL (VA) - ดูว่า SQL ที่ออกมา valid มั้ย พิมพ์ลงไปรันได้ป่าว ไม่ error นะ
  2. Exact Match (EM) - เอา SQL ที่สร้างได้ไปเทียบกับเฉลยเลย ต้องตรงกันทุกตัวอักษรเลยนะจ๊ะ แต่มันไม่ค่อยแฟร์เท่าไหร่ เพราะจริง ๆ ลำดับ column หรือ alias มันก็เขียนได้หลายแบบ บาง Paper เค้าจะทำการ เอา SQL ที่ได้ มา Normalize ให้เหลือแค่ SQL Clause เช่น SELECT WHERE FROM... แล้วเทียบจำนวนของ SQL Clause แทน เช่น* (ดูต่อข้างล่าง)
  3. Execution Accuracy (EX) - อันนี้วัดกันที่ผลลัพธ์เลย ได้ค่าถูกไหม เช่นถามว่าโพสต์ไหน comment เยอะสุด ก็ต้องได้เลข id ของโพสต์นั้นออกมาจริง ๆ

แต่จริง ๆ มี metrics อื่น ๆ อีกเพียบ เช่น Test Suite Accuracy, Exact set matching, Component matching หรือ Sub-tree elements matching อยากรู้ละเอียดก็ไปหาอ่านเพิ่มเติมได้เน้อ A survey on deep learning approaches for text-to-SQL

*Exact Match Normalize SQL

Normalize SQL คือ การเอา SQL Query ที่ได้ มายุบเอาแค่ SQL Keywords

SELECT post_id, SUM(views) as total_views
FROM fact_posts
GROUP BY post_id
ORDER BY total_views DESC
LIMIT 1

ก็จะเหลือเป็น

["SELECT", "FROM", "GROUP BY", "ORDER BY", "DESC", "LIMIT"]

แล้วค่อยเทียบกัน

Evaluation Framework

และแน่นอนอีกตามเคยครับ เวลาจะประเมินผลทั้งที อย่าลืมไปส่อง framework เด็ด ๆ อย่าง SQLEval ของ defog.ai ด้วยล่ะ opensource ด้วย

GitHub - defog-ai/sql-eval: Evaluate the accuracy of LLM generated outputs
Evaluate the accuracy of LLM generated outputs. Contribute to defog-ai/sql-eval development by creating an account on GitHub.

สรุป

เอาเป็นว่า ใครอยากทำ Text-to-SQL ทั้งที อย่าลืมเช็กผลกันด้วยนะ จะได้มั่นใจว่าที่ทำไปนั้นเวิร์คจริง มีคุณภาพจริง ปังจริง! 🎉 ไว้เจอกันใหม่บทความหน้านะฮะ บ๊ายบายยย 👋