Wygasanie pamięci i garbage collection
Zgodnie z harmonogramem usuwaj stare wspomnienia o małym znaczeniu, aby indeks zachował koncentrację na istotnych informacjach.
Wygasanie pamięci i garbage collection to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Pamięć rośnie bez ograniczeń
Bez aktywnego utrzymania magazyn pamięci stale rośnie. Stare, nieistotne wspomnienia zakłócają pobieranie i marnują miejsce.
Pamięć wymaga odśmiecania, tak jak każdy inny zasób.
Dlaczego usuwać wspomnienia?
- Prywatność — zgodność z żądaniami usunięcia danych wynikającymi z GDPR/CCPA
- Trafność — stare fakty mogą być już nieaktualne
- Koszt — magazynowanie wektorów sumuje się przy dużej skali
- Jakość — rozbudowane indeksy osłabiają trafność wyszukiwania
Strategia 1: TTL
Należy ustawić znacznik czasu wygaśnięcia dla każdego wspomnienia:
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();Strategia 2: wygaszanie oparte na czasie
Należy zmniejszać poziom zaufania wraz z upływem czasu — starszym wspomnieniom nadawać niższy priorytet:
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}")
Strategia 3: wygaszanie oparte na użyciu
Wspomnienia, które nigdy nie są pobierane, nie są przydatne — należy je usunąć po okresie karencji:
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';Strategia 4: limit pojemności na użytkownika
Należy ograniczyć liczbę wspomnień na użytkownika; po zapełnieniu usuwać to używane najrzadziej:
MAX_FACTS = 500
SELECT COUNT(*) FROM semantic_facts WHERE user_id = %s;
-- if > MAX_FACTS: delete oldest unusedKompaktowanie: łączenie podobnych wspomnień
Wiele wspomnień może przekazywać tę samą informację w różny sposób. Należy okresowo grupować je i łączyć:
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)Rozwiązywanie sprzeczności
Jeśli dwa wspomnienia są sprzeczne, starsze należy oznaczyć jako nieaktualne:
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)Strategia 5: ważenie według ważności
Niektóre wspomnienia są ważniejsze od innych. Należy przypisać każdemu ocenę:
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 recencyPodsumowywanie w stylu Letta
Letta (MemGPT) kompresuje starą pamięć archiwalną, podsumowując bloki powiązanych faktów, gdy kończy się miejsce:
if archival_size > LIMIT:
block = oldest_facts(50)
summary = summarise(block)
replace(block, summary)Usuwanie na żądanie użytkownika
Należy udostępnić użytkownikom przycisk „zapomnij o mnie”. Po jego kliknięciu:
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})Usuwanie miękkie a usuwanie trwałe
W przypadku audytów należy preferować usuwanie miękkie (oznaczyć jako usunięte, zachować w formie zaszyfrowanej) do upływu okresu przechowywania, a następnie usunąć trwale:
ALTER TABLE semantic_facts ADD COLUMN deleted_at TIMESTAMPTZ;
-- queries always: WHERE deleted_at IS NULLZaplanowane zadania GC
Należy uruchamiać GC zgodnie z harmonogramem (cron, codzienny worker). Nie należy wykonywać ciężkiego GC w ramach obsługi żądania — zwiększa to opóźnienie dla użytkowników:
# Daily cron at 03:00 UTC
for user_id in all_users():
decay_confidence(user_id)
delete_expired(user_id)
compact_clusters(user_id)Dlaczego stosować wygaszanie?
Dlaczego poziom zaufania do wspomnień powinien zmniejszać się z czasem?
Podsumowanie
TTL, wygaszanie, eksmisja oparta na użyciu, limity pojemności, kompaktowanie, rozwiązywanie sprzeczności, usuwanie na żądanie użytkownika. Pamięć potrzebuje mechanizmu sprzątającego — należy go zbudować.
Często zadawane pytania
Czy lekcja „Wygasanie pamięci i garbage collection” jest bezpłatna?
Tak — pełny tekst „Wygasanie pamięci i garbage collection” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Wygasanie pamięci i garbage collection”?
Zgodnie z harmonogramem usuwaj stare wspomnienia o małym znaczeniu, aby indeks zachował koncentrację na istotnych informacjach. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Wygasanie pamięci i garbage collection”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Pamięć epizodyczna (historia sesji)
- Pamięć semantyczna (zwektoryzowane fakty)
- Pamięć proceduralna (biblioteka umiejętności)
- Wygasanie pamięci i garbage collection