ในปัจจุบันนี้มีการนำ AI มาใช้ในหลายๆอย่าง ซึ่ง Q&A Document ถ้าเราจินตนาการว่าโปรเจ็คเป็นยังไง สิ่งแรกที่เรานึกก็คงนึก OpenAI กัน หรือ บางคนอาจจะนึง Chat Bot เจ้าต่างๆ ที่เราถามคำถามไปเเล้วเจ้า Chat bot ก็จะตอบคำถามกลับมา ซึ่งตัวQ&A Document นี้ เราจะโยนตัว Document ไป ให้ Chat bot ของเราเเล้วหลังจากนั้นเราก็ถาม เจ้า Chat bot ก็จะตอบกลับ
หลายคนอาจจะสงสัยว่า Q&A Document มีประโยชน์นำมาใช้ทำอะไร เรามาจินตนาการกัน ว่าเรามีห้องสมุดขนาดใหญ่เต็มไปด้วยหนังสือและเอกสารมากมาย และเราต้องการหาคำตอบสำหรับคำถามที่เรามี แต่ใครๆ ก็ไม่อยากเสียเวลาในการค้นหาข้อมูลจากหนังสือเป็นกองๆ ใช่ไหม?
ตัว Q&A Document นี้ก็เหมือนกับเรามีเจ้าหน้าที่สุดฉลาดที่จำข้อมูลในหนังสือทุกเล่มในห้องสมุดได้ทุกหน้าเลย! เราแค่โยนคำถามไปที่ AI นี้ แล้วมันก็จะอ่านหาคำตอบให้เราได้อย่างรวดเร็ว ไม่ว่าจะเป็นข้อมูลที่ซับซ้อน, สถิติ, หรือแม้แต่case study ที่เกี่ยวข้องกับคำถามของเราเลย!
Understand the project requirements
เข้าใจความต้องการของโปรเจกต์ Q&A Document คือ ขั้นตอนสำคัญที่จะทำให้เราสามารถพัฒนาโซลูชันที่ตอบโจทย์ผู้ใช้งานได้ตรงจุด โดยเฉพาะในการสร้างระบบที่ใช้งานง่ายและเข้าถึงได้จากกลุ่มเป้าหมายของเรา มาเราดูรายละเอียดกันดีกว่าว่ามีอะไรบ้าง:
1.Concept :
ความเข้าใจในเรื่องของ RAG, LlamaIndex, Chroma, OpenAI โดยเฉพาะเรื่องของ RAG concept
2.UI Interface:
ระบบควรมี UI (User Interface) ที่เรียบง่ายและใช้งานได้สะดวก เพื่อให้ผู้ที่ทดลองเขียน RAG สามารถใช้งานได้โดยไม่เจอความยุ่งยากในการใช้งาน
3.การอัพโหลดไฟล์ :
ระบบควรรองรับการอัพโหลดไฟล์ และสามารถทำการค้นหาข้อมูลจากไฟล์เหล่านั้นเพื่อตอบคำถามของผู้ใช้งาน
Design the user interface
การออกแบบ UI สำหรับ Q&A Document System ควรจะมีความชัดเจน ใช้งานง่าย และมีการนำเสนอข้อมูลที่ไม่ทำให้ผู้ใช้รู้สึกสับสน
ส่วนในเรื่องของตัว Chat bot เรามี ดีไซน์ก่อนหน้านี้เเล้ว เราก็จะนำในส่วนนี้มา reuse ใช้งาน 😆
ซึ่งขอเกริ่นก่อนเลยว่า ตัว Chatbot นั้น เราก็ไปดูในส่วนของ OpenAI ChatGPT นำมาใช้ในการเป็นแบบในการออกแบบ แต่ตัดฟังก์ชั้นหลายๆอย่าง ไป ให้เหมาะสมกับ Feature ที่เรามี
ซึ่ง Chat bot ก็จะมี ดังต่อไปนี้
Implement the user interface
ขั้นตอนในการสร้าง Q&A app เราก็ได้เลือก Lib หรือ Framwork มาใช้งานดังต่อไปนี้
เมื่อเรา Implenet เสร็จเเล้ว เราก็จะได้ หน้าตา UI แบบนี้
Connect the frontend with the backend
หลังจากที่เราสร้าง UI interface ขึ้นมาเเล้วเราก็ต้องทำการ connect กับ ฝั่งของ backed เราต้องเข้าใจก่อนว่า ตัว api เขาให้มามีเส้น อะไรบ้าง มีรูปแบบการรับส่ง params หรือ body เป็นยังไง เเล้วมี ลำดับขั้นตอนเป็นอย่างไร
ซึ่งตัว API Interface ที่เราได้มาก็มีดังต่อไปนี้
นอกจากนี้ เเล้ว ใครอยากสร้าง Backned Q&A เป็นของตัวเอง ก็เข้าไปดูหรือลองทำตามใน Link นี้ได้เลย
วิธีการสร้าง RAG ด้วย Langchain + Deployment
Implement the URL input validation
หลังจากที่เราสามารถเชื่อมกับ backend ได้เเล้ว เราก็มาจัดการให้เรียบร้อย เช่น การ validate ข้อมูลที่ส่งไปให้ backend ในเรื่องของการส่ง เเค่ pdf เท่านั้นเป็นต้น หรือการใส่ endpoint
Display the bot's
ในขั้นตอนนี้ เราจะมาลองเล่นกับ bot ว่าทำงานได้อย่างถูกต้องไหม ดูผลของการที่บอทนั้นตอบกลับมา
การตรวจสอบ URL (URL validation) เป็นส่วนสำคัญในการป้องกันการส่งข้อมูลที่ไม่ถูกต้องไปยัง backend ในส่วนนี้เราจะพูดถึงการ validate ที่ frontend โดยใช้ react-hook-form และ zod ในการทำ validate กัน
Implement error handling
หลังจากที่ลองเล่นกับ bot เเล้ว เราก็จะมาเก็บ error handling ของ API ที่ เรา call เพื่อโชวเป็น message ต่างบนเว็บไซต์ ซึ่งในบางที่เราลองเล่นก็จะเห็นว่า บอทไม่ได้ตอบกลับมา เเล้วทาง API ส่ง error status code 500 มาเราก็ไม่รู้ว่าเกิดอะไรขึ้น ซึ่งในการที่เรามานั่งเก็บ error handling ช่วยให้ user สามารถเข้าถึง หรือเข้าว่าเกิดอะไรขึ้นได้ง่าย
Test the frontend
หลังจากที่เราเก็บ error handling เเล้ว เรามาดูกันดีกว่าว่า ผลลัพธ์ได้ตามที่เราต้องการหรือไม่ การแสดงทุกอย่างถูกต้องตาม requirment ที่เราได้รับมาหรือเปล่า
Optimize the frontend
ในส่วนนี้เราก็จะมา แก้ไข code กัน ดูว่าส่วนไหนเราควรจะต้องปรับแก้ ให้สามารถ optimize ได้ง่ายขึ้น อ่านโค้ดได้ง่าย หรือ การจัด code ให้ user ที่เข้ามาใช้งาน สามารถปรับแก้ไข code ได้ง่าย ซึ่งขั้นตอนนี้เราก็จะมาจัดการ code ที่รก ทีเราเขียนขึ้นมา เเล้วก็ดูว่ามีส่วนไหนไหมที่เราปรับเเล้วทำให้ใช้งานได้ไวขึ้น โหลดไว ใช้งานง่ายขึ้น
Deploy the frontend
เราก็มาถึง ขั้นตอนสุดท้านของการที่เราจะ deploy เราก็มาทดลอง เลยอย่างแรกคือการ build ว่า มี error ในจุดไหนไหม ที่ต้องแก้ไข และต้องปรับ config รวมถึง env สำหรับการ deploy เช่น config เกี่ยวกับ next optimize image เป็นต้น จากนั้นเเล้ว เราก็ส่งต่อไปทางพี่ devOps จัดการ deploy 😆
นี้ก็คือภาพรวมที่แยกในแต่ละส่วนเพื่อให้เห็นภาพที่ชัดเจนสำหรับการพัฒนาโปรเจ็กต์นี้
สามารถลองมาเล่น หรือใช้งานได้เลยใน repo นี้
https://github.com/vultureprime/ai-web-interface/tree/main/next-rag-faqs
ทิ้งท้ายบทความสำหรับ Q&A bot