RAG และ Fine-tuning แตกต่างกันอย่างไร?

Wittaya Sudthinitaed
Muze Innovation
Published in
2 min readJul 24, 2024

รู้หรือไม่? RAG และ Fine-tuning แตกต่างกันอย่างไร? ใครที่กำลังสงสัยประเด็นนี้อยู่ ไม้ต้องไปหาข้อมูลที่ไหนให้ยุ่งยาก เดี๋ยว Muze จะมาไขทุกข้อสงสัยให้กระจ่างเอง!

โดยวันนี้เพื่อน ๆ ทุกคนจะได้พบกับ พี่พีท-กิตติพัฒน์ Chief Technology Officer ของ Muze Innovation ที่จะมาเป็นผู้ตอบคำถาม พร้อมให้คำแนะนำดี ๆ ในเรื่องของ RAG และ Fine-tuning ที่จะเป็นประโยชน์ต่อ Software Development ทุกคนแน่นอน ถ้าพร้อมกันแล้ว ก็ไปอ่านกันได้เลย!!

เรามาเริ่มต้นด้วยการทำความรู้จัก RAG และ Fine-tuning ว่าคืออะไรกันก่อน? พี่พีทจึงเริ่มเล่าให้เราฟังว่า RAG ย่อมาจาก ‘Retrieval-Augmented Generation’ ซึ่งคำว่า retrieval เป็นศัพท์ที่เอามาจากทางการแพทย์ คือเหมือนสมองคนเราเวลานึกถึงภาพเก่า ๆ จะเรียกสิ่งนี้ว่า retrieve ซึ่งการ retrieve พูดง่าย ๆ คือ การไปดึงข้อมูลมา แล้วเอาข้อมูลนั้นมา augmented เสียบเข้าไปใน prompt ที่เรากำลังจะตอบแล้วค่อย generate คำตอบออกมา ก็เลยเป็นที่มาของคำว่า RAG

ซึ่งตัว RAG ถ้าศัพท์เทคนิคใน AI จะเรียกว่า ground truth หมายถึง การเอาองค์ความรู้ที่เราอยากเสียบ เสียบเพิ่มเข้าไปใน prompt แล้วก็ระบุใน prompt ด้วยว่า ให้ AI ตอบตามองค์ความรู้นี้ ซึ่ง AI จะเหมือนว่าถูกเทรนมาแบบนี้ตั้งแต่เริ่มต้น เพราะฉะนั้นการ ground truth ระดับนึงไปไว้ใน prompt จะสามารถเอาตัวนี้ไปเดาคำตอบต่อได้ง่ายขึ้น

ส่วนทางด้าน Fine-tuning พี่พีทเล่าว่า คือ การจูนเลเยอร์ช่วงท้าย ๆ ในตอนที่ AI จะเดา wording ด้วยการคำนวนจากสิ่งที่เราอยากจะใส่ลงไปให้ AI ตอบ ซึ่งสิ่งที่ Fine-tuning ทำสุดท้ายยังเป็นแค่สมการ หมายถึงว่าเป็นแค่การเดาความน่าจะเป็นออกมาแล้วได้คำตอบแบบนี้

ซึ่งสิ่งที่ Fine-tuning ให้คำตอบมาอาจจะไม่ใช่คำตอบที่แม่นยำ หรือองค์ความรู้ที่แท้จริง แต่จะเป็นแค่การบอกว่า ถ้าถามแบบนี้จะตอบประมาณนี้นะ เพราะว่าสุดท้ายแล้ว Fine-tuning คือการตอบคำถามแบบที่น่าจะเป็นที่สุดเท่านั้น

เพื่อน ๆ น่าจะพอเข้าใจกันแล้วใช่ไหม ว่า RAG และ Fine-tuning คืออะไร แล้วถ้าเกิดเป็นเรื่องของความแตกต่างล่ะ? ข้อนี้พี่พีทตอบให้เราฟังสั้น ๆ แต่ได้ใจความคือ ‘Fine-tuning จะได้ความรู้สึก ส่วน RAG จะได้ Fact’

พร้อมอธิบายเพิ่มเติมว่า สมมติมีโจทย์ถามว่า รู้จักบัตรเครดิต ABC ไหม ตัว OpenAI อาจจะงงว่ามันคืออะไร แต่ถ้าเราอยากให้ OpenAI รู้ เราก็แค่ add คำว่า ABC เข้าไปใน vocab ซึ่งมีวิธีง่าย ๆ คือเติมเข้าไปใน prompt เลย แล้วระบุใน prompt ว่า ABC คือบริษัทนี้ มีข้อมูลแบบนี้นะ เป็นต้น

