ปัจจุบันได้มีการพัฒนา LLMs ขึ้นมาอย่างรวดเร็วนับจากการเปิดตัวของ Chat-GPT ซึ่ง LLMs ปัจจุบันมีหลากหลาย Model และจากหลากหลายบริษัท เช่น Meta, Google, Anthropic และอื่น ๆ
Use case ที่เราผ่านต่อส่วนใหญ่แล้วเป็นการนำ LLMs มาใช้ในงาน ถาม-ตอบ, คิดไอเดียใหม่, ช่วยเขียนโค้ด หรือแม้แต่ช่วยนำไปวิเคราะห์ข้อมูล
บทความนี้อยากนำเสนอตัวอย่างการ Integrate LLMs (OpenAI) สำหรับงาน Text-to-SQL หรือการเปลี่ยนจากคำถามในภาษาเขียน เพื่อให้ Query ผ่าน AWS Athena
หลักการทำงานของ Text-to-SQL คือการสร้าง Prompt Template ซึ่งประกอบด้วยข้อมูลของ Prompt (User question) + Column header (Table header) เข้าด้วยกัน จากนั้นนำ Prompt ที่ได้มา ส่งให้กับ LLMs ประมวลผลเพื่อให้ได้มาซึ่ง SQL หรือ ผลลัพธ์ (SQL Interpreter)
สำหรับ Architecture ดังกล่าว เราจะมี Library ที่เกี่ยวข้องด้วยกันทั้งหมด 4 Library ได้แก่
แนะนำการใช้งาน LlamaIndex
LlamaIndex เป็น Data framework สำหรับสร้าง LLMs Application โดย Concept หลักของการใช้งาน LlamaIndex จะแบ่งออกเป็น 2 ส่วน ได้แก่
ซึ่งทั่วไปแล้วเราจะใช้ทั้ง 2 ส่วนนี้ในการสร้าง RAG (Retrieval Augmented Generation) แต่สำหรับการใช้ Text-to-SQL เราจะใช้แค่ Querying stage ในส่วนของ Query Engines
การใช้งาน Query Engines นั้นจำเป็นต้องมีส่วนประกอบสำคัญ ได้แก่
ซึ่งการสร้างทั้ง 2 ส่วนประกอบนี้ เราจะอธิบายตามตัวอย่าง Code ดังต่อไปนี้
การสร้างระบบ Text-to-SQL โดยเริ่มจากการใช้งาน LlamaIndex เพื่อเป็นการกำหนด Data Source, Agents (LLMs) และ Result ขึ้นมา
ในส่วนแรกที่สุดนั้น เป็นการ Config ค่าที่เกี่ยวข้องทั้งหมด โดยสิ่งที่เราต้องเตรียมทั้งหมดได้แก่
สำหรับการใช้งาน OpenAI เราสามารถเลือก Model ที่ต้องการใช้งานได้ผ่าน Parameter Model และสามารถปรับ Temperature และ Max token (Output limit) ให้เหมาะสมกับการใช้งานของเราได้
หลังจาก Config ในส่วนเริ่มต้นเสร็จเริ่มร้อยแล้ว เราต้องสร้าง engine ขึ้นมา โดยสร้างผ่าน SQLAlchemy ด้วย function create_engine เพื่อที่จะใช้ engine ดังกล่าวในการเชื่อมต่อกับ Athena ของเรา
จากนั้นเราจะนำ engine ดังกล่าวไปเป็น Data source สำหรับ LlamaIndex ผ่าน function SQLDatabase และทำการเชื่อม Datasource เข้ากับ Agent ด้วย functionNLSQLTableQueryEngine (Default Agent คือ OpenAI)
เมื่อทำการเชื่อม Data source เข้ากับ Agent เรียบร้อยแล้ว เราจะสามารถใช้งาน Query ได้จาก function query และสามารถแสดงผลลัพธ์การ Query ให้อยู่ในรูปแบบของภาษาเขียน (Human language) และสามารถแสดงผลลัพธ์ SQL Query ที่สร้างขึ้นมาได้
ข้อควรรู้
สำหรับตัวอย่าง Code สามารถดูได้ที่ https://github.com/vultureprime/deploy-ai-model/tree/main/aws-example/text-to-sql-openai