การเสื่อมของหน่วยความจำและการเก็บขยะ
ลืมหน่วยความจำเก่าที่ไม่เกี่ยวข้องมากตามกำหนดเวลา เพื่อให้ดัชนีมุ่งเน้นเฉพาะสิ่งสำคัญ
การเสื่อมของหน่วยความจำและการเก็บขยะ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)
- หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)
- หน่วยความจำเชิงกระบวนการ (คลังทักษะ)
- การเสื่อมของหน่วยความจำและการเก็บขยะ