Hackathon Recap: JoiningJoy Virtual Buddy — Databricks Asia Pacific LLM Cup 2023

Suraphan Laokondee
SCB TechX
Published in
2 min readDec 14, 2023

บทความนี้เรามาแชร์ประสบการณ์ในการเข้าร่วม Online Hackathon ของทาง Databricks เพื่อสร้าง Production-ready solution สำหรับการใช้ Large language model (LLM) ให้ใช้งานได้จริง และแบ่งปันขั้นตอนในการพัฒนา LLM Application ซึ่งมีความซับซ้อนและแตกต่างจากการพัฒนา Application อื่นๆอย่างไร

JoiningJoy Virtual Buddy คืออะไร

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

การเริ่มต้นงานในสถานที่ใหม่เป็นสิ่งที่มีรายละเอียดมาก รวมถึงระบบ กระบวนการทำงาน หรือเครื่องมือต่างๆ ที่จำเป็น และถ้าเราไปเริ่มงานในสาย Software Engineer เราอาจจะต้องทำความเข้าใจกับระบบที่เราจะต้องเข้าไปพัฒนา รวมถึงเข้าใจ Coding Standard หรือ Coding Style ของทีมเรา

https://onboardingfaq.com/best-onboarding-memes/

What It Does

JoiningJoy Virtual Buddy ใช้ความสามารถของ LLM และ Vector Database เพื่อช่วยให้ผู้ใช้งานสามารถค้นหาข้อมูลภายในบริษัท (Knowledge Base) ที่เก็บไว้ใน Confluence Pages ได้สะดวกและแม่นยำขึ้น รวมทั้งยังช่วยสรุปเอกสารต่างๆให้สามารถเข้าใจได้ง่าย และอีกฟีเจอร์สำคัญคือสามารถ Generate Code จาก API Specification Documents ได้โดยตรง เนื่องจาก SCB TechX เป็น Tech Company ที่มี API Specification Documents มากมาย การใช้ความสามารถของ LLM ในการ Generate Code นี้ช่วยลดเวลาในการเขียน Code บางส่วนที่ทำซ้ำๆ และทำบ่อย ๆ เช่นการสร้าง Model Mapping Class และการทำ Unit Testing

How We Built It

เราแบ่งการพัฒนา LLM application เป็น 3 ส่วนหลัก คือ

  1. Data Preparation
  2. LLM Application
  3. Infrastructure

Data Preparation

เราใช้ Databricks ในการสร้าง Data Pipeline เพื่อเตรียมข้อมูลโดยดึงข้อมูลจาก Confluence Page ก่อนที่เราจะเริ่มสร้าง Data Pipeline เราจำเป็นต้องเข้าใจโครงสร้างข้อมูลและตัดสินใจว่าจะตัดหรือแบ่ง (Chunk) ข้อมูลอย่างไร เพราะวิธีการตัดและลักษณะข้อมูลที่ถูกตัดแบ่งออกมานั้นจะมีผลต่อความแม่นยำในการค้นหาและช่วยให้ LLM สามารถเข้าใจข้อมูลของเราได้ดีขึ้น เราใช้เทคนิค Content-aware Chunking ในการตัดข้อมูลโดยดูลักษณะของข้อมูล เช่นตัดข้อมูลตาม Header หรือ Subheader เพื่อที่เราจะสามารถตัดข้อมูลออกมาแล้วยังคงรักษา Context ของข้อมูลไว้ได้

เราใช้ Llamaindex ConfluenceReader ในการดึงข้อมูลเนื่องจากข้อมูลที่ออกมาจาก Confluence มาในรูปแบบ Markdown ที่ทำให้เราตัดด้วย Header หรือ Subheader ได้ง่าย และใช้ Langchain MarkdownHeaderTextSplitter เพื่อตัดตาม Markdown Format หลังจากที่เราตัดข้อมูลได้แล้วเรายังสามารถทำ Meta Data ให้กับแต่ละ Chunk ได้ด้วย เพื่อให้เรารู้ว่ามาจาก Source URL และข้อความเป็นส่วนหนึ่งของเอกสารใด

