Strukturyzowanie pamięci według typu redukuje liczbę pobieranych tokenów o około 40%.
Dlaczego płaska struktura pamięci zawodzi
Większość początkujących samouczków uczy agentów LLM „pamiętania” poprzez dopisywanie każdej nowej informacji do pojedynczej listy i przekazywanie tej listy z powrotem do modelu w każdej turze. Kod ma dosłownie trzy linijki i tworzy działające demo. W praktyce lista rośnie w sposób niekontrolowany. Pojawiają się dwa objawy:
- Agent traktuje nieaktualne dane jako wciąż prawdziwe, na przykład podając ETA, które wygasło kilka godzin temu.
- Okno kontekstowe wypełnia się błahostkami, które nigdy nie wpływają na odpowiedź, co zwiększa koszty API i spowalnia czas odpowiedzi.
Zwykły magazyn wektorowy lub prosty bufor klucz-wartość nie potrafi odróżnić stanowiska użytkownika od tymczasowego statusu projektu. Gdy agent wykonuje wyszukiwanie semantyczne, algorytm podobieństwa może wyciągnąć stare ETA tylko dlatego, że zapytanie zawiera te same słowa, mimo że dana informacja nie jest już istotna.
Strukturyzowana pamięć: cztery kategorie, jeden cel
Rozwiązaniem jest zaprzestanie traktowania pamięci jako monolitu i rozpoczęcie klasyfikowania każdego wpisu do jednej z czterech kategorii:
- Fakty dotyczące użytkownika – stabilne atrybuty, takie jak rola użytkownika, preferowany język czy poziom uprawnień bezpieczeństwa. Rzadko ulegają zmianie i mogą być buforowane przez całą sesję.
- Informacje zwrotne (Feedback) – wyraźne reguły, których agent musi przestrzegać, np. „nigdy nie ujawniaj haseł do bazy danych” lub „unikaj humoru w zapytaniach dotyczących zgodności”. Ponieważ regulują one zachowanie, powinny znajdować się w prompcie systemowym, a nie w puli przeszukiwalnych danych.
- Stan projektu – szybko zmieniające się dane, takie jak aktualne ETA, postęp zadań czy tymczasowe tokeny. Ta kategoria wymaga sprawdzania wygaśnięcia; gdy znacznik czasu wyjdzie poza zdefiniowane okno, wpis powinien zostać usunięty.
- Referencje – wskaźniki do zewnętrznych usług, identyfikatory dokumentów lub punkty końcowe API. Nie są to treści do wyświetlenia, lecz ścieżki do pobierania świeżych danych w razie potrzeby.
Mem0 pozwala programistom dołączać dowolne metadane do każdego rekordu pamięci. Dzięki indeksowaniu według pola kind, zapytanie może najpierw przefiltrować odpowiednią kategorię, zanim LLM zdecyduje, jak wykorzystać wynik.
Dwuetapowe pobieranie danych z Mem0
- Pobieranie pamięci według typu – krótkie zapytanie filtrujące prosi Mem0 o „wszystkie informacje zwrotne” lub „wpisy dotyczące stanu projektu nowsze niż krótki interwał”. Zbiór wyników jest już ograniczony do odpowiedniej kategorii.
- Pozwolenie LLM na decyzję – przefiltrowane fragmenty są wstawiane do promptu wraz z bieżącym pytaniem użytkownika. Model może teraz wyciągać z nich wnioski, nie przeszukując nieistotnych faktów.
Konkretny przykład: zamiast czekać, aż dopasowanie semantyczne wyłoni regułę „nie wyśmiewaj bazy danych”, programista wstrzykuje tę regułę bezpośrednio do promptu systemowego na początku sesji i buforuje ją na całą interakcję. Nawet jeśli zapytanie użytkownika nie zawiera wyraźnego odniesienia do baz danych, model zna już to ograniczenie.
Praktyczne triki pozwalające obniżyć koszty
- Buforowanie reguł feedbacku – Przechowuj zestaw reguł raz na sesję i używaj go ponownie, zamiast przeszukiwać go w każdej turze. Zmniejsza to zużycie tokenów w każdej rundzie.
- Pomijanie wyszukiwania stanu projektu, gdy jest nieistotny – Jeśli użytkownik zadaje czysto koncepcyjne pytanie („Jaka jest różnica między uczeniem nadzorowanym a uczeniem ze wzmocnieniem?”), nie ma potrzeby pobierania żadnych danych dotyczących ETA czy postępu zadań.
Stosując te dwie praktyki, zużycie tokenów można zredukować o około 40% w porównaniu z naiwnym podejściem do płaskiej pamięci. Oszczędności przekładają się bezpośrednio na niższe rachunki za API i szybszy czas realizacji, szczególnie w przypadku agentów biorących udział w wielu wymianach zdań.
Kto zyskuje, a kto się martwi
Zwycięzcy – Zespoły budujące boty do obsługi klienta, asystentów przepływu pracy (workflow) lub jakiekolwiek interfejsy LLM wieloturowe. Otrzymują one bardziej wiarygodne odpowiedzi, unikają krępujących błędów spowodowanych nieaktualnymi danymi i mogą efektywniej zarządzać budżetem.
Podsumowanie
Jeśli chcesz, aby agent LLM zachował precyzję podczas długich sesji, przestań upychać każdy fakt do jednego okna kontekstowego. Oznaczaj każdą informację jako fakt użytkownika, feedback, stan projektu lub referencję, wymuszaj wygasanie tam, gdzie to konieczne i pozwól narzędziu takiemu jak Mem0 wykonać najcięższą pracę. Rezultatem są świeższe odpowiedzi, mniej zbędnych tokenów i zauważalna redukcja kosztów operacyjnych.