หน่วย 1 / 11

RAG คืออะไร และเหตุใดจึงจำเป็น

กำไร:

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

ไม่ว่าโมเดลภาษาจะมีประสิทธิภาพเพียงใด (ปัญญาประดิษฐ์ที่เข้าใจและสร้างข้อความ เราจะเรียกมันว่าโมเดลโดยย่อต่อจากนี้) จะไม่ทราบสัญญาที่บริษัทของคุณลงนามเมื่อวานนี้ หน้าวิกิภายในของคุณ (ฐานความรู้ภายใน) หรือบันทึกประจำรุ่นที่เผยแพร่เมื่อเช้านี้ โมเดลนี้จำกัดเฉพาะความรู้ทั่วไปจนถึงวันที่ได้รับการฝึกอบรม ซึ่งเรียกว่า "วันตัดการศึกษา" RAG (Retrieval-Augmented Generation) เติมเต็มช่องว่างนี้: ค้นหาเอกสารของบริษัทที่เกี่ยวข้องกับคำถาม มอบให้กับโมเดลเป็นบริบท (นั่นคือ ข้อความเพิ่มเติมที่จะอ่านขณะจัดทำคำตอบ) และมีคำตอบที่สร้างขึ้นตามบริบทนี้

ในหน่วยนี้ เราจะเห็นได้อย่างชัดเจนว่า RAG คืออะไร เมื่อใดที่ต้องการมากกว่าทางเลือกอื่น และขั้นตอนของไปป์ไลน์ RAG ทั่วไป หน่วยต่อๆ ไปทั้งหมดจะเจาะลึกส่วนต่างๆ ของแผนที่นี้ทีละหน่วย

แนวคิดพื้นฐานของ RAG: การสอบ Open Book

มาอธิบาย RAG ด้วยประโยคเดียว: "ขั้นแรกให้ค้นหาเอกสารที่เกี่ยวข้อง จากนั้นให้แบบจำลองอ่านเอกสารนั้นและพิมพ์คำตอบตามนั้น"

การเปรียบเทียบที่มีประโยชน์ที่สุดคือ: RAG ย้ายแบบจำลองจาก "ข้อสอบแบบปิดหนังสือ" ไปเป็น "ข้อสอบแบบเปิดหนังสือ" ในการสอบแบบปิดหนังสือ นักเรียนจะตอบจากความจำเท่านั้น มีความเสี่ยงสูงที่จะสร้างสิ่งที่คุณจำไม่ได้ ในการสอบแบบ open book นักเรียนจะตอบโดยดูจากแหล่งที่มาที่อยู่ตรงหน้าเขา ใน RAG โมเดลจะไม่ตอบจากหน่วยความจำของตัวเองอีกต่อไป แต่จากข้อความปัจจุบันและเฉพาะเจาะจงที่คุณให้ไว้

จุดวิกฤติ: RAG จะไม่เปลี่ยนน้ำหนักของโมเดล ซึ่งก็คือพารามิเตอร์ตัวเลขนับพันล้านที่โมเดลได้เรียนรู้ คุณไม่ได้ฝึกโมเดลใหม่ สำหรับแต่ละคำถาม คุณจะแทรกข้อความที่เกี่ยวข้องกับคำถามนั้นลงในพรอมต์ (ข้อความคำแนะนำที่ส่งไปยังโมเดล) ดังนั้นคุณไม่จำเป็นต้องฝึกโมเดลใหม่เมื่อมีการอัปเดตเอกสาร คุณเพียงแค่รีเฟรชบันทึกที่เกี่ยวข้องในฐานข้อมูลการค้นหา

คำแนะนำ: คำถามสองข้อเป็นตัวกำหนดคุณภาพของ RAG: (1) คุณพบเอกสารที่ถูกต้องหรือไม่ (2) โมเดลอ่านถูกต้องหรือไม่? ประการแรกคือ "คุณภาพการดึงข้อมูล" ประการที่สองคือ "คุณภาพการสร้าง" ทั้งสองวัดและปรับปรุงแยกกัน

RAG, การปรับแต่งแบบละเอียดหรือบริบทแบบยาว?

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

แนวทาง

ทำอะไร

เมื่อไหร่จึงจะเหมาะสม?

ต้นทุน/ความเสี่ยง

เศษผ้า

แทรกเอกสารที่เกี่ยวข้องเป็นบริบท

ข้อมูลเฉพาะเจาะจงที่เปลี่ยนแปลงบ่อยและกว้างขวาง

ต่ำ; อัพเดทง่าย อ้างอิงแหล่งที่มาได้

