Generative AI
Boonyawee Sirimaya
4
นาที อ่าน
April 4, 2025

รวมพลัง AI แปลงข้อความเป็น SQL ได้แบบแม่นยำ

เฟรมเวิร์กแบบหลายตัวสร้างรวมกันสำหรับการแปลงข้อความเป็น SQL

XiYan-SQL เป็นกรอบการทำงานที่ออกแบบมาเพื่อเพิ่มความสามารถของ Large Language Models (LLMs) หรือโมเดลภาษาขนาดใหญ่ ในการแปลงภาษามนุษย์ให้เป็นคำสั่ง SQL โดยแตกต่างจากโมเดล text-to-SQL แบบเดิมที่ใช้โมเดลเดียว XiYan-SQL ใช้วิธี multi-generator ensemble หรือการรวมเอาหลายตัวสร้าง SQL มาช่วยกันสร้าง ปรับปรุง และเลือกคำสั่ง SQL ที่แม่นยำที่สุดให้กับคำถามของผู้ใช้ ด้วยวิธีนี้ XiYan-SQL สามารถทำคะแนนสูงสุดในหลายชุดทดสอบ และทำงานได้ดีกว่าเทคนิคเดิมที่มีอยู่

โมเดลแปลงข้อความเป็น SQL แบบดั้งเดิม

โมเดลแปลข้อความเป็น SQL แบบเดิมส่วนใหญ่ใช้วิธีการแบบโมเดลเดียว เช่น วิธีการตามกฎตายตัว (rule-based), โครงสร้างแบบลำดับสู่ลำดับ (Sequence-to-Sequence หรือ Seq2Seq), โมเดลแบบ Transformer หรือเทคนิคการป้อนคำสั่งให้โมเดลภาษาขนาดใหญ่ (LLM prompting) อย่างไรก็ตาม วิธีการเหล่านี้มักพยายามจัดการทุกงานภายในโมเดลเดียว ซึ่งทำให้ขาดความยืดหยุ่นและความแม่นยำเมื่อต้องสร้างคำสั่งที่ซับซ้อน

แผนผังการทำงานของ XiYan-SQL แสดงขั้นตอนการเชื่อมโยงโครงสร้าง การสร้างตัวเลือก และการเลือกตัวเลือก
XiYan-SQL workflow

Framework

Xi-Yan เสนอกรอบการทำงานที่มี 3 องค์ประกอบหลักดังนี้:

1. การเชื่อมโยงโครงสร้างข้อมูล (Schema linking) 

สร้างขึ้นเพื่อเชื่อมต่อภาษาทั่วไปกับข้อมูลที่เก็บในฐานข้อมูล ทำหน้าที่ตีความคำถามของผู้ใช้ในภาษาทั่วไปและเชื่อมโยงไปยังข้อมูลที่เกี่ยวข้อง เพื่อให้มั่นใจว่าข้อมูลที่เลือกตรงกับคำถามที่ต้องการ

2. การสร้างตัวเลือก (Candidate Generation) 

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

3. คัดสรรตัวเลือก (Candidate selection) 

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

ข้อดีของ XIYAN-SQL

1. เพิ่มความแม่นยำและลดข้อผิดพลาด 

ต่างจากโมเดลแปลข้อความเป็น SQL แบบเดิมที่พึ่งพาโมเดลเดียว XiYan-SQL ใช้วิธีการรวมตัวสร้างหลายตัว โดยรวมโมเดลที่ปรับแต่งแล้วและการเรียนรู้ในบริบท (ICT SQL Generator) เพื่อสร้างตัวเลือกคำสั่งหลายตัว วิธีนี้เพิ่มโอกาสในการสร้างคำสั่ง SQL ที่แม่นยำและลดข้อผิดพลาดในการทำงาน การเลือกคำสั่งที่ดีที่สุดช่วยเพิ่มความแม่นยำและทำให้การทำงานน่าเชื่อถือมากกว่าวิธีโมเดลเดียว

2. ใช้ความพยายามน้อยสำหรับโครงสร้างฐานข้อมูลใหม่ 

การแสดงผล M-Schema และโมดูลเชื่อมโยงโครงสร้างช่วยปรับตัวกับโครงสร้างฐานข้อมูลที่แตกต่างกัน ทำให้โมเดลมีความยืดหยุ่นมากขึ้นกับโครงสร้างที่หลากหลาย

3. ใช้เป็นกรอบการทำงานเพื่อปรับโมเดลแปลข้อความเป็น SQL อื่นๆ 

