ความโดดเด่นไม่ใช่ค่าที่ต้องนำไปใช้ต่อ

คนส่วนใหญ่สร้างหน่วยความจำของ Agent ผิดวิธี

พวกเขามุ่งเน้นไปที่การจัดเก็บ พวกเขาใช้ vector stores หรือตัวสรุปความที่ชาญฉลาด พวกเขาคิดว่าถ้าบันทึกทุกอย่างไว้ Agent ก็จะรู้ทุกอย่าง

พวกเขาคิดผิด

เมื่อคุณมีเซสชันเป็นร้อยๆ เซสชัน คุณไม่สามารถอ่านทั้งหมดได้ หาก Agent เริ่มเซสชันใหม่แบบ cold start มันจะเสียเวลา และหากมันเริ่มด้วย noise ที่มากเกินไป มันก็จะทำงานผิดพลาด

ปัญหาคือการคัดเลือก คนส่วนใหญ่สับสนระหว่าง salience กับ carry value

  • Salience บอกคุณว่าอะไรคือสิ่งที่โดดเด่นในเซสชันที่แล้ว
  • Carry value บอกคุณว่าเซสชันถัดไปจำเป็นต้องใช้อะไรเพื่อให้ทำงานได้

การถกเถียงกันอย่างดุเดือดเรื่องชื่อตัวแปรมีความโดดเด่น (salience) สูง แต่ถ้าชื่อนั้นไม่มีผลต่อโค้ดในอนาคต มันก็มี carry value เป็นศูนย์ หากคุณนำมันติดตัวไปด้วย คุณก็แค่เพิ่ม noise เข้าไปเท่านั้น

ผมใช้ memory pipeline ที่อิงตามกฎเหล่านี้:

  1. เริ่มด้วย Mechanical salience ก่อน ใช้ deterministic scorer เพื่อค้นหาช่วงเวลาที่สำคัญ ให้ค่าน้ำหนักกับการแก้ไข (corrections) สูงกว่าการคอมเมนต์ทั่วไป ทุกจุดที่ไฮไลต์ต้องเชื่อมโยงกลับไปยัง transcript ต้นฉบับ อย่าปล่อยให้โมเดลสร้างข้อเท็จจริงขึ้นมาเองโดยไม่มีแหล่งที่มา

  2. ตามด้วย Synthesis ใช้ LLM เพียงเพื่อเพิ่มชั้นของความหมายให้กับส่วนที่ไฮไลต์ไว้เท่านั้น หากส่วนที่ไฮไลต์ของคุณแย่ บทสรุปก็จะเป็นแค่เรื่องไร้สาระที่ดูเหมือนจะน่าเชื่อถือ (confident nonsense)

  3. ใช้ retrieval-time brief สร้างไฟล์อย่าง INDEX.md สำหรับทุกโปรเจกต์ Agent จะอ่านไฟล์นี้เมื่อเริ่มเซสชัน ไม่ควรให้โมเดลสร้างสรุปนี้ขึ้นมาเองแบบ on the fly มันต้องเป็นไฟล์ธรรมดาที่คุณสามารถเปิดและแก้ไขด้วยมือได้

การจะสร้างหน่วยความจำที่ดีขึ้น คุณต้องการมากกว่าแค่รายการของสิ่งสำคัญ คุณต้องการ:

  • คะแนนสองส่วน: ส่วนหนึ่งสำหรับความโดดเด่น (salience) และอีกส่วนสำหรับความสำคัญในภายหลัง (carry value)
  • Memory classes: แยก active decisions, operating constraints และ open loops ออกจากกัน
  • วันหมดอายุ: หน่วยความจำทุกชิ้นต้องมีเหตุผลที่จะถูกลบออกไป หากไม่มีวันหมดอายุ context จะทำให้ระบบของคุณอุดตัน
  • Triggers: กำหนดให้ชัดเจนว่าหน่วยความจำชิ้นไหนควรปรากฏขึ้นเมื่อใด

เป้าหมายคือการลด recovery cost ให้เหลือน้อยที่สุด

Recovery cost คือจำนวน token หรือนาทีที่ Agent ต้องใช้เพื่อตามให้ทันจุดที่มันหยุดค้างไว้ หาก memory pipeline ของคุณเป็นแค่การแสดงละคร (just theater) ค่า recovery cost ของคุณก็จะยังคงสูงอยู่

เลิกสร้างที่เก็บข้อมูลให้ใหญ่ขึ้น แต่เริ่มสร้างการคัดเลือกที่ดีขึ้น

Source: https://dev.to/jugeni/salience-is-not-carry-value-notes-from-a-running-session-memory-pipeline-4dda

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