Istotność to nie wartość przenoszenia
Większość ludzi źle buduje pamięć agentów.
Skupiają się na przechowywaniu. Używają baz wektorowych lub sprytnych podsumowywaczy. Myślą, że jeśli zapiszą wszystko, agent będzie wiedział wszystko.
Mylą się.
Gdy masz setki sesji, nie jesteś w stanie przeczytać ich wszystkich. Jeśli Twój agent zaczyna nową sesję „na zimno”, marnuje czas. Jeśli zaczyna z nadmiarem szumu, popełnia błędy.
Problemem jest selekcja. Większość ludzi myli istotność (salience) z wartością przenoszenia (carry value).
- Istotność (salience) mówi Ci, co było głośne w ostatniej sesji.
- Wartość przenoszenia (carry value) mówi Ci, czego kolejna sesja potrzebuje do działania.
Głośna kłótnia o nazwę zmiennej ma wysoką istotność. Ale jeśli ta nazwa nie wpływa na przyszły kod, ma zerową wartość przenoszenia. Jeśli przeniesiesz ją dalej, tylko dodasz szumu.
Prowadzę potok pamięci (memory pipeline) oparty na tych zasadach:
Najpierw mechaniczna istotność. Użyj deterministycznego punktującego (scorer), aby znaleźć ważne momenty. Nadaj większą wagę poprawkom niż zwykłym komentarzom. Każde wyróżnienie musi odnosić się do surowej transkrypcji. Nie pozwól modelowi wymyślać faktów bez źródła.
Potem synteza. Użyj LLM tylko do dodania warstwy znaczenia do wyróżnionych fragmentów. Jeśli Twoje wyróżnienia są słabe, podsumowanie będzie po prostu pewnym siebie bełkotem.
Używaj briefu podczas pobierania danych (retrieval-time brief). Dla każdego projektu stwórz plik, np. INDEX.md. Agent czyta ten plik na początku sesji. Żaden model nie powinien wymyślać tego briefu w locie. Musi to być zwykły plik, który możesz otworzyć i edytować ręcznie.
Aby zbudować lepszą pamięć, potrzebujesz czegoś więcej niż tylko listy ważnych rzeczy. Potrzebujesz:
- Dwóch wyników: jednego określającego, jak głośne to było (salience), i drugiego określającego, jak bardzo będzie to ważne później (carry value).
- Klas pamięci: oddzielne kategorie dla aktywnych decyzji, ograniczeń operacyjnych i otwartych pętli (open loops).
- Dat wygaśnięcia: Każdy element pamięci musi mieć powód, by przestać istnieć. Bez daty wygaśnięcia kontekst zapycha Twój system.
- Wyzwalaczy (triggers): Zdefiniuj dokładnie, kiedy dany element pamięci powinien się pojawić.
Celem jest minimalizacja kosztu odzyskiwania (recovery cost).
Koszt odzyskiwania to liczba tokenów lub minut, których agent potrzebuje, aby nadrobić zaległości i wrócić do miejsca, w którym przerwał. Jeśli Twój potok pamięci to tylko teatr, koszt odzyskiwania pozostanie wysoki.
Przestań budować większe magazyny. Zacznij budować lepszą selekcję.
Źródło: https://dev.to/jugeni/salience-is-not-carry-value-notes-from-a-running-session-memory-pipeline-4dda
Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi
