AI Agents · บทเรียน

การเสื่อมของหน่วยความจำและการเก็บขยะ

ลืมหน่วยความจำเก่าที่ไม่เกี่ยวข้องมากตามกำหนดเวลา เพื่อให้ดัชนีมุ่งเน้นเฉพาะสิ่งสำคัญ

บทเรียน 4 จาก 415 ขั้นตอน

การเสื่อมของหน่วยความจำและการเก็บขยะ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

หน่วยความจำเติบโตไม่สิ้นสุด

หากไม่มีการดูแลอย่างต่อเนื่อง พื้นที่จัดเก็บหน่วยความจำจะเติบโตขึ้นเรื่อย ๆ หน่วยความจำเก่าที่ไม่เกี่ยวข้องจะรบกวนการเรียกคืนข้อมูลและสิ้นเปลืองพื้นที่จัดเก็บ

หน่วยความจำต้องมีการเก็บกวาดขยะเช่นเดียวกับทรัพยากรอื่น ๆ

เหตุใดจึงต้องลบหน่วยความจำ

  • ความเป็นส่วนตัว — ปฏิบัติตามคำขอให้ลบตาม GDPR/CCPA
  • ความเกี่ยวข้อง — ข้อเท็จจริงเก่ามีแนวโน้มที่จะไม่ถูกต้องในปัจจุบัน
  • ต้นทุน — พื้นที่จัดเก็บเวกเตอร์สะสมเป็นต้นทุนสูงเมื่อขยายระบบ
  • คุณภาพ — ดัชนีที่ใหญ่เกินไปทำให้ความเกี่ยวข้องของผลการค้นหาลดลง

กลยุทธ์ที่ 1: TTL

กำหนดเวลาประทับการหมดอายุให้กับหน่วยความจำแต่ละรายการ:

ALTER TABLE semantic_facts ADD COLUMN expires_at TIMESTAMPTZ;

-- short-lived
INSERT INTO semantic_facts (..., expires_at) VALUES (..., NOW() + INTERVAL '7 days');

-- garbage collect
DELETE FROM semantic_facts WHERE expires_at < NOW();

กลยุทธ์ที่ 2: การเสื่อมค่าตามเวลา

ลดความเชื่อมั่นลงตามอายุ หน่วยความจำที่เก่ากว่าจะได้รับความสำคัญน้อยลง:

import math

def decayed_confidence(original, age_days, half_life_days=30):
    return original * math.exp(-age_days * math.log(2) / half_life_days)

# Then retrieval filters: WHERE decayed_confidence > 0.3
for age in [0, 30, 60, 90]:
    print(f"Age {age} days -> confidence {decayed_confidence(1.0, age):.3f}")

กลยุทธ์ที่ 3: การเสื่อมค่าตามการใช้งาน

หน่วยความจำที่ไม่เคยถูกเรียกคืนย่อมไม่มีประโยชน์ ควรลบออกหลังพ้นช่วงผ่อนผัน:

ALTER TABLE semantic_facts ADD COLUMN last_used_at TIMESTAMPTZ DEFAULT NOW();

-- update on retrieval
UPDATE semantic_facts SET last_used_at = NOW() WHERE id = ANY(:retrieved_ids);

-- gc
DELETE FROM semantic_facts WHERE last_used_at < NOW() - INTERVAL '90 days';

กลยุทธ์ที่ 4: จำกัดความจุต่อผู้ใช้

จำกัดจำนวนหน่วยความจำต่อผู้ใช้ เมื่อเต็มแล้ว ให้นำรายการที่ใช้น้อยที่สุดออก:

MAX_FACTS = 500

SELECT COUNT(*) FROM semantic_facts WHERE user_id = %s;
-- if > MAX_FACTS: delete oldest unused

การบีบอัด: รวมหน่วยความจำที่คล้ายกัน

หน่วยความจำหลายรายการอาจสื่อความหมายเดียวกันด้วยถ้อยคำต่างกัน ให้จัดกลุ่มและรวมเป็นระยะ:

def compact(user_id):
    facts = all_facts(user_id)
    clusters = cluster_by_embedding(facts, threshold=0.85)
    for cluster in clusters:
        merged = llm.invoke(f'Merge these into one canonical statement: {cluster}')
        replace_with_merged(cluster, merged)

