คู่มือ

RAG คืออะไร Retrieval-Augmented Generation อธิบายง่ายๆ

RAG (retrieval-augmented generation) คือวิธีทำให้โมเดลภาษาขนาดใหญ่ตอบคำถามโดยใช้ข้อมูลของคุณเอง เมื่อมีคนถามคำถาม แอปของคุณจะค้นหาในเอกสารเพื่อหาข้อความที่เกี่ยวข้องที่สุดก่อน แล้วส่งข้อความเหล่านั้นให้โมเดลพร้อมกับคำถาม โมเดลจะเขียนคำตอบจากข้อความนั้น แทนที่จะพึ่งพาแค่สิ่งที่มันเรียนรู้มาโดยบังเอิญระหว่างการฝึก

ทำไม RAG จึงสำคัญเมื่อสร้างด้วย AI

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

มีตัวเลือกกว้างๆ สามแบบในการแก้ปัญหานี้:

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

โมเดลสมัยใหม่รับ prompt ที่ยาวได้ ดังนั้นสำหรับ FAQ สั้นๆ ตัวเลือกแรกมักใช้ได้ดี RAG มีประโยชน์เมื่อข้อความมีมากจนไม่อยากส่งทั้งหมดทุกครั้ง เพราะทุกคำที่ส่งมีค่าใช้จ่ายและเวลา (ดู LLM API คิดค่าบริการอย่างไร)

หากคุณกำลังสร้างฟีเจอร์ "แชตกับเอกสารของเรา" ผู้ช่วยฝ่ายสนับสนุน หรือเครื่องมือความรู้ภายในองค์กร เกือบแน่นอนว่าคุณกำลังสร้าง RAG ในรูปแบบใดรูปแบบหนึ่งอยู่

ตัวอย่างในชีวิตประจำวัน

ลองนึกถึงการสอบแบบเปิดตำรา นักเรียนที่ต้องตอบจากความจำอาจจำผิดหรือเดาไปเรื่อย แต่นักเรียนที่เปิดไปหน้าที่ถูกต้องก่อน อ่าน แล้วจึงตอบ จะน่าเชื่อถือกว่ามาก ตราบใดที่หาหน้าที่ถูกต้องเจอ

  • นักเรียน คือโมเดลภาษา
  • ตำรา คือเอกสารของคุณ
  • การเปิดไปหน้าที่ถูกต้อง คือการค้นคืนข้อมูล (retrieval)
  • การเขียนคำตอบจากหน้าเหล่านั้น คือการสร้างคำตอบ (generation)

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

RAG ทำงานอย่างไร ทีละขั้น

การตั้งค่า RAG ทั่วไปมีสองระยะ

เตรียมเอกสารของคุณ (ทำล่วงหน้า):

  1. รวบรวม วัสดุต้นฉบับ เช่น บทความช่วยเหลือ PDF นโยบาย ข้อมูลสินค้า
  2. แบ่ง chunk: แบ่งเอกสารยาวเป็นชิ้นเล็กๆ มักเป็นไม่กี่ย่อหน้าต่อชิ้น เพื่อให้การค้นหาคืนค่าเฉพาะส่วนที่เกี่ยวข้อง
  3. ทำ embed แต่ละ chunk: ส่งไปยังโมเดล embedding ซึ่งแปลงข้อความเป็น embedding คือรายการตัวเลขยาวๆ ที่จับความหมายของข้อความไว้ ข้อความที่พูดถึงเรื่องคล้ายกันจะมีตัวเลขคล้ายกัน
  4. จัดเก็บ chunk และ embedding ของมันในฐานข้อมูลที่ค้นหาตามความคล้ายได้ (มักเรียกว่า vector database หรือ vector index)

ตอบคำถาม (ทำทุกครั้งที่มีการถาม):

  1. ทำ embed คำถาม ด้วยโมเดล embedding ตัวเดียวกัน
  2. ค้นคืน chunk ที่ embedding ของมันใกล้กับคำถามที่สุด เช่น ห้าอันดับแรก
  3. สร้าง prompt: คำสั่ง chunk ที่ค้นคืนมา และคำถาม
  4. สร้างคำตอบ: โมเดลภาษาเขียนคำตอบจาก chunk เหล่านั้น และควรอ้างอิงว่าใช้ chunk ไหน

