Self-RAG คืออะไร มาช่วยให้ LLMs ทำงานดีขึ้นได้อย่างไร

Self-RAG คืออะไร มาช่วยให้ LLMs ทำงานดีขึ้นได้อย่างไร

26 มีนาคม 2567

ทุกวันนี้ Large Language Models (LLMs) ถูกนำมาใช้กันอย่างแพร่หลายมากขึ้นในปัจจุบัน หลายคนถือว่า LLMs ถูกผนวกรวมเป็นส่วนหนึ่งของชีวิตและการทำงานของเราอย่างขาดไม่ได้ แต่อย่างไรก็ตาม การประยุกต์ใช้งาน LLMs ก็ยังพบปัญหาและอุปสรรคบางอย่างอยู่ เช่น ปัญหาของการสร้างคำตอบที่ไม่ถูกต้องขึ้นมา (Hallucination) หรือปัญหาของชุดความรู้ที่ไม่อัปเดต ทำให้มีคนที่พยายามคิดค้นและพัฒนากระบวนการที่จะมาช่วยแก้ปัญหาตรงจุดนี้ ซึ่งวิธีที่จะมาช่วยแก้ปัญหาดังกล่าว เรียกว่า Retrieval-Augmented Generation (RAG) 

RAG คืออะไร 

Retrieval-Augmented Generation (RAG) คือ เทคนิคที่จะมาช่วยแก้ปัญหาต่าง ๆ ที่เป็นข้อจำกัดของ LLMs ในปัจจุบัน เพื่อให้ LLMs มีความถูกต้องและความน่าเชื่อถือมากยิ่งขึ้น โดยมีกระบวนการในการผนวกชุดความรู้จากแหล่งข้อมูลภายนอก (External Source) มาใช้ประกอบในกระบวนการสร้างข้อความผลลัพธ์ ซึ่งการใช้ RAG จะช่วยเพิ่มความถูกต้องและความน่าเชื่อถือของผลลัพธ์ที่ได้จาก LLMs โดยเฉพาะงานที่ต้องใช้ความรู้ที่เฉพาะเจาะจงมาก ๆ รวมถึงยังมีข้อดีที่ทำให้ผลลัพธ์ของ LLMs สามารถตอบคำถามจากการอ้างอิงชุดความรู้ที่มีการอัปเดตให้เป็นปัจจุบันได้โดยไม่ต้องทำการฝึกฝนหรือ Fine-tuning LLMs ใหม่เรื่อย ๆ โดย RAG นั้นประกอบไปกระบวนหลัก 3 ขั้นตอน ได้แก่ 1.) การสืบค้นเนื้อหาที่เกี่ยวข้อง (Retrieve) 2.) การเพิ่มเนื้อหาเข้าไปใน Prompt (Augment) และ 3.) การสร้างข้อความผลลัพธ์ (Generate) ซึ่งมีรายละเอียดของกระบวนการดังต่อไปนี้ 

RAG Workflow 

  1. Retrieve: ข้อความค้นหา (Query) ของผู้ใช้ จะถูกนำไปใช้ในการสืบค้นเนื้อหาที่เกี่ยวข้องจากแหล่งข้อมูลภายนอก (External Knowledge Source) ในขั้นตอนนี้ query ของผู้ใช้จะถูกแปลงให้กลายเป็น vector ผ่าน embedding model เพื่อนำไปเปรียบเทียบเพื่อค้นหา vector ที่มีความคล้ายมากที่สุดใน vector database 
  1. Augment: query ของผู้ใช้ และเนื้อหาเพิ่มเติมที่ได้มาจากขั้นตอนการ retrieve จะถูกนำไปใส่ใน template ของ prompt 
  1. Generate: สุดท้าย prompt ที่ได้จากการดึงข้อมูลเนื้อหาเสริมมาประกอบจะถูกป้อนเป็น input ให้แก่ LLM ต่อไป 

ข้อจำกัดของ RAG ทั่วไป 

ถึงแม้การใช้ RAG ใน LLMs จะช่วยให้ผลลัพธ์ที่ได้มีความถูกต้องมากขึ้น โดยการดึงข้อมูลสนับสนุนที่เกี่ยวข้องมาเป็นบริบทเพิ่มเติมสำหรับสร้างคำตอบที่เฉพาะเจาะจงขึ้น แต่อย่างไรก็ตาม บางกรณีการดึงข้อมูลที่ไม่เกี่ยวข้องออกมาใช้ อาจจะด้วยเหตุผลที่ว่าในแหล่งข้อมูลภายนอกที่ใช้อ้างอิงไม่มีเนื้อหาที่เกี่ยวข้องอยู่เลย หรืออาจจะเป็นที่ อัลกอริทึมของการสืบค้น (Retrieve) ไม่ดีเพียงพอ สิ่งเหล่านี้ก็มีผลทำให้ผลลัพธ์ที่ได้จาก LLMs แทนที่จะดีขึ้นกลับแย่ลงกว่าเดิมก็เป็นได้ เนื่องจาก RAG อาจทำให้ไปลดความสามารถในการตอบคำถามแบบ general ที่มีอยู่เดิมของ LLMs ที่ใช้ ด้วยเหตุนี้ Self-RAG จึงถูกพัฒนาขึ้นมาเพื่อมาช่วยปรับปรุงคุณภาพและความถูกต้องของผลลัพธ์ที่ได้จาก LLMs และไม่ทำให้ความสามารถที่มีอยู่เดิมของ LLMs หายไป ผ่านแนวคิด On-demand Retrieval และ Self-reflection 