XiYan สามารถใช้เป็นกรอบการทำงานเพื่อปรับงานอื่นๆ รวมถึงการปรับแต่งหรือใช้งานโมเดลแปลข้อความเป็น SQL แนวคิดสำคัญเช่น การเชื่อมโยงโครงสร้าง, M-Schema และ multi-generator selection สามารถนำไปใช้เพื่อปรับปรุงประสิทธิภาพโมเดลระหว่างการปรับแต่ง นอกจากนี้ ICT SQL Generator ยังให้วิธีการโดยใช้คำสั่งที่เหมาะสมที่ช่วยเพิ่มประสิทธิภาพการสร้างคำสั่งโดยไม่ต้องการการปรับแต่ง ซึ่งให้ข้อมูลที่มีค่าสำหรับการปรับปรุงโมเดลแปลข้อความเป็น SQL อื่นๆ

Key components

M-schema

XiYan-SQL ได้นำเสนอ M-schema ซึ่งเป็นโครงสร้างที่แสดงความสัมพันธ์แบบลำดับชั้นของข้อมูลภายในฐานข้อมูล จุดเด่นของ M-schema คือสามารถให้คำอธิบายของคอลัมน์ได้อย่างละเอียดมากขึ้น และนำเสนอรูปแบบใหม่ในการแสดงค่าข้อมูล

จากผลการทดลองพบว่า M-schema ช่วยเพิ่มประสิทธิภาพในการทำงานเมื่อเทียบกับ DDL schema และให้ผลลัพธ์ใกล้เคียงกับ MAC-SQL โดยในบางกรณีอาจให้ผลสูงหรือต่ำกว่าเล็กน้อย แต่โดยรวมแล้วอยู่ในระดับที่ใกล้เคียงกัน ซึ่งพิสูจน์ได้จากการทดสอบกับ 4 โมเดล LLM ที่ใช้เป็นตัวแปลงภาษาธรรมชาติเป็น SQL (NL2SQL) ในการสร้างคำสั่ง SQL แบบครบวงจร ดังที่แสดงในตารางด้านล่าง

ตารางเปรียบเทียบรูปแบบโครงสร้าง DDL Schema, MAC-SQL Schema และ M-Schema
Example of the M-schema
ตารางเปรียบเทียบประสิทธิภาพของรูปแบบโครงสร้างข้อมูลต่างๆ ในหลายโมเดล
M-schema performance for end-to-end SQL generation

การเชื่อมโยงโครงสร้างข้อมูล (Schema Linking)

ตามที่กล่าวไว้ข้างต้น การเชื่อมโยงโครงสร้างข้อมูลหมายถึงการจับคู่คำถามในภาษาธรรมชาติกับโครงสร้างฐานข้อมูล ซึ่งมีบทบาทสำคัญในระบบนี้ เพื่อให้แน่ใจว่าดึงข้อมูลได้ถูกต้องและตรงกับคำถามที่ผู้ใช้ถาม วิธีนี้ช่วยให้คำสั่ง SQL ที่จะสร้างในขั้นตอนถัดไปใช้ข้อมูลที่ถูกต้องและตรงกับคำถาม การเชื่อมโยงโครงสร้างข้อมูลมีสองขั้นตอน:

  1. โมดูลค้นหา - ขั้นตอนนี้มีเป้าหมายเพื่อค้นหาคอลัมน์และค่าที่เกี่ยวข้องมากที่สุดจากฐานข้อมูล ตัวค้นหาคอลัมน์ใช้ความคล้ายคลึงทางความหมาย ขณะที่ตัวค้นหาค่าใช้ทั้งความคล้ายคลึงทางความหมายและการแฮชแบบไวต่อพื้นที่ (LSH) ในการค้นหาคอลัมน์และค่า ระบบจะดึงคำสำคัญจากคำถามของผู้ใช้โดยใช้เทคนิคการให้ตัวอย่างไม่กี่ตัวอย่างกับโมเดล จากนั้นชุดข้อมูล (คอลัมน์และค่า) จะถูกค้นหาในขั้นตอนนี้
  2. ตัวเลือกคอลัมน์ - หลังจากค้นหาข้อมูลในขั้นตอนก่อนหน้า ข้อมูลจะถูกจัดรูปแบบในรูปแบบ M-schema ด้วยความช่วยเหลือจากโมเดลภาษาขนาดใหญ่ (LLM) จากนั้น โดยการใช้เทคนิคการให้ตัวอย่างไม่กี่ตัวอย่างกับโมเดล ระบบจะเลือกเฉพาะข้อมูลที่เกี่ยวข้องและจำเป็นสำหรับการสร้างคำสั่ง SQL สำหรับคำถามนั้นๆ ซึ่งช่วยลดขนาดของโครงสร้างข้อมูลให้เล็กลง

การสร้างตัวเลือก (Candidate Generation)