การปรับแต่งแบบละเอียด

อัปเดตน้ำหนักด้วยข้อมูลใหม่

รูปแบบการสอนแบบคงที่/รูปแบบ/ภาษา

สูง; จำเป็นต้องมีการฝึกอบรมใหม่ทุกครั้งที่มีการอัปเดต

บริบทที่ยาวเท่านั้น

กรอกเอกสารทั้งหมดลงในพร้อมท์

ชุดเอกสารเครื่องเขียนขนาดเล็ก

ต้นทุนโทเค็นและความเสี่ยงในการ "สูญเสียส่วนตรงกลาง" เพิ่มขึ้น

ตามกฎแล้ว: การปรับแต่งอย่างละเอียดจะสอนโมเดลวิธีการพูด RAG จะบอกโมเดลถึงสิ่งที่ควรรู้ ในสถานการณ์ระดับองค์กรส่วนใหญ่ RAG จะถูกลองใช้ก่อนเนื่องจากมีราคาถูก อัปเดตได้ และสามารถแสดงแหล่งที่มาของคำตอบได้ บริบทที่ยาวจะสมเหตุสมผลหากชุดเอกสารมีขนาดเล็กและคงที่มาก (เช่น คู่มือ 20 หน้าเดียว) แต่ด้วยจำนวนหลายพันหน้า จึงมีราคาแพง และโมเดลอาจพลาดข้อมูลกลางข้อความยาวๆ

ไปป์ไลน์ RAG ทั่วไป

RAG ประกอบด้วยสองขั้นตอนหลัก: การจัดทำดัชนี (การเตรียมการ ดำเนินการครั้งเดียวหรือเป็นระยะ) และการสืบค้น (ดำเนินการกับทุกคำถามของผู้ใช้)

การจัดทำดัชนีทีละขั้นตอน (ออฟไลน์โดยไม่ต้องรอผู้ใช้):

  1. รวบรวม: ดึงเอกสารจากแหล่งที่มา (PDF, วิกิ, ระบบตั๋ว, ฐานข้อมูล, อีเมล)
  2. การแบ่งส่วน: แบ่งข้อความยาวออกเป็นชิ้นเล็กๆ ที่สามารถจัดการได้
  3. ฝัง: แปลงแต่ละส่วนเป็นการฝัง (เวกเตอร์ตัวเลขที่สื่อความหมายของข้อความ)
  4. บันทึก: เขียนเวกเตอร์พร้อมกับข้อความและข้อมูลเมตา (แหล่งที่มา วันที่ ข้อมูลการอนุญาต) ลงในฐานข้อมูลเวกเตอร์

แบบสอบถามทีละขั้นตอน (ออนไลน์ในขณะที่ผู้ใช้กำลังรอ):

  1. แปลงคำถามของผู้ใช้เป็นการฝัง
  2. ดึงชิ้นส่วนที่คล้ายกันมากที่สุดจากฐานข้อมูลเวกเตอร์
  3. วางชิ้นส่วน + คำถามเหล่านี้ลงในเทมเพลตพร้อมท์
  4. รับคำตอบตามบริบทและแหล่งที่มาจากแบบจำลอง

# โครงร่างแนวคิดของขั้นตอนการสอบถาม (ไม่ขึ้นอยู่กับภาษา) คำถาม = "วันหยุดประจำปีกี่วัน?"question_vektor = embed(question)parts = vektor_db.search(question_vektor, top_k=4) # partsprompt ที่คล้ายกันมากที่สุด = f"""ตอบคำถามโดยใช้ CONTEXT ด้านล่าง หากคำตอบไม่อยู่ในบริบท ให้พูดว่า "ฉันไม่มีข้อมูลเกี่ยวกับเรื่องนี้" Fitting.CONTEXT:{parts}คำถาม: {question}"""answer = model.uret(prompt) # เช่น รุ่น: claude-opus-4-8

โฟลว์นี้เป็นแผนที่ของแต่ละขั้นตอน ซึ่งเราจะแยกออกทีละรายการในหน่วยถัดไป

พรอมต์ที่อ่อนแอ / พรอมต์ที่แข็งแกร่ง

แม้ว่าจะมีบริบท RAG เดียวกัน แต่คุณภาพของพรอมต์ก็เปลี่ยนคำตอบ

พรอมต์ที่อ่อนแอ (เปิดรับการปรับโมเดล ไม่ต้องใช้ทรัพยากร):

ใช้ข้อมูลนี้และพูดว่าการลาประจำปี: {parts} คำถาม: {คำถาม}