ขั้นตอนถัดไปคือการทำ Embedding และเก็บข้อมูลลงบน Vector Database เราใช้ Chromadb เพราะง่ายต่อการใช้งานและสามารถทำ POC Project ได้ง่าย

Data Preparation

LLM Application And Infrastructure

เราสร้าง ChatUI Frontend เพื่อเชื่อมต่อกับ Langchain Backend Application ที่ใช้ FastAPI เป็น Web Framework

หัวใจหลักของ JoiningJoy Virtual Buddy คือการใช้ความสามารถของ Langchain Tools เพื่อตอบโจทย์ในการค้นหาข้อมูลและการ Generate Code โดยใช้ Agent เป็นตัวตัดสินใจว่าจะใช้ Tool ตัวไหนกับงานที่เข้ามา โดยจะดึงข้อมูลที่เกี่ยวข้องกับคำถามของผู้ใช้งานมาจาก Vector Database รวมถึง Tool ที่เลือกใช้ LLM ที่เชี่ยวชาญและเก่งในแต่ละเรื่องแยกกัน เช่นงานที่เป็นการ Generate Code อาจจะไปเลือกใช้โมเดล Open Source อย่างเช่น DeepSeek Coder ถ้าต้องการคำตอบสรุปข้อมูลอาจจะใช้ Llama2 หรือ OpenAI ChatGPTAPI

แอปพลิเคชันทั้งหมดถูกทำเป็น Docker Image และ Deploy ไปยัง AWS รวมทั้ง Chroma VectorDB

Solution architecture

Lessons Learned And Challenges We Ran Into

  1. Chunking เป็นส่วนสำคัญที่มีผลต่อคุณภาพของคำตอบและการนำข้อมูลไปใช้งานต่อไป เราพบว่าการตัดและแบ่งข้อมูลอย่างถูกต้องช่วยให้มีความแม่นยำในการค้นหาและช่วยให้ LLM เข้าใจข้อมูลได้ดีขึ้น เราใช้เทคนิค Content-aware Chunking ในการตัดข้อมูลโดยดูลักษณะของข้อมูล เช่นตัดข้อมูลตาม Header หรือ Subheader เพื่อที่เราจะสามารถตัดข้อมูลออกมาแล้วยังคงรักษา Context ของข้อมูลไว้ได้
  2. การ Host Model เองนั้นเป็นสิ่งที่ท้าทายเป็นอย่างมาก เราพยายามทดสอบ Host Open Source Model ด้วยการ Wrap ด้วย FastAPI และ TGI ทำให้พบปัญหาอื่นๆ ในการทำงานรวมถึงประสิทธิภาพและค่าใช้จ่ายในการใช้งานจริง

What’s Next For JoiningJoy Virtual Buddy

  1. Fine-tune DeepSeek Coder Model เพื่อให้เข้าใจ Coding standard ของบริษัทได้ดียิ่งขึ้น
  2. เพิ่มความสามารถที่เกี่ยวข้องกับ Software Engineering เพื่อตอบโจทย์ของพนักงานในหลายตำแหน่งงานมากขึ้น

Conclusion

JoiningJoy Virtual Buddy ช่วยให้กระบวนการ Onboarding สำหรับพนักงานเป็นไปได้อย่างราบรื่น ด้วยความสามารถในการค้นหา สรุป และการ Generate Code จากเอกสารหรือคลังข้อมูลภายในบริษัทได้อย่างมีประสิทธิภาพ เราคาดหวังว่าเราจะสามารถนำโปรเจคนี้ไปใช้งานได้จริงในอนาคต :) Stay Tuned!

https://devpost.com/software/joiningjoy-virtual-buddy

--

--