การค้นหาตามความหมายคือสิ่งที่ทำให้วิธีนี้ได้ผล คำถามเรื่อง "ขอเงินคืน" สามารถพบ chunk ชื่อ "นโยบายการคืนเงิน" ได้ แม้สองอย่างนี้จะไม่มีคำเหมือนกันเลย

ตัวอย่างประกอบ: ผู้ช่วยฝ่ายช่วยเหลือของยิม

สมมติว่ายิมแห่งหนึ่งมีบทความช่วยเหลือ 40 บทความ และต้องการแชตบอตผู้ช่วยบนเว็บไซต์ สมาชิกถามว่า "ฉันหยุดสมาชิกชั่วคราวตอนเดินทางได้ไหม"

แอปทำ embed คำถาม และค้นคืนสาม chunk ที่ใกล้ที่สุด หนึ่งในนั้นเขียนว่า:

การระงับสมาชิก: สมาชิกแบบรายเดือนสามารถระงับสมาชิกได้สูงสุด
2 เดือนต่อปี ยื่นคำขอที่เคาน์เตอร์หรือในแอปอย่างน้อย 7 วัน
ก่อนวันที่เริ่มระงับ

prompt ที่ส่งให้โมเดลจะหน้าตาประมาณนี้:

คุณคือผู้ช่วยฝ่ายช่วยเหลือของ Northside Gym
ตอบจากแหล่งข้อมูลด้านล่างเท่านั้น หากคำตอบไม่มีอยู่ในนั้น
ให้บอกว่าไม่ทราบ และแนะนำให้ติดต่อเคาน์เตอร์
ระบุด้วยว่าใช้แหล่งข้อมูลใด

[แหล่งที่ 1: การระงับสมาชิก] สมาชิกแบบรายเดือนสามารถระงับ...
[แหล่งที่ 2: การยกเลิกสมาชิก] ...
[แหล่งที่ 3: บัตรผู้เยี่ยม] ...

คำถาม: ฉันหยุดสมาชิกชั่วคราวตอนเดินทางได้ไหม

และโมเดลตอบว่า: "ได้ครับ สมาชิกแบบรายเดือนสามารถระงับสมาชิกได้สูงสุดสองเดือนต่อปี ยื่นคำขอที่เคาน์เตอร์หรือในแอปอย่างน้อย 7 วันก่อนวันที่เริ่มระงับ (แหล่งที่มา: การระงับสมาชิก)"

ยิมนี้ไม่ได้ฝึกอะไรใหม่เลย เมื่อเปลี่ยนนโยบายการระงับ ก็แค่อัปเดตบทความ แอปทำ embed chunk นั้นใหม่ และคำตอบถัดไปก็จะสะท้อนการเปลี่ยนแปลงนั้น

คำศัพท์สำคัญ

คำศัพท์ความหมาย
LLMLarge language model คือ AI ที่เขียนคำตอบ ดู LLM คืออะไร
Embeddingรายการตัวเลขที่แทนความหมายของข้อความชิ้นหนึ่ง
Embedding modelโมเดลที่สร้าง embedding มักแยกจากโมเดลแชต และถูกกว่ามาก
Chunkส่วนหนึ่งของเอกสาร มีขนาดที่สามารถค้นคืนได้ด้วยตัวเอง
Vector database / vector searchที่เก็บข้อมูลที่ค้นหารายการที่มี embedding คล้ายกันได้ ฐานข้อมูลทั่วไปบางตัวก็มีฟีเจอร์นี้ เช่น Postgres ผ่านส่วนขยาย pgvector
Top-kจำนวน chunk ที่ค้นคืนต่อคำถาม
Hybrid searchการรวมการค้นหาตามความหมายกับการค้นหาด้วยคีย์เวิร์ดแบบปกติ ช่วยกับคำเฉพาะเจาะจง เช่น รหัสสินค้า
Context windowปริมาณข้อความสูงสุดที่โมเดลรับได้ในคำขอเดียว
Grounding / citationsการผูกคำตอบเข้ากับแหล่งข้อมูลที่ค้นคืนมาโดยเฉพาะและแสดงให้เห็น

ความเข้าใจผิดที่พบบ่อย

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

