หน่วยความจำของ Agent: 7 ประเภท และ 2 ประเภทไม่ใช่ความจำจริงๆ

Agent ของคุณไม่ได้มีปัญหาเรื่องหน่วยความจำ แต่มันมีหน่วยความจำที่แตกต่างกันถึง 7 ประเภท ซึ่งทีมส่วนใหญ่มักจะสร้างขึ้นเพียงแค่ 2 ประเภทเท่านั้น

สิ่งแรกที่คุณต้องเข้าใจคือ: โมเดลไม่ได้จดจำอะไรเลย LLM คือ pure function มันรับ input และให้ output โดยไม่มีการเก็บสถานะ (state) ระหว่างการเรียกใช้งาน สิ่งที่ดูเหมือนความจำนั้นเป็นเพียงเลเยอร์ที่ส่งประวัติการสนทนากลับไปพร้อมกับทุกคำขอ ซึ่งคุณต้องจ่ายค่า token เหล่านั้นในทุกๆ ครั้ง

ความพยายามทางวิศวกรรมส่วนใหญ่มักจะตกอยู่กับรูปแบบเพียงสองอย่าง คือ ประวัติการสนทนา (conversation history) และ RAG ซึ่งเป็นเพียงสองในเจ็ดประเภทเท่านั้น ปัญหาคืออะไรน่ะหรือ? คือสิ่งเหล่านี้ไม่ได้ทำให้ Agent ของคุณฉลาดขึ้นเมื่อเวลาผ่านไป

นี่คือหน่วยความจำทั้ง 7 ประเภท:

• Working: ทุกอย่างที่อยู่ใน context window ปัจจุบัน • Semantic: ข้อเท็จจริง, ความชอบ และความรู้เฉพาะทาง (domain knowledge) • Episodic: บันทึกเหตุการณ์ในอดีต รวมถึงสิ่งที่ทำแล้วได้ผลหรือล้มเหลว • Procedural: ทักษะ, เวิร์กโฟลว์ และรูปแบบการใช้เครื่องมือ • Retrieval: การดึงความรู้ผ่านการค้นหาความคล้ายคลึง (similarity search) • Parametric: ความรู้ที่ถูกฝังอยู่ในน้ำหนักของโมเดล (model weights) • Prospective: ความตั้งใจในอนาคตและงานที่กำหนดตารางเวลาไว้

สองในนี้ไม่ใช่ความจำที่แท้จริง RAG เป็นเพียงกลไกการส่งข้อมูล มันคือระบบท่อ ไม่ใช่น้ำ มันทำหน้าที่เคลื่อนย้ายข้อมูลจากที่จัดเก็บไปยังหน่วยความจำขณะทำงาน (working memory) หากคุณใช้เพียงแค่ vector database คุณก็แค่สร้างท่อขึ้นมาแต่ลืมเตรียมน้ำไว้

การจะสร้าง Agent ที่เรียนรู้ได้จริง คุณต้องมี consolidation loop ซึ่งหมายถึงการเปลี่ยน episodic memory ให้กลายเป็น semantic memory

กระบวนการทำงานเป็นดังนี้:

  1. Agent ประสบกับเหตุการณ์หนึ่ง (Episodic)
  2. Agent เห็นรูปแบบเดิมซ้ำๆ หลายครั้ง
  3. Agent สรุปรูปแบบนั้นให้กลายเป็นกฎที่ถาวร (Semantic)

ทีนี้ Agent ก็ไม่จำเป็นต้องใช้เหตุผลผ่านตัวอย่างถึง 12 ตัวอย่างอีกต่อไป แต่มันสามารถใช้ข้อเท็จจริงเพียงข้อเดียวได้เลย

วิธีจัดลำดับความสำคัญในการสร้าง:

  • จัดการ working memory เสมือนเป็นงบประมาณ เพราะมันคือส่วนที่มีค่าใช้จ่ายสูงที่สุด ควรใช้การสรุปความ (summarization) และการลบข้อมูล (eviction) ตั้งแต่เนิ่นๆ
  • แยกที่จัดเก็บข้อมูล (stores) ออกจากกัน เก็บข้อเท็จจริง, เหตุการณ์ และกฎเกณฑ์ไว้ในที่ที่ต่างกัน
  • ใช้ scheduler สำหรับ prospective memory อย่าใช้ vector store สำหรับสิ่งที่ต้องเกิดขึ้นในวันที่กำหนดไว้เฉพาะเจาะจง
  • ขีดเส้นแบ่งให้ชัดเจนสำหรับ parametric memory ให้ใช้โมเดลสำหรับการใช้เหตุผล แต่ใช้ที่จัดเก็บข้อมูลของคุณเองสำหรับข้อมูลที่มีการเปลี่ยนแปลงบ่อย (volatile data) เช่น อัตราดอกเบี้ย หรือกฎเกณฑ์ของผลิตภัณฑ์

Agent ส่วนใหญ่ในปัจจุบันเป็นเพียงแค่ context window และ vector DB เท่านั้น แต่ Agent ที่จะชนะคือ Agent ที่สามารถเปลี่ยนความผิดพลาดของเมื่อวานให้กลายเป็นกฎเกณฑ์ของวันพรุ่งนี้ได้

Source: https://dev.to/shudiptotrafder/agent-memory-7-types-and-2-of-them-arent-memory-6oi

Optional learning community: https://t.me/GyaanSetuAi