AI
November 10, 2023

Driving a Q&A Bot Project: A Product Owner's Guide

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 ของตัวเอง ต้องรู้อะไรอีกบ้างนะ?

Implementing a Q&A Bot

โดยทั่วไปแล้วสิ่งที่เราต้องการจาก 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 ของเรา เราเลือกใช้อะไรยังไง เลือกใช้เทคนิคอะไรบ้าง แล้วทำไมถึงเลือกใช้อันนี้กันต่อค่ะ

Integrating the RAG Technique

ในช่วง AI Research นอกจากต้องเปรียบเทียบตัว AI เพื่อหาว่า AI ตัวไหนเหมาะกับรูปแบบของเรามากที่สุดแล้ว เทคนิคที่จำเป็นต้องใช้อีกตัวหนึ่งก็คือ “RAG” หรือ “Retrival Augmented Generation” ซึ่งก็คือเทคนิคในการทำให้ AI สามารถตอบคำถามได้ดีขึ้น ถูกต้องมากขึ้น เนื่องจาก RAG จะทำการดึงข้อมูลจากข้อมูลจากฐานข้อมูลภายนอกที่อัปโหลดไปแล้ว หรือ ใช้ข้อมูลจาก Prompt ที่ user ให้มาตอบคำถาม จึงทำให้ได้ข้อมูลที่ถูกต้องและอัปเดต

ขายของ → สามารถไปอ่านทำความเข้าใจเกี่ยว RAG เพิ่มเติมได้ใน RAG Concept, RAG Use Case Journey, Frontend, Backend

Accepting URL Input Format Only

เรามีทางเลือกในการนำเข้าไฟล์เอกสารอยู่ 2 ทาง ได้แก่ อัปโหลดไฟล์ และ วาง URL โดยระบบจะทำการอ่านไฟล์ที่ถูกอัปโหลดขึ้นมา หรืออ่านหน้าเว็บไซต์จาก URL ที่แปะมา แต่จริง ๆ แล้วการเลือกรับ Input ที่ดีที่สุดคือการเลือกรับเป็น URL อย่างเดียว เพื่อทำให้ง่ายต่อการ Query ข้อมูลและเพิ่มประสิทธิภาพของ Chatbot ค่ะ

Using LlamaIndex as a Framework

ในขั้นตอนการ Implement RAG ก็มีหลายหลาย Framework ให้เลือกใช้ เช่น llamaIndex langchain แต่เราเลือกใช้ LlamaIndex เนื่องจากตัว LlamaIndex จะช่วยเราจัดการ RAG ให้ทำงานได้อย่างมีประสิทธิภาพและมีเสถียรภาพ

Using Chroma as Vector database

ในการทำ RAG เนื่องจากฐานข้อมูลภายนอกจะถูกจัดเก็บในรูปแบบ Vector บน Vector database เพื่อให้ง่ายต่อการค้นหาและเปรียบเทียบความเหมือนของข้อมูล จึงทำให้เราต้องศึกษาเรื่อง Vector database เพราะแต่ละตัวก็ต่างมีความสามารถแตกต่างกันไป ซึ่งในที่นี้เราได้เลือก Chroma เป็น Vector database

Utilizing OpenAI's Large Language Models (LLMs) Service

ส่วนของตัวโมเดล LLMs เราได้เลือกใช้โมเดลของ OpenAI โดย LLMs จะเพิ่มประสิทธิภาพในการใช้ภาษา ซึ่งจะทำให้ Chatbot ของเราหลังจากได้ Prompt จาก RAG แล้ว ก็สามารถนำมาเรียบเรียงตอบคำถามได้เป็นธรรมชาติมากกว่าเดิม ทำให้ user อ่านแล้วเข้าใจได้ดียิ่งขึ้น

Using FastAPI for Backend Service

ในส่วนของตัว API เราได้เลือกใช้ FastAPI เป็น Service ในการทำ Backend เนื่องจาก FastAPI มีประสิทธิภาพสูง สามารถใช้งานได้ง่ายและง่ายต่อการบำรุงรักษา อีกทั้งยังช่วยเพิ่มประสิทธิภาพโดยรวมของ Project อีกด้วย

Deploying Backend on EC2

ในการ 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 ก็สามารถทักมาสอบถามคุยเล่นกับเราได้เช่นกันค่ะ 😆

Connection of EC2 with API Gateway

นอกจากที่เราจะเลือกใช้ 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

Q&A Document frontend

Q&A Document backend

Github Frontend

Github Backend

FAQ Facebook Group

Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.