สร้าง RAG ภาษาไทยด้วย LlamaIndex, Weaviate และ SeaLLM

สร้าง RAG สำหรับภาษาไทย ด้วย OpenSource

จัดทำโดยทีม VulturePrime

รายละเอียด

การสร้าง RAG เริ่มต้นเป็น Use case ที่แพร่หลายสำหรับการนำ AI เข้ามาประยุกต์ใช้กับธุรกิจ แต่เนื่องจากความขาดแคลนตัวอย่างที่เหมาะสมของแต่ละภาษา ทำให้เกิดปัญหา 2 ปัญหาได้แก่

  1. English centric ตัวอย่างส่วนใหญ่จะถูกทำขึ้นมาโดยใช้ภาษาอังกฤษเป็นศูนย์กลาง ทำให้ภาษาอื่นนั้น จำเป็นต้องประยุกต์ Solution ขึ้นมาเองซึ่งทำให้ Developer ต้องลงทุนในการเรียนรู้เพิ่มขึ้นอย่างมหาศาล ไม่ว่าจะเป็นในเรื่องของ Tokenizer หรือ Text splitter
  2. OpenAI centric เนื่องจากการเชื่อมต่อกับ OpenAI API นั้นเป็นเรื่องที่ใช้ Effort ต่ำสุดและมีประสิทธิภาพสูงที่สุด ทำให้ AI และ Embedding Model อื่นนั้น กลายเป็น 3rd class citizen เมื่อนักพัฒนาอยากลดรายจ่ายโดยใช้ AI และ Embedding รายอื่น จึงเป็นเรื่องที่มีต้นทุนสูงอย่างมหาศาล (Switching cost)

จากปัญหาทั้ง 2 ปัญหาทำให้เกิด AI Adoption ที่ช้ากว่าและแพงกว่าบริษัทที่ใช้ภาษาอังกฤษ​เป็นภาษาหลัก

จึงเป็นที่มาของการสร้าง Use case ด้วยโปรเจคตัวอย่าง เพื่อให้ Developer สามารถลด Learning curve ลงไปได้ และส่งเสริมให้มีความรวดเร็วในการนำ AI ไปใช้เพิ่มประสิทธิของ Feature ที่มีอยู่แล้วหรือสร้าง Feature ใหม่ขึ้นมา

บทความเพิ่มเติม (ภาษาไทย)

Benefit

  • ราคาต่อ Character ที่ถูกกว่า 90 - 95% เมื่อเทียบกับ OpenAI
  • เวลาในการประมวลผลที่น้อยลงเหลือเพียง 1/3 ถึง 1/4 (Float16 API หรือ SLA ตามต้องการ)
  • สามารถใช้งาน Offline หรือ Private เองได้

ความท้าทาย

  • การนับจำนวน Token ที่ไม่เท่ากันของภาษาอังกฤษและภาษาอื่น ทำให้ต้องสร้าง Custom Helper function เพื่อให้รองรับภาษาอื่น
  • การตัดประโยคของภาษาไทยเมื่อเทียบกับภาษาอื่น
  • การใช้งาน OpenSource เช่น Huggingface Embedding และ OpenAI API-like
  • การใช้งาน Vector Database และทำความเข้าใจ Parameter ในการค้นหา

Environment

Flow

  1. บันทึกข้อมูลรูปแบบ String Text ไปยัง Vector Database
  2. ค้นหาข้อมูลจาก Vector Database และนำไปใช้กับ AI Model


Notebook

https://github.com/vultureprime/Float16-example/blob/main/llamaindex/RAG/Thai_RAG_with_opensource.ipynb

Aa

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