ค่าใช้จ่าย

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

สิ่งที่ควรถามเครื่องมือสร้างแอปด้วย AI

  • "ก่อนสร้าง RAG ช่วยตรวจว่า: เนื้อหาของเราเล็กพอที่จะใส่ลงใน prompt ได้เลยหรือไม่"
  • "แบ่งบทความช่วยเหลือเป็น chunk ละไม่กี่ย่อหน้า เก็บชื่อและลิงก์แหล่งที่มาของแต่ละ chunk และเก็บ embedding ในฐานข้อมูลของเรา"
  • "ใช้ hybrid search คือการค้นหาตามความหมายบวกคีย์เวิร์ด เพื่อให้รหัสสินค้ายังจับคู่ได้"
  • "สั่งให้โมเดลตอบจากแหล่งที่ค้นคืนเท่านั้น บอกเมื่อไม่ทราบ และแสดงแหล่งที่มาใต้แต่ละคำตอบ"
  • "ค้นหาเฉพาะเอกสารที่ผู้ใช้ที่ล็อกอินอยู่มีสิทธิ์เห็นเท่านั้น"
  • "ทำ embed เอกสารใหม่อัตโนมัติทุกครั้งที่มีการแก้ไข"
  • "เก็บ API key ของผู้ให้บริการ AI ไว้บนเซิร์ฟเวอร์ในฐานะ secret อย่าใส่ไว้ในเบราว์เซอร์"
  • "บันทึกทุกคำถาม chunk ที่ค้นคืนมา และคำตอบ เพื่อให้ฉันตรวจคำตอบที่ไม่ดีได้"

RAG ใน Mythex

Mythex ไม่ได้มีผลิตภัณฑ์ knowledge base หรือ RAG สำเร็จรูป สิ่งที่ทำคือเขียนโค้ดสำหรับระบบนี้ไว้ในแอปของคุณ: คุณนำเอกสารและ API key ของผู้ให้บริการ AI ของคุณมาเอง เก็บเป็น project secret และเอเจนต์จะสร้างส่วนการค้นคืนและแชต โดยใช้ ฐานข้อมูล Postgres ของโปรเจกต์เพื่อจัดเก็บ การใช้งานผู้ให้บริการจะเรียกเก็บกับบัญชีผู้ให้บริการของคุณ ไม่ใช่เครดิต Mythex เอกสารแนะนำให้เริ่มจากฟีเจอร์ AI แบบง่ายหนึ่งอย่าง แล้วค่อยเพิ่ม RAG เมื่อทำงานได้แล้ว ดู การสร้างแอป AI และคู่มือของเราเรื่อง การสร้างแอปแชตบอต AI และ การเพิ่มฟีเจอร์ AI ให้แอปของคุณ

คำถาม

RAG คืออะไรแบบง่ายๆ

RAG (retrieval-augmented generation) คือวิธีทำให้โมเดล AI ตอบจากข้อมูลของคุณเอง ก่อนที่โมเดลจะตอบ แอปของคุณจะค้นหาในเอกสารเพื่อหาข้อความที่เกี่ยวข้องกับคำถาม แล้วใส่ไว้ใน prompt ดังนั้นคำตอบจึงอิงจากข้อความเหล่านั้น ไม่ได้อิงแค่สิ่งที่โมเดลเรียนรู้มาตอนฝึกเท่านั้น

RAG เอาข้อมูลของฉันไปฝึก AI ไหม

ไม่ได้ RAG ไม่ได้เปลี่ยนตัวโมเดลเลย มันค้นหาข้อความที่เกี่ยวข้องในขณะที่มีคนถามคำถาม แล้วส่งให้โมเดลพร้อมกับคำถาม หากคุณอัปเดตเอกสาร คำตอบถัดไปก็ใช้เวอร์ชันใหม่ได้ทันที

RAG เหมือนกับ fine-tuning ไหม

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

RAG หยุด AI hallucination ได้ไหม

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

Mythex · Pricing · สร้างอะไรก็ได้ด้วย AI · เทมเพลตเว็บไซต์และแอป · เปรียบเทียบ Mythex · อภิธานศัพท์การสร้างแอปด้วย AI · เครื่องมือฟรีสำหรับสร้างแอปด้วย AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)