Retrieval Augmented Generation RAG เป็นวิธีการรวบรวมข้อมูลที่เกี่ยวกับคำถามที่ถามเข้ามา
RAG ย่อมาจาก Retrieval Augmented Generation
RAG เป็นวิธีการรวบรวมข้อมูลที่เกี่ยวกับคำถามที่ถามเข้ามา ตัวอย่าง เช่น “Who is the president of the US“ จากนั้นคำถามดังกล่าวจะถูกนำไปใช้ 2 ส่วนหลัก ได้แก่ Retriever และ Prompt (LLM)
ส่วนแรกของกระบวนการเป็นการนำคำถามมาใช้ในการค้นหาข้อมูลที่มีความเกี่ยวเนื่องกันมากที่สุด n ลำดับ หลังจากได้ข้อมูลจากการ Retrieval เสร็จแล้ว จะนำข้อมูลดังกล่าว รวมเข้ากับ Query Prompt เพื่อประกอบกันเป็น Final Prompt ก่อนที่จะส่ง Final Promopt ไปยัง LLM เพื่อให้สร้างคำตอบกลับมา
"อัพเดท -> บทความการสร้าง RAG ภาษาไทยสำหรับ Developer"
"Float16.cloud -> ผู้ให้บริการ LLMs API Service สำหรับ Developer รองรับภาษาไทยและถูกกว่า OpenAI GPT-3.5 90% "
ความสามารถในการนำ Retrieval Data รวมเข้ากับ Query Prompt เพื่อให้กลายเป็น Final Prompt ได้ เนื่องจาก Prompt สำหรับ LLMs นั้นสามารถรับสิ่งที่เรียกว่า Context (Retrieval Data) ประกอบเข้ากับ Prompt (Query Prompt) ได้
ตัวอย่างของ Prompt A ที่มีการเพิ่ม Context ประกอบกับ Prompt ตัวอย่างของ Context คือ
“I didn’t see your internal link, I put it back. It isn’t orphaned, what are you talking about? : Negative
Greetings, and thank you for you cogent remarks at. Would you be interested in voting in straw poll as well ?: Positive“
และตัวอย่างของ Prompt คือ “ Please classify the sentiment of the following text as positive or negative “
ถ้านำกลับไปอธิบายตัวอย่างแรกจะสามารถอธิบายได้ดังนี้
“‘Joe Biden is the 46th and current president of the United States, assumed office on January 20, 2021.’
Follow above information, Who is the president of the US ?“
โดยข้อมูล Context (สีเขียว) นั้นมาจากการนำ Prompt (สีน้ำเงิน) เข้าไปค้นหาข้อมูลที่มีความใกล้เคียงกับ Prompt เพื่อให้ได้ Context สำหรับประกอบการตอบคำถามของ LLM
วิธีการค้นหาว่าข้อมูลใดมีความใกล้เคียงกับ Prompt เราใช้เทคนิคที่เรียกว่า Document search หรือ Knowledge search ด้วยเทคโนโลยี Vector Database และ Word embedding
Vector Database เป็นการจัดเก็บ Index ของข้อมูลในรูปแบบของ Vector โดยการค้นหาข้อมูลที่มีความเหมือนมากที่สุดหลัก ๆ แล้วมีด้วยกัน 3 วิธี
แต่ละวิธีการใช้เพื่อหาข้อมูลที่มีความคล้ายคลึงกัน ซึ่งจะใช้วิธีไหนขึ้นอยู่กับ Vector database นั้นจะสามารถค้นหาด้วยวิธีการใดที่เหมาะสมที่สุด
Word embedding คือการแปลง Word หรือ Sentence จากรูปแบบของ String ให้อยู่ในรูปแบบของ Vector โดยการทำ Word embedding นั้นสามารถทำได้หลายวิธี ไม่ว่าจะเป็น Word2Vec หรือสามารถใช้ GPT ในการ Embedding ข้อมูลให้อยุ่ในรูปของ Vector ได้
LlamaIndex - Data Framework for LLM Applications
LlamaIndex เป็น Data Framework สำหรับการสร้าง RAG (Retrieval Augmented Generation) หรือการสกัดข้อมูลเพื่อการสร้างข้อมูล โดยเฉพาะที่เกี่ยวกับการสร้างระบบ NLP - Natural Language Processing ที่มีการนำระบบ GPT (Generative Pre-trained Transformer) เข้ามาใช้งาน เช่น GPT-4, GPT-3.5 และอื่น ๆ
LlamaIndex ประกอบด้วยส่วนหลักสามส่วนที่สำคัญ คือ
LlamaIndex ช่วยให้ผู้พัฒนาสามารถสร้างและปรับแต่งระบบ RAG ของตนเอง โดยการเลือกแหล่งข้อมูลที่เหมาะสม, การสร้าง index ที่เหมาะสมและการใช้ agent ที่ต้องการ เพื่อให้ระบบสามารถประมวลผลข้อมูลและตอบคำถามในรูปแบบภาษาธรรมชาติได้
ความท้าทายในการสร้าง RAG ณ ปัจจุบันได้แก่
อ้างอิงตามข้อมูลตารางด้านบน ถ้าเรา Input ข้อมูลดังกล่าวเข้าไปใน GPT-4 จะถูกคิด Token ทั้งหมด 9 Token นั้นทำให้การป้อนข้อมูลขนาดใหญ่นั้น ยังเป็นไปได้ยาก
ศึกษาเรื่อง RAG เพิ่มเติมได้ที่
RAG + Chatbot (ทีม VulturePrime)
RAG Concept (ทีม VulturePrime)
AIEAT Talk EP.9 (จาก ดร.ซี และ ดร.อาร์ม)