RAG ค้นหาโค้ดผิดพลาดไม่เจอ? เข้าใจ Vector Search เพื่อปลดล็อกข้อมูลที่หายไป

RAG ค้นหาโค้ดผิดพลาดไม่เจอ? เข้าใจ Vector Search เพื่อปลดล็อกข้อมูลที่หายไป

เคยไหมที่ลองถามระบบ AI ที่ฉลาดล้ำอย่าง RAG (Retrieval Augmented Generation) เกี่ยวกับรหัสข้อผิดพลาดเฉพาะเจาะจง หรือรหัสสินค้าอย่าง “E-4471” แต่ระบบกลับหาไม่เจอ หรือให้คำตอบที่ไม่ตรงประเด็นเอาเสียเลย? ไม่ต้องแปลกใจ ปัญหานี้ไม่ได้เกิดจากระบบไม่เก่ง แต่เป็นเพราะธรรมชาติของการค้นหาข้อมูลที่อยู่เบื้องหลังต่างหาก

หัวใจของปัญหา: Vector Embeddings ไม่ได้จดจำ “ตัวอักษร”

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

แนวคิดคือ คำหรือประโยคที่มีความหมายคล้ายกัน จะถูกแปลงเป็นเวกเตอร์ที่อยู่ใกล้กันในพื้นที่เวกเตอร์นี้ ทำให้ระบบสามารถค้นหาข้อมูลตาม ความหมาย หรือ ความคล้ายคลึงทางความหมาย (semantic similarity) ได้อย่างยอดเยี่ยม แต่สำหรับข้อมูลที่เป็น รหัสเฉพาะ อย่าง “E-4471” หรือ “SKU-9876” มันไม่มี “ความหมาย” ในตัวเองเหมือนประโยคทั่วไป

เวกเตอร์ของ “E-4471” จึงไม่ได้มีความคล้ายคลึงทางความหมายกับเวกเตอร์ของ “ข้อผิดพลาดในการยืนยันตัวตน” หรือ “ปัญหาการเข้าสู่ระบบ” เลย ระบบจึงไม่สามารถเชื่อมโยงรหัสเหล่านั้นกับคำอธิบายที่เกี่ยวข้องได้ง่ายๆ เพราะมันกำลังพยายามหา “ความหมาย” ของสิ่งที่ไม่ใช่ความหมาย

ทางออก: ผสานพลังการค้นหา

การแก้ไขปัญหานี้ ไม่ได้หมายความว่าต้องทิ้งระบบ RAG แต่เป็นการปรับปรุงวิธีการค้นหาให้ฉลาดขึ้น ด้วยการผสานจุดแข็งของการค้นหาแต่ละประเภทเข้าด้วยกัน

มีกลยุทธ์สำคัญหลายอย่างที่ช่วยให้ RAG ค้นหาข้อมูลจำเพาะเหล่านี้ได้แม่นยำขึ้น

อันดับแรกคือการใช้ Hybrid Search ซึ่งเป็นการรวมพลังระหว่าง Vector Search (การค้นหาตามความหมาย) และ Keyword Search (การค้นหาคำที่ตรงกันเป๊ะๆ)

Keyword Search หรือที่เรียกว่า Lexical Search นั้นเหมาะมากสำหรับการค้นหาข้อมูลจำเพาะ เช่น รหัสสินค้า รหัสผิดพลาด หรือชื่อเฉพาะที่ต้องการความแม่นยำของตัวอักษร

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

อีกวิธีคือการใช้ Metadata Filtering ถ้าข้อมูลของรหัสผิดพลาดหรือรหัสสินค้าถูกจัดเก็บเป็น Metadata หรือข้อมูลประกอบ เช่น มีฟิลด์ “errorcode” หรือ “productid” ระบบฐานข้อมูลเวกเตอร์หลายตัวสามารถกรองข้อมูลตาม Metadata ได้อย่างรวดเร็ว ก่อนที่จะนำผลลัพธ์ไปประมวลผลต่อด้วย Vector Search หรือ RAG

สุดท้าย การพิจารณาออกแบบรหัสหรือตัวระบุบางอย่างให้มี ความหมายแฝง ในตัวเอง หากทำได้ ก็จะช่วยได้เช่นกัน ตัวอย่างเช่น การใช้ “AUTH-FAIL-E4471” แทน “E-4471” เพื่อให้ AI พอจะจับความหมาย “การยืนยันตัวตนล้มเหลว” ได้บ้าง แม้ว่าในทางปฏิบัติการเปลี่ยนแปลงโครงสร้างรหัสที่มีอยู่เดิมมักทำได้ยาก

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