พร้อมท์ที่มีประสิทธิภาพ (การต่อสายดิน + สิทธิ์ "ฉันไม่รู้" + คำขอทรัพยากร):

ตอบตามบริบทด้านล่างเท่านั้น หากไม่มีคำตอบที่ชัดเจนในบริบท ให้เขียนว่า "ฉันไม่พบข้อมูลเกี่ยวกับเรื่องนี้ในเอกสารประกอบ"; อย่าเดาเลย เพิ่มแท็ก [แหล่งที่มา: file_name] ของเนื้อหาที่คุณอ้างอิงในตอนท้ายของคำตอบ บริบท: {ชิ้น} คำถาม: {คำถาม}

มินิเคสสามอัน

กรณีที่ 1 — ผู้ช่วยฝ่ายทรัพยากรบุคคล (ทรัพยากรบุคคล) บริษัทแห่งหนึ่งมีคู่มือทรัพยากรบุคคล 340 หน้า และพนักงานถามคำถามเฉลี่ย 90 ข้อต่อวัน มีการพยายามปรับแต่งอย่างละเอียด แต่เนื่องจากคู่มือได้รับการอัปเดตทุกเดือน จึงจำเป็นต้องมีการฝึกอบรมใหม่ทุกครั้ง ค่าใช้จ่ายสูงถึงหลายพันดอลลาร์ต่อเดือน หลังจากเปลี่ยนมาใช้ RAG การอัปเดตก็ลดลงเป็นขั้นตอน "จัดทำดัชนีเอกสารใหม่" (นาที) และอัตราคำตอบที่ถูกต้องเพิ่มขึ้นจาก 71% เป็น 93% ในการวัดด้วยตนเอง

กรณีที่ 2 — การสนับสนุนลูกค้า ทีมสนับสนุนมีตั๋วที่แก้ไขแล้ว 12,000 ใบและบทความช่วยเหลือ 800 รายการ ตัวแทนจะใช้เวลาโดยเฉลี่ย 4 นาทีในการค้นหาคำตอบด้วยตนเอง เมื่อผู้ช่วย RAG นำบันทึกที่เกี่ยวข้องมากที่สุด 5 รายการและสร้างร่างคำตอบ เวลาก็ลดลงเหลือ 40 วินาที แต่ทีมงานได้ตระหนักถึงความเสี่ยงที่จะ "ดูไม่แน่ใจโดยนำบทความผิด" และบังคับให้อ้างอิงแหล่งที่มา

กรณีที่ 3 — กฎหมาย ทีมงานผู้ทำสัญญาถามว่า "ข้อกำหนดการรักษาความลับมีอายุการใช้งาน 5 ปีในสัญญาใดบ้าง" เขาถามคำถาม ในการทดลองบริบทระยะยาว มีการกรอกสัญญา 60 ฉบับในข้อความแจ้งเดียว โมเดลข้ามสัญญาสองฉบับตรงกลาง เมื่อมีการแนะนำเฉพาะรายการที่เกี่ยวข้องด้วย RAG ราคาโทเค็นลดลง 80% และการข้ามที่หายไปจะถูกรีเซ็ต

เหตุใด RAG จึงจำเป็น?

  • ความเป็นปัจจุบัน: คุณเข้าถึงข้อมูลหลังจากวันตัดรอบการฝึกอบรม
  • ข้อมูลพิเศษ: เอกสารภายในของคุณไม่รวมอยู่ในการฝึกอบรมรุ่นใดๆ มีเพียงคุณเท่านั้นที่สามารถให้ได้
  • การตรวจสอบความถูกต้อง: คุณสามารถอ้างอิงแหล่งที่มาของคำตอบ (การอ้างอิง) ซึ่งจำเป็นสำหรับการตรวจสอบและความน่าเชื่อถือ
  • การควบคุมอาการประสาทหลอน: ขึ้นอยู่กับข้อความที่อยู่ข้างหน้าแทนที่จะสร้างแบบจำลอง
  • ค่าใช้จ่าย: ถูกกว่าและเร็วกว่าในการดำเนินการมากกว่าการปรับแต่งแบบละเอียดมาก
ข้อควรระวัง: RAG ไม่ใช่เวทย์มนตร์ หากคุณใส่ผิดชิ้น นางแบบก็จะได้คำตอบที่ผิดและดู “มั่นใจ” โปรดจำไว้ว่าวลี "คุณภาพการดึงข้อมูล = คุณภาพ RAG"

