Jak działa pamięć LLM-ów

2026-05-24

Jeszcze na początku całego hype'a LLMów niektórzy lubili pisać posty “LLMy nie halucynują, po prostu dają najbardziej prawdopodobny token”. To mi przypomina również “nie ma mleka owsianego — to jest napój owsiany”.

IQ score meme

Czy LLMy dają najbardziej prawdopodobny token? Tak. Czy halucynacja to ogólnoprzyjęte nazewnictwo na wynik modelu który nie jest zgodny z rzeczywistością? Tak. To samo dotyczy pamięci. Każdy już jest przyzwyczajony, że to co się dzieje w wątku nazywamy pamięcią krótkoterminową, a jeśli w tym wątku LLM zaciąga informacje z poprzednich wątków — nazywamy to pamięcią długoterminową. Warto jednak wiedzieć jak to działa rzeczywiście.

Pamięć krótkoterminowa

Pamięć krótkoterminowa (co też czasami nazywamy wątkami) to najprostszy sposób realizacji pamięci, w którym pamięć jest przechowywana w kontekście. Cała “pamięć” sprowadza się do doklejania kolejnych informacji i ciągłego zwiększania prompta.

KONWERSACJA
Jak mam na imię?nowa
PAYLOAD
18 tok
{
  "messages": [
    {
      "role": "user",
      "content": "Jak mam na imię?"
    }
  ]
}
user
assistant
jaśniejszy = nowa wiadomość

Na przykładzie dobrze to widać — model “pamięta” ponieważ widzi całą rozmowę w swoim oknie kontekstu. I z tym oknem kontekstu mamy najważniejszy problem: ono jest ograniczone (chociaż czasami może być bardzo duże — nawet milion tokenów).

Ograniczony kontekst

Problem ograniczonego kontekstu spotkał każdego kto próbował implementować agentów (zwłaszcza w erze GPT-4o/o3). Oczywiście najłatwiejszym rozwiązaniem jest ucinanie historii.

OKNO KONTEKSTU
1 / 5 wiadomości
#1userCześć! Jestem Karol, Python dev z Gdańska.nowa

Wszystkie wady tego podejścia sprowadzają się do tego, że LLMy są stateless. Jeśli czegoś nie ma w kontekście — model o tym nie wie. W związku z tym na poważnie (przynajmniej w chatbot-like interfejsach) tego nikt nie używa.

Innym sposobem jest użycie compaction — upraszczając — podsumowania konwersacji przez LLM.

KONWERSACJA
132 tok
#1userCześć! Jestem Karol, Python dev z Gdańska.22t
#2asstCześć Karol! W czym mogę pomóc?18t
#3userMam problem z N+1 queries w FastAPI.24t
#4asstUżyj selectinload w SQLAlchemy.20t
#5userDziała! Teraz chcę dodać Redis caching.26t
#6asstPolecam fastapi-cache2 + Redis.22t

Zarówno Claude Code, Codex, OpenCode i inne agentyczne narzędzia obsługują ograniczony kontekst właśnie w taki sposób.

Pamięć długoterminowa

Pamięć długoterminowa to pamięć która pozwala agentowi mieć informacje m.in. z innych wątków. Z implementacją krótkoterminowej pamięci zwykle nie ma żadnych problemów — sprowadza się to do doklejania informacji i zwiększenia prompta. Z kolei długoterminowa pamięć w praktyce realizowana jest za pomocą wektorowej bazy danych oraz wstrzyknięcia informacji do promptu.

Ale co ważne — pamięć długoterminową bardzo często można podzielić na trzy typy:

  • semantyczna — fakty i preferencje
  • epizodyczna — przeszłe zdarzenia
  • proceduralna — zasady i instrukcje
SEMANTYCZNA

fakty i preferencje

Imię: Karol
Język: Python
Styl: zwięzły odpowiedzi
EPIZODYCZNA

przeszłe zdarzenia

12.05 — naprawiono N+1
14.05 — skonfigurowano Redis
19.05 — deploy na prod
PROCEDURALNA

zasady i instrukcje

Odpowiadaj po polsku
Preferuj Python nad JS
Bądź zwięzły

Każdy z tych typów pamięci wymaga oddzielnego podejścia. Semantyczna i proceduralna są najprostsze — wstrzykujemy informację do promptu bezpośrednio: imię użytkownika, opis pracy (semantyczna), instrukcje opisane tekstem (proceduralna).

Przykład pamięci proceduralnej w Claude
Ustawienia pamięci na stronie claude.ai

Epizodyczna pamięć jest trochę bardziej skomplikowana. Każde wspomnienie jest zamieniane na embedding. Przy nowej sesji zamiast ładować wszystkie wspomnienia, robimy similarity search — szukamy tych które są najbardziej relewantne do aktualnego kontekstu. Sprowadza się to do implementacji RAG.

KONWERSACJA
Cześć! Jestem Karol, Python dev z Gdańska.nowa
SQL DB
preferencje użytkownika
semanticImię: Karol
semanticPraca: Python developer
proceduralOdpowiadaj po polsku
↓ injected directly
VECTOR STORE
epizodyczna · sesja w toku
— brak wspomnień —
PROMPT
system = """
Jesteś pomocnym asystentem programistycznym.
Zasady:
- Odpowiadaj po polsku.
- Dawaj praktyczne przykłady.
- Preferuj konkretne rozwiązania nad teorią.
- Nie wymyślaj faktów; używaj tylko podanego profilu i pamięci.
"""
user = f"""
<user_profile>
Imię: {user_name}
Rola: {user_job}
Miasto: {user_location}
</user_profile>
<retrieved_memories>
{retrieved_memories}
</retrieved_memories>
<current_message>
{user_message}
</current_message>
"""
user
assistant
semantyczna
proceduralna
epizodyczna
retrieved

Tak samo jak compaction jest dość popularny, pamięć długoterminowa jest zrealizowana prawie w każdym chatbot-like interfejsie: ChatGPT, Claude, Perplexity.

Podsumowanie

Podział na pamięć krótkoterminową i długoterminową wydaje się bardzo intuicyjny, ale pozwala bardziej ustrukturyzować podejście do implementacji i używać odpowiedniego rozwiązania w odpowiednim miejscu.

autor

Władek Grywaczewski

AI & Data Consultant · Gdańsk