𝗪𝗵𝘆 𝗬𝗼𝘂𝗿 𝗥𝗔𝗚 𝗦𝘆𝘀𝘁𝗲𝗺 𝗛𝗮𝗹𝗹𝘂𝗰𝗶𝗻𝗮𝘁𝗲𝘀
ระบบ RAG ของคุณมีความแม่นยำในการดึงข้อมูล (retrieval accuracy) อยู่ที่ 34% คุณทำตามทุกบทช่วยสอน คุณใช้ไลบรารีที่ถูกต้อง คุณเลือกขนาด Chunk จากบล็อกโพสต์ แต่ระบบก็ยังล้มเหลวอยู่ดี
นี่ไม่ใช่ปัญหาเรื่องเครื่องมือ แต่นี่คือปัญหาเรื่องพื้นฐาน
เมื่อคุณนำไลบรารีมาวางซ้อนกันโดยไม่เข้าใจเลเยอร์ที่อยู่เบื้องล่าง คุณกำลังสร้าง "หนี้จากการใช้ abstraction" (abstraction debt) คุณได้ความเร็วมาแต่ต้องสูญเสียความสามารถในการดีบั๊ก (debug) คุณกำลังสร้างกล่องดำ (black box) ขึ้นมา
ในการแก้ไข RAG pipeline ของคุณ คุณต้องเชี่ยวชาญใน 3 เลเยอร์นี้:
กลยุทธ์การแบ่ง Chunk (Chunking Strategy) ขนาดของ Chunk คือการตัดสินใจเชิงความหมาย (semantic decision) หาก Chunk ของคุณมีขนาด 512 tokens คุณจะดึงข้อมูลมาได้เป็นย่อหน้า แต่ถ้าคำถามของคุณต้องเชื่อมโยงแนวคิดจากหลายย่อหน้าเข้าด้วยกัน แสดงว่า Chunk ของคุณเล็กเกินไป คุณต้องตัดสินใจว่าควรให้บริบท (context) ไหลเวียนระหว่าง Chunk มากน้อยเพียงใด
โมเดล Embedding (Embedding Models) Dense embeddings ช่วยจับความหมายแต่สูญเสียไวยากรณ์ (syntax) ที่แม่นยำไป โมเดลอาจมองว่า "error 403" และ "error 404" แทบจะเหมือนกัน คุณต้องรู้ว่าโมเดลของคุณจับข้อมูลอะไรได้บ้าง สัญญาทางกฎหมายต้องการ Embedding ที่แตกต่างจากคลังเก็บโค้ด (code repository)
การดึงข้อมูล เทียบกับ ความสามารถในการระลึก (Retrieval vs. Recall) การค้นหาแบบ Vector จะหาทุกอย่างที่อาจจะเกี่ยวข้อง นี่คือ Recall แต่ RAG ที่ใช้งานจริง (Production) ต้องการความแม่นยำ (precision) คุณต้องการคำตอบที่ถูกต้องแม่นยำ ไม่ใช่ย่อหน้าที่คล้ายกันสิบย่อหน้า นี่คือเหตุผลที่คุณต้องใช้ Hybrid search
Hybrid search ผสมผสาน dense vectors เข้ากับการจับคู่คำสำคัญ (keyword matching หรือ BM25)
- การค้นหาเชิงความหมาย (Semantic search) เพียงอย่างเดียว อาจพลาดรหัส (codes) หรือ ID ที่เฉพาะเจาะจง
- การค้นหาด้วยคำสำคัญ (Keyword search) เพียงอย่างเดียว อาจพลาดความหมายเชิงแนวคิด (conceptual meaning)
- Hybrid search จะให้น้ำหนักทั้งสองอย่างเพื่อค้นหาความจริง
การให้น้ำหนักที่เหมาะสมไม่ได้อยู่ในคู่มือ คุณจะพบมันได้จากการทดสอบกับข้อมูลเฉพาะของคุณเอง
เลิกพึ่งพาเวทมนตร์ได้แล้ว หากคุณไม่สามารถสร้าง RAG pipeline พื้นฐานขึ้นมาเองจากศูนย์ได้ คุณก็ยังไม่พร้อมสำหรับ Agentic RAG ความซับซ้อนจะทวีคูณเมื่อคุณไม่เข้าใจพื้นฐาน
ทำ 4 สิ่งนี้ก่อนเริ่มโปรเจกต์ถัดไปของคุณ:
- ทำ Benchmark การแบ่ง Chunk: ทดสอบขนาดที่แตกต่างกัน 3 ขนาด วัดค่า precision ที่ top-1 และ top-5
- ทดสอบ Embedding ด้วยข้อมูลจริง: อย่าใช้การทดสอบแบบสังเคราะห์ (synthetic tests) ให้ใช้คำถามจริงจากผู้ใช้งานของคุณ
- บันทึกความล้มเหลว (Log failures): เป็นเวลาสองสัปดาห์ ให้บันทึกทุกคำถามที่ล้มเหลว มองหารูปแบบว่าการค้นหาของคุณพลาดอะไรไปบ้าง
- ลอง Implement BM25 สักครั้ง: แม้ว่าภายหลังคุณจะใช้ไลบรารี แต่คุณจำเป็นต้องเข้าใจเกณฑ์มาตรฐานของการค้นหาด้วยคำสำคัญ (keyword baseline)
ไลบรารีช่วยประหยัดเวลา แต่ความเข้าใจช่วยสร้างความน่าเชื่อถือ
Optional learning community: https://t.me/GyaanSetuAi