การแก้ไขข้อขัดแย้ง

หากหน่วยความจำสองรายการขัดแย้งกัน ให้ทำเครื่องหมายรายการที่เก่ากว่าว่าล้าสมัย:

def resolve(user_id, new_fact):
    similar = retrieve(user_id, new_fact, k=5)
    for s in similar:
        if llm_says_contradicts(s, new_fact):
            mark_obsolete(s.id)
    save(new_fact)

กลยุทธ์ที่ 5: การให้น้ำหนักตามความสำคัญ

หน่วยความจำบางรายการมีความสำคัญมากกว่ารายการอื่น ให้ให้คะแนนแต่ละรายการ:

importance_prompt = 'Rate the importance of this fact for future interactions (0-1):\n{fact}'

for fact in facts:
    score = float(llm.invoke(importance_prompt.format(fact=fact)).content)
    update_importance(fact.id, score)

# Retrieval: weight by importance and recency

การสรุปแบบ Letta

Letta (MemGPT) บีบอัดหน่วยความจำเก่าที่เก็บถาวรด้วยการสรุปกลุ่มข้อเท็จจริงที่เกี่ยวข้องกันเมื่อพื้นที่จัดเก็บเต็ม:

if archival_size > LIMIT:
    block = oldest_facts(50)
    summary = summarise(block)
    replace(block, summary)

การลบที่ผู้ใช้เรียกใช้

ให้ปุ่ม "ลืมฉัน" แก่ผู้ใช้ เมื่อคลิก:

def forget_user(user_id):
    conn.execute('DELETE FROM semantic_facts WHERE user_id = %s', (user_id,))
    conn.execute('DELETE FROM episodes WHERE user_id = %s', (user_id,))
    vector_db.delete(filter={'user_id': user_id})

การลบแบบนุ่มนวลเทียบกับการลบถาวร

เพื่อรองรับการตรวจสอบ ควรใช้การลบแบบนุ่มนวลก่อน (ทำเครื่องหมายว่าถูกลบแล้วแต่ยังคงเข้ารหัสไว้) จนพ้นระยะเวลาเก็บรักษา แล้วจึงลบถาวร:

ALTER TABLE semantic_facts ADD COLUMN deleted_at TIMESTAMPTZ;
-- queries always: WHERE deleted_at IS NULL

งานเก็บกวาดตามกำหนดเวลา

เรียกใช้การเก็บกวาดตามกำหนดเวลา (cron หรือผู้ปฏิบัติงานรายวัน) อย่าดำเนินการเก็บกวาดขนาดใหญ่ในขั้นตอนเดียวกับคำขอ เพราะจะเพิ่มเวลาแฝงให้ผู้ใช้:

# Daily cron at 03:00 UTC
for user_id in all_users():
    decay_confidence(user_id)
    delete_expired(user_id)
    compact_clusters(user_id)

เหตุใดจึงต้องทำให้เสื่อมค่า

เหตุใดจึงควรลดความเชื่อมั่นของหน่วยความจำเมื่อเวลาผ่านไป

สรุปทบทวน

TTL การเสื่อมค่า การนำออกตามการใช้งาน การจำกัดความจุ การบีบอัด การแก้ไขข้อขัดแย้ง และการลบที่ผู้ใช้เรียกใช้ หน่วยความจำต้องมีผู้ดูแลการเก็บกวาด ควรสร้างระบบนี้ไว้

เริ่มต้นได้ฟรี

เรียนรู้ AI Agents ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
60
บทเรียน
239

คำถามที่พบบ่อย

บทเรียน “การเสื่อมของหน่วยความจำและการเก็บขยะ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเสื่อมของหน่วยความจำและการเก็บขยะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเสื่อมของหน่วยความจำและการเก็บขยะ”

ลืมหน่วยความจำเก่าที่ไม่เกี่ยวข้องมากตามกำหนดเวลา เพื่อให้ดัชนีมุ่งเน้นเฉพาะสิ่งสำคัญ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเสื่อมของหน่วยความจำและการเก็บขยะ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)
  2. หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)
  3. หน่วยความจำเชิงกระบวนการ (คลังทักษะ)
  4. การเสื่อมของหน่วยความจำและการเก็บขยะ
← กลับไปที่ AI Agents