Self-RAG 

Self-RAG (Self-Reflective Retrieval-Augmented Generation) เป็น Framework เช่นเดียวกับ RAG ที่มีการเพิ่มส่วนของการพิจารณาไตร่ตรองผลลัพธ์ของตนเอง (Self-reflection) เพื่อตัดสินใจว่าจะทำการสืบค้นข้อมูลเพิ่มเติมหรือไม่ (On-demand Retrieval) หรือจะข้ามการสืบค้นและใช้ผลลัพธ์ที่ได้จาก LLMs เลย ด้วยวิธีการนี้จะช่วยปรับปรุงผลลัพธ์จาก LLMs ให้มีคุณภาพและตรงตามความเป็นจริงมากยิ่งขึ้น โดย LLMs ที่ประยุกต์ใช้วิธีการนี้จะถูกฝึกฝนให้มีการสร้าง special token ที่ชื่อว่า “Reflection Token” ซึ่งเป็นผลที่ได้จากการพิจารณาว่า ควรดำเนินการอย่างไรกับผลลัพธ์ที่สร้างมาจาก LLMs เพื่อให้สามารถควบคุม และปรับการทำงานให้เหมาะสมเพิ่มเติม ผ่านการพิจารณา Reflection Token ที่ได้ 

Reflection Token สามารถแบ่งได้เป็น 2 ประเภทหลัก ได้แก่ “Retrieval Token” และ “Critique Token” โดย Retrieval Token จะเป็น Token ที่แสดงความจำเป็นของการสืบค้น หรือการตัดสินใจว่าจะทำการสืบค้นหรือ Retrieve ข้อมูลมาใช้เป็นเนื้อหาเพิ่มเติมใน prompt หรือไม่ ส่วน Critique Token จะเป็น Token ที่แสดงผลการวิเคราะห์คุณภาพของข้อความที่ถูกสร้างขึ้นมา เช่น ดูเนื้อหาของข้อความผลลัพธ์ที่ได้จาก LLMs ว่ามีความเกี่ยวข้องกับคำถามมากน้อยขนาดไหน ซึ่ง Critique Token ประกอบไปด้วย Token ย่อย 3 กลุ่ม ได้แก่ IsREL, IsSup, IsUse Tokens ดังแสดงในตารางด้านล่าง 

การทำงานของ Self-RAG แบ่งเป็น 3 ขั้นตอนหลัก ได้แก่ 1) ดึงข้อมูล (Retrieve) 2) สร้าง (Generate) และ 3) วิจารณ์ (Critique) โดยมีรายละเอียดแต่ละขั้นดังต่อไปนี้ 

ขั้นตอนที่ 1 Retrieve on demand 

จากภาพจะเห็นว่า หลังจากที่เราให้ input prompt กับ LLM ซึ่งโดยปกติ LLM จะให้ผลลัพธ์ออกมาเป็นข้อความที่ตอบคำถามที่เราใส่เข้าไปเท่านั้น แต่ในครั้งนี้ LLM จะถูกฝึกฝนมาให้สามารถทำการสร้าง Reflection Token ต่อท้ายข้อความได้ ซึ่ง Reflection Token ในตัวอย่างด้านบนนี้จะเป็นประเภท Retrieval Token ซึ่งจะเป็น token ที่บอกว่าการ retrieve ข้อมูลเพื่อใช้เป็นเนื้อหามา support เพิ่มน่าจะมีประโยชน์หรือไม่ ซึ่งถ้า Retrieval Token มีค่าเป็น yes โมเดลสำหรับทำการสืบค้น (Retriever Model) จะถูกเรียกเพื่อไปทำการสืบค้นเนื้อหาที่เกี่ยวข้องในฐานข้อมูลเป็นลำดับถัดไป 

ขั้นตอนที่ 2 Generate segment in parallel 

หลังจากที่ Retriever Model ทำการสืบค้นเนื้อหาหรือข้อความที่มีความเกี่ยวข้องขึ้นมา k อันดับแรก (Top k) ข้อความเหล่านั้นจะถูกนำไปใช้ประกอบรวมเพื่อเป็นบริบท (Context) ให้กับ prompt ตั้งต้น แล้วใส่เป็น input ให้กับ LLM เพื่อสร้างข้อความผลลัพธ์ออกมา ซึ่งผลลัพธ์ที่ได้จาก LLM ในรอบนี้จะมี Critique Token กำกับมาเพิ่มด้วยดังภาพ โดยเป็นการวัดคุณภาพของเนื้อหาที่ถูกสร้างจาก input context ที่ต่างกัน เพื่อวัดความเกี่ยวข้องของคำตอบที่ได้และความครบถ้วนหรือความครอบคลุมของคำตอบที่ได้ จากตัวอย่างจะเห็นว่าการใช้ context หมายเลข 1 จะได้ผลลัพธ์ที่เกี่ยวข้องกับคำถาม และครอบคลุมคำถามมากที่สุด 

