AI
October 2, 2023

RAG Concept

Retrieval Augmented Generation RAG เป็นวิธีการรวบรวมข้อมูลที่เกี่ยวกับคำถามที่ถามเข้ามา

Concept ของ RAG (อัพเดท 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% "

Behind the scene prompt

ความสามารถในการนำ 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

Vectorize Data

วิธีการค้นหาว่าข้อมูลใดมีความใกล้เคียงกับ Prompt เราใช้เทคนิคที่เรียกว่า Document search หรือ Knowledge search ด้วยเทคโนโลยี Vector Database และ Word embedding

Vector Database เป็นการจัดเก็บ Index ของข้อมูลในรูปแบบของ Vector โดยการค้นหาข้อมูลที่มีความเหมือนมากที่สุดหลัก ๆ แล้วมีด้วยกัน 3 วิธี

  1. Euclidean distance - ใช้ระยะทางเวกเตอร์เพื่อหาความคล้ายคลึงของข้อมูล
  2. Cosine similarity - ใช้มุมระหว่างเวกเตอร์เพื่อหาความคล้ายคลึงของข้อมูล
  3. Dot product - ใช้การคุณเมตริกของเวกเตอร์เพื่อประเมินความคล้ายคลึงของข้อมูล

แต่ละวิธีการใช้เพื่อหาข้อมูลที่มีความคล้ายคลึงกัน ซึ่งจะใช้วิธีไหนขึ้นอยู่กับ Vector database นั้นจะสามารถค้นหาด้วยวิธีการใดที่เหมาะสมที่สุด

Word embedding คือการแปลง Word หรือ Sentence จากรูปแบบของ String ให้อยู่ในรูปแบบของ Vector โดยการทำ Word embedding นั้นสามารถทำได้หลายวิธี ไม่ว่าจะเป็น Word2Vec หรือสามารถใช้ GPT ในการ Embedding ข้อมูลให้อยุ่ในรูปของ Vector ได้

LlamaIndex

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 ประกอบด้วยส่วนหลักสามส่วนที่สำคัญ คือ

  1. Data Source - แหล่งข้อมูลที่ระบบจะนำมาใช้ในกระบวนการ RAG สามารถเป็นไฟล์ CSV, PDF, Dataframe หรือ SQL ก็ได้ แหล่งข้อมูลนี้จะเป็นแหล่งข้อมูลหลักที่ระบบจะค้นหาข้อมูลไปใช้ในกระบวนการสร้างคำตอบของระบบ NPL ต่อไป
  2. Index - ระบบการจัดเก็บข้อมูลและ index ที่ใช้ในการค้นหาข้อมูลที่ตรงกับคำถาม มีหลายวิธีในการจัดเก็บข้อมูล เช่นใช้ Vector Database, Tree Index, List Index เพื่อช่วยในกระบวนการค้นหาข้อมูลที่เหมาะสม
  3. Agent - ส่วนนี้เป็นระบบเพิ่มเติมที่ใช้ในการประมวลผลข้อมูลและสร้างคำตอบ เช่น GPT-4, GPT-3.5, Llama2-70b, Falcon-40b หรือ NPL อื่น ๆ ตามที่ต้องการเพื่อใช้ในกระบวนการสร้างคำตอบ

LlamaIndex ช่วยให้ผู้พัฒนาสามารถสร้างและปรับแต่งระบบ RAG ของตนเอง โดยการเลือกแหล่งข้อมูลที่เหมาะสม, การสร้าง index ที่เหมาะสมและการใช้ agent ที่ต้องการ เพื่อให้ระบบสามารถประมวลผลข้อมูลและตอบคำถามในรูปแบบภาษาธรรมชาติได้

ความท้าทาย

ความท้าทายในการสร้าง RAG ณ​ ปัจจุบันได้แก่

  1. จำนวน Prompt Token ที่จำกัด GPT-4 สามารถรับ Input token ได้สูงสุด 32k Token (750 word = 1k token)
  2. ประสิทธิภาพในการ Retrieval Data
  3. ข้อมูลรูปแบบ Structure Data และ Numerical Data

  1. ราคาของ GPT-4 32k Token มีค่าบริการที่ $0.06 per 1k token นั้นหมายความว่า ถ้าเราอยากให้ GPT-4 วิเคราะห์ข้อมูลของเรา 1 ครั้งโดยป้อนข้อมูลเข้าไปสูงที่สุดที่ 32k token ต้นทุนของการประมวลผลนั้นจะอยู่ที่ $1.92 ต่อการประมวลผลเลยทีเดียว
  2. ประสิทธิภาพในการ Retrieval Data ณ ปัจจุบันยังเป็นปัญหาอยู่ เนื่องจากการค้นหาข้อมูลที่มีขนาด 40 หน้า PDF ใช้เวลาในการ Retrieval ครั้งหนึ่งที่ 5 วินาที ถ้าข้อมูลมีขนาดมากกว่านี้ก็จะใช้เวลานานขึ้นเท่าตัว
  3. ข้อมูล Structure Data ถูกคิด Token ตาม Data point ตัวอย่างเช่น

อ้างอิงตามข้อมูลตารางด้านบน ถ้าเรา Input ข้อมูลดังกล่าวเข้าไปใน GPT-4 จะถูกคิด Token ทั้งหมด 9 Token นั้นทำให้การป้อนข้อมูลขนาดใหญ่นั้น ยังเป็นไปได้ยาก

ศึกษาเรื่อง RAG เพิ่มเติมได้ที่

RAG + Chatbot (ทีม VulturePrime)

RAG Concept (ทีม VulturePrime)

AIEAT Talk EP.9 (จาก ดร.ซี และ ดร.อาร์ม)

Aa

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