แต่ว่าก็ยังมีอีกวิธีนึง คือ การ Fine-tuning ให้ระบบรู้จักคำว่า ABC ในสมการ แล้วตัวระบบจะ embedded ค่านี้ไปไว้ใน activation layer ของตัวโมเดลเอง แต่ว่าในทางกลับกัน ถ้าเราอยากให้เอาองค์ความรู้ตัวนี้ไปใช้ในการตอบคำตอบ การ Fine-tuning ไม่สามารถช่วยในการตอบคำตอบแบบ accurate ได้ เพราะว่า Fine-tuning เป็นแค่การเดาความน่าจะเป็นเท่านั้น

แต่ถ้าเป็นการใช้ RAG ระบบจะไปดึงข้อมูลมา เสร็จแล้วเราใส่ prompt เพื่อบอกว่าให้ตอบตามนี้นะ ถ้าคำตอบที่คิดว่าจะตอบไม่อยู่ในนี้ ให้ไปตอบเป็นคำว่าไม่รู้แทน อันนี้ตัว ChatGPT จะทำตามได้เป๊ะ ๆ หรืออาจจะไม่ถึงเป๊ะ แต่ว่าทำแล้วได้ accuracy ที่สูงกว่าเยอะ เมื่อเทียบกับ Fine-tuning และนี่คือข้อแตกต่างของทั้งสองตัว ในมุมการใช้งานของ RAG แล้วจริงๆยังมี Technique ซ่อนอยู่อีกค่อนข้างมากเช่นนำ LLM มาทำ Self Query RAG (เอา LLM มาช่วยคิดเพื่อสร้าง Query ที่เอาไว้ไปถาม Vector Database อีกที) หรือมี Re-Rank, Multi Query, etc. อันนี้สามารถหาอ่านเพิ่มเติมได้ที่นี่ ครับ (https://js.langchain.com/v0.2/docs/concepts#retrieval)

สุดท้ายเรามาสรุป RAG และ Fine-tuning กันหน่อย ว่าควรเอาไปปรับใช้ในการทำงานจริงอย่างไร? ซึ่งข้อนี้พี่พีทมองว่า ถ้าจะใช้เราควรใช้ควบคู่กันไป สำหรับการออกแบบแอปพลิเคชันใหญ่ ๆ คือให้มองภาพก่อนว่าโปรดักต์ใหญ่ ๆ ที่เราอยากจะทำ ในโลกของ AI ตอนนี้จะเจอว่า ปกติแล้วจะมีเว็บที่ให้คุณ submit text มา แล้วเดี๋ยวเรา generate รูปให้ คือ use case ซึ่งจะมี use case เดียวแต่ทุกครั้งที่เราไปคุยกับลูกค้า เขาจะไม่เอา use case เดียว เขาจะอยากได้หลาย ๆ use case

ดังนั้น สิ่งที่เราจะไปเจอก็คือ คำถามที่เขาต้องการให้บอทตอบ คำถามจะมีความหลากหลายล้านแปดมาก ทำให้เราจะใช้แค่ Fine-tuning, RAG หรือ OpenAI เทคนิคเดียวไม่ได้ ต้องประยุกต์ด้วยการเอามาผสมกัน เราอาจจะต้องทำ routing เพื่อแยกออกมาว่าคำถามนี้ต้องส่งไปถาม AI อีกที่นึง คำถามนี้ส่งไปถาม AI prompt อีกแบบนึง

ก็เลยจะบอกว่าจริง ๆ ควรจะต้องดู use case แล้วเอามาผสมกันในจุดที่เราต้องการ ซึ่งถ้าเราจะผสมได้เราต้องเข้าใจก่อนว่า Fine-tuning คือทำเพื่อเติมข้อมูลเข้าไป แต่เราจะมี specific use case ที่แบบพาร์ทแบบนี้จะใช้ Fine-tuning นะ หรือพาร์ทแบบนี้ เราถึงควรจะใช้ RAG นะ ซึ่ง RAG เหมือนการทำข้อสอบ open book แต่ว่า open book นั้นจะหาข้อมูลได้ไวขนาดไหนขึ้นอยู่กับ tool ที่ใช้ในการทำ

และนี่ก็คือทุกเรื่องทุกมุมมอง ที่น่าสนใจ ของ RAG และ Fine-tuning ที่เราอยากเอามาแชร์ให้เพื่อน ๆ ได้อ่านกัน เพื่อความเข้าใจที่มากขึ้น และจะได้เอาไปปรับใช้ในการทำงานกันได้ดียิ่งขึ้นไปอีก วันนี้ต้องขอขอบคุณ พี่พีท กิตติพัฒน์ Chief Technology Officer ของ Muze ที่มาแชร์ความรู้ดี ๆ และขอขอบคุณทุกคนที่อ่านมาถึงตรงนี้ด้วยครับ

แล้วพบกันใหม่ในบทความหน้า ใครชอบอย่าลืมกดไลก์ ส่วนใครมีคำถามอยากถามเพิ่ม หรือสงสัยตรงจุดไหน ก็พิมพ์คอมเมนต์เข้ามาพูดคุย กับพวกเรา Muze Innovation กันได้เลยครับ :)

--

--