ขั้นตอนที่ 3 Critique output and select best segment 

ขั้นตอนสุดท้ายเป็นการนำผลลัพธ์ที่ได้จากขั้นตอนที่ 2 นั่นก็คือ ข้อความที่มี Critique Token กำกับของทุก output ที่สร้างมาจาก LLM ที่ได้จากการใส่ input context ที่ต่างกัน มาทำการเปรียบเทียบเพื่อเลือกผลลัพธ์ที่ดีที่สุดมาใช้ ซึ่งจากในตัวอย่างคือผลลัพธ์ที่ได้จากการใช้ context หมายเลข 1 จากนั้นผลลัพธ์ที่ถูกเลือกจะถูกนำมาใส่ LLM เพื่อทำการสร้างข้อความและ Retrieval Token อีกครั้ง เพื่อพิจารณาว่าควรจะมีการสร้างเนื้อหาต่อหรือไม่ ซึ่งจะทำเช่นนี้ซ้ำไปเรื่อย ๆ จนกว่าผลของ Retrieval Token จะมีค่าเป็น No ก็คือไม่จำเป็นต้องมีการไป Retrieve ข้อมูลเพิ่มอีกแล้ว ข้อความผลลัพธ์ทั้งหมดก็จะสิ้นสุดเพียงแค่นี้ 

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

บทความโดย กัญญาวีร์ พรสว่างดี
ทบทวนและปรับปรุงโดย อิสระพงศ์ เอกสินชล

เอกสารอ้างอิง

Project Manager & Data Scientist
Big Data Institute (Public Organization), BDI

แบ่งปันบทความ

กลุ่มเนื้อหา

แท็กยอดนิยม

แจ้งเรื่องที่อยากอ่าน

คุณสามารถแจ้งเรื่องที่อยากอ่านให้เราทราบได้ !
และเราจะนำไปพัฒนาบทความให้มีเนื้อหาที่น่าสนใจมากขึ้น

ไอคอน PDPA

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ “นโยบายคุ้กกี้” และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ “ตั้งค่า”

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่มีความจำเป็น (Strictly Necessary Cookies)
    เปิดใช้งานตลอด

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

  • คุกกี้เพื่อการวิเคราะห์และประเมินผลการใช้งาน (Performance Cookies)

    คุกกี้ประเภทนี้ช่วยให้ BDI ทราบถึงการปฏิสัมพันธ์ของผู้ใช้งานในการใช้บริการเว็บไซต์ของ BDI รวมถึงหน้าเพจหรือพื้นที่ใดของเว็บไซต์ที่ได้รับความนิยม ตลอดจนการวิเคราะห์ข้อมูลด้านอื่น ๆ BDI ยังใช้ข้อมูลนี้เพื่อการปรับปรุงการทำงานของเว็บไซต์ และเพื่อเข้าใจพฤติกรรมของผู้ใช้งานมากขึ้น ถึงแม้ว่า ข้อมูลที่คุกกี้นี้เก็บรวบรวมจะเป็นข้อมูลที่ไม่สามารถระบุตัวตนได้ และนำมาใช้วิเคราะห์ทางสถิติเท่านั้น การปิดการใช้งานคุกกี้ประเภทนี้จะส่งผลให้ BDI ไม่สามารถทราบปริมาณผู้เข้าเยี่ยมชมเว็บไซต์ และไม่สามารถประเมินคุณภาพการให้บริการได้

  • คุกกี้เพื่อการใช้งานเว็บไซต์ (Functional Cookies)

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

  • คุกกี้เพื่อการโฆษณาไปยังกลุ่มเป้าหมาย (Targeting Cookies)

    คุกกี้ประเภทนี้เป็นคุกกี้ที่เกิดจากการเชื่อมโยงเว็บไซต์ของบุคคลที่สาม ซึ่งเก็บข้อมูลการเข้าใช้งานและเว็บไซต์ที่ท่านได้เข้าเยี่ยมชม เพื่อนำเสนอสินค้าหรือบริการบนเว็บไซต์อื่นที่ไม่ใช่เว็บไซต์ของ BDI ทั้งนี้ หากท่านปิดการใช้งานคุกกี้ประเภทนี้จะไม่ส่งผลต่อการใช้งานเว็บไซต์ของ BDI แต่จะส่งผลให้การนำเสนอสินค้าหรือบริการบนเว็บไซต์อื่น ๆ ไม่สอดคล้องกับความสนใจของท่าน

บันทึกการตั้งค่า
ไซต์นี้ลงทะเบียนกับ wpml.org ในฐานะไซต์พัฒนา สลับไปยังไซต์การผลิตโดยใช้รหัส remove this banner.