กระบวนการสร้างตัวเลือกคำสั่ง SQL ที่หลากหลาย ประกอบด้วยสองกระบวนการหลัก กระบวนการแรกคือตัวสร้าง SQL ที่รับผิดชอบในการสร้างตัวเลือก SQL โดยใช้สองเทคนิคได้แก่ โมเดลที่ปรับแต่งแล้ว (Fine-tuned models) และการเรียนรู้ในบริบท (In-Context Learning) กระบวนการที่สองคือตัวปรับแต่ง ซึ่งปรับปรุง แก้ไข หรือแก้ปัญหาข้อผิดพลาดในคำสั่ง SQL ที่สร้างขึ้น

1. ตัวสร้าง SQL
  • ตัวสร้าง SQL ที่ปรับแต่งแล้ว (Fine-tuned SQL Generator) - วิธีนี้ใช้การปรับแต่งแบบสองขั้นตอน:
    • การฝึกไวยากรณ์พื้นฐาน: ขั้นตอนนี้มีจุดมุ่งหมายเพื่อปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วให้เข้าใจไวยากรณ์และรูปแบบ SQL พื้นฐาน
    • การฝึกเพิ่มประสิทธิภาพการสร้าง: ขั้นตอนนี้ปรับปรุงความสามารถของโมเดลในการเข้าใจบริบทต่างๆ โดยฝึกจากข้อมูลหลายงานและข้อมูลรูปแบบไวยากรณ์ ข้อมูลรูปแบบไวยากรณ์สร้างขึ้นโดยใช้ LLM หลากหลายเพื่อสร้างความหลากหลายทางไวยากรณ์แต่ยังคงความหมายเดิม
  • ตัวสร้าง SQL แบบเรียนรู้ในบริบท (In-Context Learning SQL Generator) - ใช้การป้อนคำสั่งแบบตัวอย่างน้อย (few-shot) เพื่อสร้างคำสั่ง SQL โดยอนุญาตให้มีตัวอย่างได้สูงสุด 5 ตัวอย่างต่อคำถาม ก่อนฝังข้อมูล เครื่องมือของ NLTK จะดึงเอนทิตีจากคำถามที่ป้อนเข้ามา เอนทิตีที่ระบุเหล่านี้จะถูกแทนที่ด้วยโทเค็นพิเศษ เช่น <surname> เพื่อลดการพึ่งพาค่าเอนทิตีเฉพาะของโมเดล เมื่อปรับเปลี่ยนแล้ว คำถามจะถูกฝังและตัวอย่างที่มีความคล้ายทางความหมายมากที่สุด K ตัวอย่างจะถูกเลือกตามคำถามที่ป้อนเข้ามา
2. ตัวปรับแต่ง (Refiner)

ขั้นตอนนี้ช่วยให้มั่นใจว่าคำสั่งที่สร้างขึ้นมีความแม่นยำและใช้งานได้ โดยใช้วิธีการป้อนคำสั่งเพื่อวิเคราะห์ตัวเลือก SQL มันตรวจสอบว่าคำสั่ง SQL ที่สร้างขึ้นสอดคล้องกับคำถามที่ให้มาและระบุข้อผิดพลาดใดๆ หากพบปัญหา โมเดลสามารถแก้ไข ปรับให้เหมาะสม หรือสร้างตัวเลือก SQL ใหม่ตามความจำเป็น

การเลือกตัวเลือก (Candidate Selection)

หลังจากสร้างชุดตัวเลือกแล้ว ขั้นตอนนี้มีเป้าหมายเพื่อเลือกตัวเลือกที่ดีที่สุดสำหรับคำถามที่ป้อนเข้ามา โมเดลที่ใช้เป็นตัวประเมินในขั้นตอนนี้ได้รับการปรับแต่งให้ประเมินตัวเลือกคำสั่ง SQL ทั้งหมดตามโครงสร้าง เงื่อนไข และคำถาม ส่งคืนตัวเลือกที่น่าเชื่อถือและสอดคล้องที่สุดที่ตรงกับคำถามที่ป้อนเข้ามา

ผลลัพธ์

XiYan-SQL แสดงความแม่นยำตามวิธีการที่รวมแต่ละองค์ประกอบเข้ากับกรอบการทำงาน ตามที่ทดสอบบนชุดข้อมูล Bird benchmark แสดงให้เห็นประสิทธิภาพของกรอบการทำงานทั้งแบบมีและไม่มีแต่ละองค์ประกอบ เวอร์ชันสมบูรณ์ของกรอบการทำงานซึ่งรวมทุกองค์ประกอบเข้าด้วยกัน บรรลุประสิทธิภาพที่ 73.34% ดังที่แสดงในตารางต่อไปนี้

Performance table of XiYan-SQL with different component configurations
Performance of XiYan-SQL on the Bird benchmark