ค้นพบความสนใจของคุณ ไปด้วยกัน

ดีลจริง รีวิวตรงไปตรงมา และเรื่องราวการช้อปปิ้งจากคนที่มีความสนใจเดียวกับคุณ — ทุกวันบน ZestBuy

ค้นพบความสนใจของคุณ ไปด้วยกันดีลจริง รีวิวตรงไปตรงมา และเรื่องราวการช้อปปิ้งจากคนที่มีความสนใจเดียวกับคุณ — ทุกวันบน ZestBuy

สร้าง RAG ระบบการสอบถามให้ใช้งานได้จริงจากเดโมสู่โปรดักชัน

สร้าง RAG ระบบการสอบถามให้ใช้งานได้จริงจากเดโมสู่โปรดักชัน
ความสนใจ|เทคนิคการใช้ AI

เข้าใจ RAG ในแบบโปรดักชันก่อนลงมือ

RAG หรือ Retrieval Augmented Generation คือสถาปัตยกรรมที่นำการเรียกข้อมูล AI จากแหล่งภายนอกมาผสานกับการสร้างข้อความของโมเดลภาษา ทำให้ระบบตอบคำถามสามารถอ้างอิงเอกสารภายใน ฐานความรู้ หรือข้อมูลอัปเดตล่าสุดได้ ลดโอกาสหลงประเด็นและช่วยจัดการบริบทให้ตรงกับคำถาม โดยออกแบบให้แบ่งกระบวนการเป็นเส้นทาง ingest เอกสารและเส้นทางตอบคำถามที่ทำงานร่วมกันอย่างมีแบบแผน เพื่อให้ได้ RAG ระบบการสอบถามที่ใช้งานได้จริงในโปรดักชัน

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

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

สร้าง RAG ระบบการสอบถามให้ใช้งานได้จริงจากเดโมสู่โปรดักชัน

ออกแบบพายป์ไลน์ RAG ให้ดึงข้อมูลถูกต้อง

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

  1. สร้างพายป์ไลน์ ingest เอกสาร โดยรับ Documents ทำ Text Extraction แยกเป็น Chunking สร้าง Embeddings แล้วเก็บลง Vector Database
  2. สร้างพายป์ไลน์ตอบคำถาม โดยรับ User Question ทำ Query Embedding เรียก Similarity Search เลือก Top K Chunks แล้วประกอบเป็น Prompt พร้อม Context ส่งเข้า LLM เพื่อสร้างคำตอบ
  3. กำหนดให้เลเยอร์จัดการบริบทอยู่ชั้นใต้เอเจนต์ ให้เอเจนต์ตัดสินใจว่าจะทำอะไร ส่วนเลเยอร์ตัดสินใจว่าจะให้เห็นข้อมูลโลกมากแค่ไหน เพื่อให้เปลี่ยนกลยุทธ์บริบทได้ด้วยการอัปเดตเวอร์ชันแทนการเขียนใหม่ทั้งระบบ
  4. ติดตั้งระบบ tracing และ evaluation ตั้งแต่เริ่ม เพื่อให้ทุกคำถามมีข้อมูลเทเลเมทรีโทเคนและคุณภาพ ทำให้วิเคราะห์และปรับระบบเชิงหลักฐานแทนการเดา
  5. แยกอินเทอร์เฟซจัดการบริบทให้ต่อกับเอเจนต์โดยที่เอเจนต์ไม่ต้องรู้รายละเอียดภายใน ให้ทีมเปิดใช้ผ่านการตั้งค่ามากกว่าการเขียนโค้ดใหม่ ลดภาระแก้ไขเมื่อมีการปรับเลเยอร์บริบท

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

จัดการ chunking การเรียกข้อมูล และบริบทให้ลดหลงประเด็น

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

เมื่อดึงชิ้นข้อมูลมาแล้ว ต้องมีขั้นตอนจัดอันดับและกรองซ้ำก่อนใส่เข้า context เลเยอร์บริบทสามารถใช้การ reranking ให้คะแนนความเกี่ยวข้องของแต่ละชิ้นกับขั้นงานปัจจุบันแทนที่จะดูเฉพาะงานใหญ่ และใช้ clustering กลุ่มชิ้นข้อมูลที่สื่อสารเรื่องเดียวกันแล้วคงตัวแทนเพียงชิ้นเดียวเพื่อลดซ้ำซ้อน จากนั้นตั้งกฎให้โมเดลตอบโดยอ้างอิงเฉพาะข้อมูลใน context เช่น "ให้ตอบโดยใช้ข้อมูลที่ให้มาเท่านั้น ถ้าไม่มีข้อมูลเพียงพอให้ระบุว่าไม่ทราบ และอย่าคิดเติม" เพื่อเปลี่ยนค่าตั้งต้นจากการเดาเป็นการเคารพหลักฐาน

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

จัดงบโทเคนและการจัดการบริบทเพื่อควบคุมต้นทุน

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

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

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

ดีบัก วัดผล และตั้งค่า default ให้ AI เชื่อถือได้

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

เวลาเจอคำตอบเพี้ยน ลองไล่ดูว่า User Question ไปเจอ Retrieved Chunks อะไร คะแนน Similarity เป็นอย่างไร Final Context ที่ส่งเข้าโมเดลมีสาระที่ควรมีหรือไม่ Prompt จริงที่ใช้กับ LLM เป็นแบบไหน แล้วคำตอบสุดท้ายออกมาอย่างไร มุมมองนี้ทำให้แยกออกว่าปัญหาอยู่ที่เวกเตอร์เสิร์ช การจัดอันดับ การตัดบริบท หรือการสร้างคำตอบ

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

ZestBuy ได้รับค่าคอมมิชชั่นเมื่อคุณช้อปผ่านลิงก์ของเรา โดยคุณไม่ต้องจ่ายเพิ่ม

You May Also Like

Comments
พูดอะไรบางอย่าง...
ยังไม่มีความคิดเห็น มาเป็นคนแรกที่แบ่งปันความคิดเห็นของคุณ!