• ปัญหาที่พบบ่อยเมื่อใช้ คอนเท็กซ์ที่ยาว ได้แก่ประเด็นด้านการจัดการข้อมูลหลายแบบ เช่น การปนเปื้อนของคอนเท็กซ์ ความสับสน ความขัดแย้ง และความฟุ้งซ่าน
  • การจัดการข้อมูล คือหัวใจสำคัญ และข้อมูลที่ไม่ถูกต้องส่งผลเสียโดยตรงต่อคุณภาพของผลลัพธ์
  • แนวทางแก้หลักที่ได้ผล ได้แก่ RAG, Tool Loadout, Context Quarantine, Pruning, Summarization, Offloading
  • แม้ context window ของ LLM รุ่นใหม่จะมีขนาดใหญ่ การใส่ข้อมูลที่ไม่จำเป็นมากเกินไปก็ยังสร้างปัญหาได้จริง
  • แต่ละแนวทางช่วยให้นักออกแบบเอเจนต์จัดการคอนเท็กซ์อย่างเป็นระบบ และเพิ่มทั้งประสิทธิภาพกับความแม่นยำได้มาก

ปัญหาที่เกิดขึ้นในคอนเท็กซ์ยาวและภาพรวมโดยย่อ

เมื่อใช้คอนเท็กซ์ที่ยาว ความล้มเหลวที่มักเกิดขึ้นในระบบมีดังนี้

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

ปัญหาเหล่านี้ล้วนมีสาเหตุมาจาก การจัดการข้อมูล และเหมือนกับคำกล่าวในวงการโปรแกรมมิงว่า “Garbage in, garbage out” คือข้อมูลขาเข้ามีผลอย่างมากต่อผลลัพธ์
โชคดีที่มีหลายแนวทางที่ช่วยบรรเทาหรือป้องกันปัญหาเหล่านี้ได้อย่างมีประสิทธิภาพ

แนวทางหลักในการจัดการคอนเท็กซ์


RAG (Retrieval-Augmented Generation)

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

Tool Loadout (การเลือกชุดเครื่องมือ)

  • วิธีเลือกใส่เฉพาะเครื่องมือที่จำเป็นลงในคอนเท็กซ์
  • คำอธิบายของเครื่องมือถูกจัดการด้วย vector DB แล้วใช้ RAG ตามแต่ละพรอมป์ต์เพื่อเลือกเครื่องมือที่เหมาะสมที่สุด
  • เมื่อมีเครื่องมือมากกว่า 30 รายการขึ้นไป จะเริ่มเกิดความสับสนจากคำอธิบายที่ทับซ้อนกัน และถ้าเกิน 100 รายการ ประสิทธิภาพของโมเดลจะลดลงอย่างรวดเร็ว
  • ในงานวิจัย “Less is More” พบว่า Llama 3.1 8b ล้มเหลวเมื่อให้เครื่องมือ 46 รายการ แต่ทำสำเร็จเมื่อให้เพียง 19 รายการ
  • มีการใช้ตัวแนะนำที่อิง LLM เพื่อ เลือกเครื่องมือที่จำเป็นแบบไดนามิก ส่งผลให้ทั้งประสิทธิภาพ ความเร็ว และประสิทธิภาพด้านพลังงานดีขึ้น

Context Quarantine (การกักกันคอนเท็กซ์)

  • วิธีแยกคอนเท็กซ์ไปจัดการในเธรดที่แยกจากกัน
  • ออกแบบให้ปัญหาถูกแบ่งเป็นหลายส่วน เช่น งานวิจัยหรือการสำรวจ และให้เอเจนต์แต่ละตัวรับผิดชอบแยกกัน
  • ในระบบ multi-agent ของ Anthropic มีการใช้ context window ที่เป็นอิสระต่อกันสำหรับแต่ละซับเอเจนต์ เพื่อเพิ่มทั้งประสิทธิภาพและความแม่นยำ
  • โครงสร้างนี้โดดเด่นเป็นพิเศษกับ งานที่ต้องสำรวจหลายทิศทางพร้อมกัน

Context Pruning (การตัดแต่งคอนเท็กซ์)

  • วิธีคัดกรองข้อมูลที่ไม่จำเป็นหรือข้อมูลเก่าออกอย่างต่อเนื่อง
  • ในสาย NLP มีการใช้เทคนิค pruning หลากหลายรูปแบบมาเป็นเวลานานแล้ว
  • ระยะหลังเริ่มมีโมเดลเฉพาะทางสำหรับ “จัดระเบียบ” คอนเท็กซ์ที่เบาและเร็วอย่าง Provence ปรากฏขึ้น (1.75GB, บีบอัดเอกสารได้ 95%)
  • หากจัดการคอนเท็กซ์ในรูปแบบที่มีโครงสร้าง เช่น dictionary ก็จะทำให้การตัดแต่งและการสรุป (การบีบอัด) ทำได้ง่ายขึ้น

Context Summarization (การสรุปคอนเท็กซ์)

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

Context Offloading (การออฟโหลดคอนเท็กซ์)

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

บทสรุปและข้อควรระวังในการออกแบบเอเจนต์

  • การจัดการคอนเท็กซ์คือส่วนที่ยากที่สุดอย่างหนึ่งในการออกแบบเอเจนต์
  • เวลาโปรแกรม LLM วิธีผสมและจัดการข้อมูล เครื่องมือ และบริบทต่าง ๆ เป็นตัวชี้ขาดความสำเร็จหรือความล้มเหลว
  • ไม่ว่า context window จะใหญ่แค่ไหน ก็ไม่ได้หมายความว่าทุกข้อมูลจะมีประโยชน์
  • ควรตรวจสอบว่าแต่ละองค์ประกอบสร้างคุณค่าจริงหรือไม่ และต้องจัดการคอนเท็กซ์เชิงรุกด้วย 6 วิธีที่กล่าวมา (RAG, Tool Loadout, Context Quarantine, Pruning, Summarization, Offloading)

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น