ข้อผิดพลาดทั่วไป

  • RAG เข้าใจผิดในการปรับแต่งอย่างละเอียด: RAG จะไม่เปลี่ยนน้ำหนัก มันแค่เพิ่มบริบท ความสับสนทั้งสองนี้จะนำไปสู่การเลือกสถาปัตยกรรมที่ไม่ถูกต้อง
  • ไม่อนุญาตให้ "ฉันไม่รู้": หากข้อความแจ้งปล่อยให้โมเดลกรอกข้อมูลในช่องว่างได้ จะเป็นการสร้างขึ้นมา
  • ไม่อ้างอิงแหล่งที่มา: ไม่สามารถตรวจสอบคำตอบที่ไม่มีแหล่งที่มาได้ ผู้ใช้ไม่สามารถสังเกตเห็นข้อผิดพลาดได้
  • อัดทุกอย่างไว้ในข้อความเดียว: บริบทที่ยาวดูถูกแต่มีราคาแพงและพลาดข้อมูลตรงกลาง
  • ติดอยู่ในรุ่นโดยไม่ต้องวัดการดึงกลับ: หากคำตอบไม่ดี ให้ถามก่อนว่า "ได้ชิ้นส่วนที่ถูกต้องมาถึงหรือไม่" ควรจะถาม

โดยสรุป

  • RAG เป็นแนวทางที่แทรกเอกสารที่เกี่ยวข้องกับคำถามลงในแบบจำลองตามบริบท ไม่เปลี่ยนแปลงน้ำหนัก ("สอบ open book")
  • การปรับแต่งอย่างละเอียดจะสอนสไตล์/รูปแบบ RAG ให้ข้อมูลที่เป็นปัจจุบันและเฉพาะเจาะจง บริบทแบบยาวทำงานได้ดีกับชุดคงที่ขนาดเล็ก ในสถานการณ์ส่วนใหญ่ RAG จะถูกลองก่อน
  • ไปป์ไลน์มีสองขั้นตอน: การทำดัชนีออฟไลน์ (ก้อน + การฝัง + บันทึก) และการสืบค้นออนไลน์ (การดึงข้อมูล + พร้อมท์ + สร้าง)
  • RAG ให้ความทันเวลา ข้อมูลเฉพาะ การตรวจสอบได้ การควบคุมอาการประสาทหลอน และต้นทุนต่ำ
  • คุณภาพของระบบขึ้นอยู่กับคุณภาพของการดึงโดยตรง: ชิ้นส่วนที่ผิดหมายถึงคำตอบที่ผิด

งานสมัคร

เลือกแหล่งข้อมูลที่แท้จริงจากทีมของคุณ (เช่น เอกสารขั้นตอนหรือหน้าคำถามที่พบบ่อย) (1) เขียนคำถามข้อเท็จจริง 5 ข้อเกี่ยวกับแหล่งข้อมูลนี้ (2) สังเกตว่าส่วนใดของเอกสารที่มีคำตอบที่ถูกต้องสำหรับแต่ละคำถาม ซึ่งจะกลายเป็นรายการ "คำตอบหลัก" ของคุณ (3) ใช้เทมเพลต "พร้อมท์ที่รัดกุม" ด้านบน วางส่วนที่เกี่ยวข้องเป็นบริบทด้วยตนเองและถามโมเดล (4) เปรียบเทียบคำตอบที่ได้รับจากแบบจำลองกับคำตอบสีทอง แล้วทำเครื่องหมายว่าเป็นจริง/เท็จ นี่เป็นการประเมินด้วยตนเองเวอร์ชันแรกที่คุณจะดำเนินการโดยอัตโนมัติในหน่วยการเรียนรู้ในอนาคต

รายการตรวจสอบ

  • [ ] ฉันสามารถอธิบายได้ในประโยคเดียวว่า RAG ไม่ได้เปลี่ยนน้ำหนัก แต่เพียงเพิ่มบริบทเท่านั้น
  • [ ] ฉันสามารถแยกแยะระหว่าง RAG การปรับแต่งแบบละเอียด และบริบทแบบยาวได้ และเมื่อใดที่เหมาะสม
  • [ ] ฉันสามารถนับขั้นตอนการจัดทำดัชนี (collect-shred-embed-save) และ Query (embed-fetch-prompt-generate) ตามลำดับ
  • [ ] ฉันรู้ว่าทำไมฉันจึงเพิ่มคำแนะนำ "ถ้าไม่อยู่ในบริบท บอกว่าฉันไม่รู้" และ "อ้างอิงแหล่งที่มา" ลงในพรอมต์
  • [ ] ฉันสามารถปรับหลักการ "คุณภาพการดึงข้อมูล = คุณภาพ RAG" ให้เหมาะกับกรณีของฉันเองได้