Project ยุคนี้ใคร ๆ ก็ Generative AI กันหมด และหนึ่งใน use case ที่พบได้บ่อยมากก็คือ “Q&A Chatbot Project” สำหรับคนที่ไม่ได้คลุกคลีหรือตามวงการ AI อาจจะไม่รู้ว่าเราจะเริ่มทำ Chatbot จาก Generative AI ยังไง หรือไม่เข้าใจว่ามีอะไรที่ต้องรู้เพื่อจะทำ Chatbot บ้าง บทความนี้เราจะเล่าในมุม PO หรือ Management Team ว่าการจะดูแล Q&A Chatbot Project คุณต้องรู้อะไรเกี่ยวกับ AI และ Techical บ้างตั้งแต่ต้นจนจบ เพราะสุดท้ายแล้วการจะควบคุม Project ได้เราก็ต้องเข้าใจภาพบางส่วนของ Project ก่อน บทความนี้ก็จะเป็น Guideline ให้คุณ เป็นจุดเริ่มต้นในการทำความเข้าใจ AI ต่อไป
แน่นอนว่าพาร์ทนี้เราจะไม่ลงลึกว่าทำยังไง แต่จะเน้นให้เข้าใจข้อมูลว่ามีอะไรบ้าง เพื่อให้ชาว PO มีพื้นฐานก่อน ส่วนข้อมูลพาร์ทลงลึกสามารถอ่านต่อได้จากส่วนของ FE, BE และ Infrastructure ค่ะ 😆
สำหรับบทความนี้เราจะอ้างอิงการทำงานมาจาก Demo ที่ทาง Vulture Prime ได้ทำขึ้น โดย Q&A Chatbot ของเราก็จะเป็น Chatbot ถามตอบคำถามจากเอกสารที่ user ได้อัปโหลดเข้ามา
คิดว่าทุกคนอาจจะเคยมีประสบการณ์อ่านเอกสารกันมาบ้าง ไม่ว่าจะเป็นเอกสารสรุปการประชุม เอกสาร requirement หรืออ่าน Paper งานวิจัยต่าง ๆ ซึ่งอาจจะมีหลาย 10 หน้า จนคุณขี้เกียจอ่าน Chatbot ตัวนี้จะช่วยคุณสรุปเอกสารหรือตอบคำถามที่คุณสงสัยจากเอกสารที่คุณอัปโหลดขึ้นไปหรือจากเว็บไซต์ที่คุณแปะ เพียงคุณพิมพ์คำถามไปใน Chatbot คุณก็จะได้คำตอบหรือสาระสำคัญของเอกสารโดยที่ไม่ต้องไปอ่านเองให้เสียเวลา และคุณยังสามารถกำหนด Endpoint ของ AI ในแต่ละครั้งได้อีกด้วย
หลังจากรู้จัก Q&A Chatbot ของเราคร่าว ๆ แล้ว เรามาดูกันดีกว่าว่าถ้าจะสร้าง Chatbot ของตัวเอง ต้องรู้อะไรอีกบ้างนะ?
โดยทั่วไปแล้วสิ่งที่เราต้องการจาก Chatbot คือความฉลาดของ Chatbot AI และต้องใช้งานง่าย
ความฉลาดของ Chatbot AI :
คุณต้องเข้าใจก่อนว่าตอนนี้จะทำ Chatbot ไม่ต้องเทรน AI เองแล้ว เพราะเรามี LLM Model ที่พร้อมให้คุณหยิบไปใช้งานหลายเจ้ามาก ดังนั้นคุณจะไม่เสียเวลาและเสีย resource ในการทำ AI
แต่การจะทำ Q&A Chatbot ไม่สามารถใช้แค่ข้อมูลจาก LLM อย่างเดียว ต้องทำ RAG เพิ่มไปด้วย เพื่อให้ได้คำตอบที่ถูกต้องมากขึ้น (อันนี้เดี๋ยวอธิบายเพิ่มเติมในหัวข้อ RAG อีกที) ซึ่งการทำ RAG ก็ต้องลองจูนค่าว่าแบบไหนดี และถ้าคุณไม่ได้มี Constraints ก็อาจควรลองเปรียบเทียบกับหลาย ๆ LLM Model ว่าตัวไหนเหมาะกับรูปแบบข้อมูลของคุณด้วย
ดังนั้นเรื่องความฉลาดของ Chatbot AI ก็จะมาจาก LLM Model สำเร็จรูป + RAG ที่คุณต้องไป Fine tune เพิ่มเติมเอา
ใช้งานง่าย :
จากที่บอกว่าเดี๋ยวนี้เรามี LLM Model สำเร็จรูป ความจริงแล้วเราก็แค่ยิง API ส่งข้อมูลไปยัง LLM Model ก็ได้แล้ว แต่จะให้ user ที่ไม่รู้จักว่า API คืออะไรยิง API ใช้งานก็ยังไงอยู่ ยังไงก็ต้องทำหน้ากากครอบ (aka Frontend) เพื่อให้ใช้งานได้ง่าย ซึ่งก็ขึ้นอยู่กับการออกแบบของแต่ละ Project ว่าอยากได้แบบไหน แต่ถ้าจะให้ดีก็ควรจะมีจำนวนคลิกน้อย ๆ และตอบสนองได้ไวก็จะดี
ใด ๆ ก็ตาม Step การ Implement Q&A Chatbot ก็มี flow เหมือนกับ AI Development Project อื่น ๆ เพียงแต่ต่างกันที่ตัดเรื่องการเทรนโมเดลออกไปเท่านั้นเอง
จากตัวอย่าง
Define Requirement : เริ่มจากการวิเคราะห์ Requirement ว่าเราต้องการทำอะไร ในที่นี้คือเราต้องการทำ Q&A Chatbot ที่สามารถตอบคำถามจากเอกสารที่อัปโหลดเข้าไปได้หรือจากเว็บไซต์ โดยสามารถให้ user กำหนด Endpoint AI เองได้ ต้องมีช่องกรอกให้ user สามารถพิมพ์คำถามลงไปได้ และมีการแสดงผลคำตอบจาก Chatbot
โดยมี user flow ดังนี้
AI Research : หลังจากได้ Requirements เราก็ไปทำการศึกษา AI ต่าง ๆ เปรียบเทียบผลแต่ละตัว ศึกษาเทคนิคที่จำเป็นต้องใช้ ก่อนที่จะทำการตัดสินใจเลือก AI ที่จะนำมาใช้งานกับ Project
Design UI & Architecture : ในขณะเดียวกันกับที่ฝั่ง AI กำลังทำการศึกษาก็ให้เริ่มออกแบบ UI ให้ตรงตาม Requirement และ UX ที่ควรจะเป็น รวมถึงออกแบบโครงสร้างของ BE และ Infrastructure ว่าจะเลือกใช้งานตัวไหน ออกแบบ API ว่าต้องมีอะไรบ้างและจะทำงานยังไงจึงจะมีประสิทธิภาพมากที่สุด
Final Design : นำการออกแบบจากทั้ง UI, BE, Infrastructure และ AI มารวมกัน ปรับแก้ให้สามารถทำงานร่วมกันได้อย่างราบรื่น และตัดสินใจสรุป Design และ Flow เพื่อนำไป Implement ต่อไป
Implement : ลงมือ Implement ในส่วนต่าง ๆ
Test : ทดสอบการทำงานว่าทำได้ถูกต้องตาม Requirement และตรงตามที่ Requirement ต้องการ รวมถึงทดสอบประสิทธิภาพการทำงาน และคำตอบที่ได้จาก AI มีความถูกต้องมากน้อยเพียงใด
Deploy : Deploy ไปยัง Infrastructure ที่เราเลือกใช้ อย่างเราก็จะเลือกใช้ AWS ก็จะทำการ Deploy ขึ้นไปยัง EC2 พร้อมให้ user พร้อมใช้งาน
เท่านี้ก็จบ Flow การทำงานในการสร้าง Q&A Chatbot แล้วค่ะ เย่ 🎉
แต่บทความเรายังไม่จบ เราจะมาลงลึกต่อในบางพาร์ท ว่าสำหรับ Q&A Chatbot ของเรา เราเลือกใช้อะไรยังไง เลือกใช้เทคนิคอะไรบ้าง แล้วทำไมถึงเลือกใช้อันนี้กันต่อค่ะ
ในช่วง AI Research นอกจากต้องเปรียบเทียบตัว AI เพื่อหาว่า AI ตัวไหนเหมาะกับรูปแบบของเรามากที่สุดแล้ว เทคนิคที่จำเป็นต้องใช้อีกตัวหนึ่งก็คือ “RAG” หรือ “Retrival Augmented Generation” ซึ่งก็คือเทคนิคในการทำให้ AI สามารถตอบคำถามได้ดีขึ้น ถูกต้องมากขึ้น เนื่องจาก RAG จะทำการดึงข้อมูลจากข้อมูลจากฐานข้อมูลภายนอกที่อัปโหลดไปแล้ว หรือ ใช้ข้อมูลจาก Prompt ที่ user ให้มาตอบคำถาม จึงทำให้ได้ข้อมูลที่ถูกต้องและอัปเดต
ขายของ → สามารถไปอ่านทำความเข้าใจเกี่ยว RAG เพิ่มเติมได้ใน RAG Concept, RAG Use Case Journey, Frontend, Backend
เรามีทางเลือกในการนำเข้าไฟล์เอกสารอยู่ 2 ทาง ได้แก่ อัปโหลดไฟล์ และ วาง URL โดยระบบจะทำการอ่านไฟล์ที่ถูกอัปโหลดขึ้นมา หรืออ่านหน้าเว็บไซต์จาก URL ที่แปะมา แต่จริง ๆ แล้วการเลือกรับ Input ที่ดีที่สุดคือการเลือกรับเป็น URL อย่างเดียว เพื่อทำให้ง่ายต่อการ Query ข้อมูลและเพิ่มประสิทธิภาพของ Chatbot ค่ะ
ในขั้นตอนการ Implement RAG ก็มีหลายหลาย Framework ให้เลือกใช้ เช่น llamaIndex langchain แต่เราเลือกใช้ LlamaIndex เนื่องจากตัว LlamaIndex จะช่วยเราจัดการ RAG ให้ทำงานได้อย่างมีประสิทธิภาพและมีเสถียรภาพ
ในการทำ RAG เนื่องจากฐานข้อมูลภายนอกจะถูกจัดเก็บในรูปแบบ Vector บน Vector database เพื่อให้ง่ายต่อการค้นหาและเปรียบเทียบความเหมือนของข้อมูล จึงทำให้เราต้องศึกษาเรื่อง Vector database เพราะแต่ละตัวก็ต่างมีความสามารถแตกต่างกันไป ซึ่งในที่นี้เราได้เลือก Chroma เป็น Vector database
ส่วนของตัวโมเดล LLMs เราได้เลือกใช้โมเดลของ OpenAI โดย LLMs จะเพิ่มประสิทธิภาพในการใช้ภาษา ซึ่งจะทำให้ Chatbot ของเราหลังจากได้ Prompt จาก RAG แล้ว ก็สามารถนำมาเรียบเรียงตอบคำถามได้เป็นธรรมชาติมากกว่าเดิม ทำให้ user อ่านแล้วเข้าใจได้ดียิ่งขึ้น
ในส่วนของตัว API เราได้เลือกใช้ FastAPI เป็น Service ในการทำ Backend เนื่องจาก FastAPI มีประสิทธิภาพสูง สามารถใช้งานได้ง่ายและง่ายต่อการบำรุงรักษา อีกทั้งยังช่วยเพิ่มประสิทธิภาพโดยรวมของ Project อีกด้วย
ในการ Deploy Backend เราได้เลือก Deploy บน Cloud ซึ่งมีข้อดีคือ Cloud นั้นสามารถ Scale เข้าออกได้ไม่จำกัด ทำให้สามารถรองรับ Load ที่อาจจะเพิ่มขึ้นได้ดีกว่า มีความปลอดภัย เสถียรและยังมีค่าใช้จ่ายที่ถูกกว่าการเช่า Server โดยเราได้เลือกใช้ Cloud ของ AWS และเลือกใช้ Service Amazon EC2 ซึ่งเป็น Infrastructure as a Service ให้คุณสามารถจัดการ Server ของคุณได้เอง
ปล. จริง ๆ แล้วก็ยังมี Cloud เจ้าอื่นให้คุณสามารถเลือกใช้ได้ตามความถนัด ซึ่งการที่เราเลือกใช้ AWS เนื่องจากเราเชี่ยวชาญ AWS เป็นพิเศษจึงเลือกใช้ Cloud เจ้านี้เป็นหลักค่ะ
ขายของ → บริษัทเราเชี่ยวชาญด้าน Cloud และพร้อมเป็นที่ปรึกษาให้กับคุณ หากสนใจสามารถ ติดต่อเรา หรือสำหรับใครที่ต้องการตรวจสอบ AWS Cloud Cost ตอนนี้เรามี Cloud Cost Check ให้คุณฟรี! หรือสำหรับใครลองเล่นหรือกำลังศึกษา Cloud อยู่แล้วต้องการคำปรึกษาในการใช้งาน Cloud ก็สามารถทักมาสอบถามคุยเล่นกับเราได้เช่นกันค่ะ 😆
นอกจากที่เราจะเลือกใช้ Cloud แล้ว เรายังมีการใช้ API Gateway เข้ามาต่อกับ EC2 โดยข้อดีของการใช้งาน API Gateway คือจะทำให้การสื่อสารระหว่าง user และ Chatbot เป็นไปอย่างราบรื่น เพราะ API Gateway จะมาช่วยจัดการ Traffic ของ API นั่นเอง
ขายของ → ใครที่อยากศึกษาทำความเข้าใจเกี่ยวกับ API Gateway เพิ่มเติม สามารถอ่านต่อได้ใน API Gateway
และทั้งหมดนี้ก็คือ Guideline สำหรับชาว PO เมื่อต้องทำ Q&A Chatbot หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อย สำหรับใครที่ยังมีข้อสงสัยหรือต้องการสอบถามเพิ่มเติมสามารถติดต่อที่ Facebook Page : Vulture Prime ไว้พบกับบทความหน้าค่ะ 👋
ทิ้งท้ายบทความสำหรับ Q&A bot