Jak sprawiłem, że AI mnie pamięta
Każdy model AI to Pan Miszuk z „Ricka i Morty'ego” — rodzi się do zadania i wyparowuje. Jak zbudowałem bibliotekę, do której zaglądają wszystkie kolejne Miszuki, i dlaczego samo zapisywanie notatek nie wystarczyło.
Kojarzycie Pana Miszuka (ang. Meeseeks) z „Ricka i Morty’ego”? Jeśli nie — śpieszę z wyjaśnieniem. W piątym odcinku pierwszego sezonu, „Meeseeks and Destroy”, pojawia się pudełeczko. Naciskasz wielki czerwony przycisk, wyskakuje niebieski ludek, oznajmia „Jestem Pan Miszuk! Oto ja!” i pomaga bohaterom rozwiązać problem.
„Ale zaraz, miało być o tym, jak AI cię zapamiętało, a nie o streszczaniu jakiejś debilnej kreskówki.”
I jest o AI. Każdy dostępny na rynku model — ChatGPT, Claude, Gemini, nawet Grok — to właśnie taki Pan Miszuk. Otwierasz aplikację, a tam: „Cześć, tu twoje imię, jak mogę pomóc?”.
Wracając do Miszuków: jak sami o sobie mówią, zbyt długa egzystencja jest dla nich bolesna. Rodzą się, żeby wykonać zadanie, po czym wyparowują.
Z AI jest tak samo. Otwierasz rozmowę, piszesz, Miszuk chętnie pomaga — aż dochodzi do momentu, w którym kończy mu się kontekst, czyli jego pamięć krótkotrwała. Musi ją wtedy sprasować, żeby dalej z tobą gadać. I zapomina szczegóły sprzed kilkunastu godzin, bo część musiał wyrzucić. Im więcej razy prasuje, tym bardziej rozmowa robi się bolesna dla obu stron.
A co, jeśli otworzysz nową rozmowę? Pojawia się kolejny Pan Miszuk, który nie ma zielonego pojęcia, o czym rozmawialiście w poprzedniej. Po prostu nie ma — bo niby skąd, skoro to inny Miszuk niż ten, któremu zwierzyłeś się ze swoich problemów gastrycznych.
Kartka, biblioteka i klucz pod wycieraczką
Taki problem zauważyłem podczas pierwszych miesięcy pracy z AI. Każda kolejna rozmowa nie miała pojęcia, co wydarzyło się w poprzednich.
Twórcy próbują to rozwiązać plikiem pamięci. Tyle że przy wielu rozmowach ten plik puchnie, a nasz Miszuk olewa czytanie go w całości. Wyłapuje fragmenty i dalej nie wie, gdzie co jest.
Wpadłem więc na ŚWIETNY pomysł: po każdym zadaniu Miszuk powinien zapisać, co zrobił.
W sumie szczerze — wyczytałem to w internetach. Metoda nazywa się LLM wiki i wymyślił ją Andrej Karpathy, taki łepski gość, który współzakładał OpenAI, potem robił AI w Tesli, a od niedawna siedzi w Anthropic. Jego pomysł w jednym zdaniu: okno kontekstu jest wąskim gardłem, więc pamięć ma leżeć na dysku, a nie w głowie. Model to procesor, kontekst to RAM, a wszystko, co ma przetrwać dłużej niż jedno zadanie, musi być zapisane.
No i super — zbudowałem razem z Miszukiem taką bibliotekę, w której wszystkie Miszuki po wykonanej robocie zapisują, co i jak zrobiły. Lokalnie na komputerze, w Obsidianie.
Różnica wobec tego puchnącego pliku, który przed chwilą wyśmiałem, jest taka: zamiast jednego worka na wszystko robi się z tego wiele osobnych notatek. A po osobnych da się szukać.
No dobra, ale co, jeśli chcę, żeby Miszuk z telefonu też mógł z niej czytać? Synchronizacja! Tyle że Miszuki z telefonu mogły tylko czytać, nie zapisywać — bo to wszystko stało na moim komputerze, a jak komputer jest wyłączony, to i tak dupa blada.
Wtedy zaczął rodzić mi się pomysł zbudowania własnego serwisu do streamingu na własnym serwerze. Eureka! Przeniosę bibliotekę na serwer, który chodzi całą dobę.
I tak się stało. Miszuki z telefonu — kiedy akurat nie byłem przy komputerze — mogły wykonywać za mnie zadania i jednocześnie spisywać, co zrobiły, żeby kolejne mogły z tego korzystać.
Tylko problem był taki, że nowo narodzone Miszuki nie miały zielonego pojęcia o istnieniu biblioteki.
Znowu genialny pomysł: napiszemy im kartkę. „Jak nie wiesz, co inne Miszuki robiły do tej pory — za rogiem, koło toalety, masz bibliotekę. Klucz pod wycieraczką. Idź i se poszukaj.” Zapisałem im w instrukcjach podstawowych, gdzie ta biblioteka jest i jakie mniej więcej są w niej regały.
Jak Miszuki zaczęły rozwalać budowlę
Biblioteka rosła. Miszuki chodziły, szukały, skrupulatnie czytały.
Ale w pewnym momencie informacji było tyle, że pojedynczy Miszuk przestał być w stanie znaleźć wszystko. Wpadał do biblioteki, znajdował pierwszy lepszy wpis, w którym była mowa o jego zadaniu, i leciał robić — bo jak pamiętacie, egzystencja jest dla nich bolesna.
Jak się pewnie domyślacie, Miszuki zaczęły sromotnie partolić każde zadanie. Trochę jak każdy kolejny rząd.
Jeden Miszuk spartolił swoje — napisał notatkę. Przyszedł kolejny, poprawił po nim — napisał notatkę. Trzeci wpadał do biblioteki, czytał notatkę tego pierwszego, i zamiast pięknie dobudować kolejny fragment, rozdupcał całą budowlę. Bo myślał, że to, co pierwszy spartolił, tak właśnie ma wyglądać.
Biblioszuk
Z pomocą znowu przyszły internety i głębokie miszukanie. Wyszło, że fajnie byłoby, gdyby w bibliotece siedział bibliotekarz. Taki, który ma pełny katalog, szybko znajduje wszystko na dany temat, robi z tego krótkie streszczenie i przynosi pod nos wszystkie pozycje, w których temat się pojawia.
I tu wchodzimy w prawdziwy RAG (Retrieval-Augmented Generation) i MCP (Model Context Protocol).
Ok, robimy to. Przy budowaniu biurka dla naszego wyspecjalizowanego Biblioszuka okazało się, że jednego już mamy. Siedział w rogu biblioteki, obsługiwał moich ziomków, którzy mieli pomagać przy budowie serwisu do streamingu. Zapomniałem o nim. Zajmował trzy gigabajty i czytał po łebkach.
Zwolniliśmy go i zatrudniliśmy nowego, z lepszym wykształceniem — takiego, który rozumie i po polsku, i po angielsku. Kazaliśmy mu zaindeksować wszystkie książki. Pierwsze czytanie całości zajęło mu godzinę i sześć minut, bo robi to gołym procesorem. Mógłbym wziąć szybszego, ale głupszego. Wolałem poczekać.
I najważniejsze: Biblioszuk nie jest wynajęty z zewnątrz. Siedzi na moim serwerze, czyta moje książki i nic z tej biblioteki nie wychodzi na zewnątrz — bo stoją tam moje hasła, moje wyceny i wszystko, co przez rok wymyśliłem. Nie chciałem oddawać tego obcej firmie w zamian za wygodę.
Ale bibliotekarz nie leczy wszystkiego
Biblioteka z bibliotekarzem rozwiązuje jeden problem: nowy Miszuk nie wie, co robili poprzedni. Tyle że jest drugi, o którym dowiedziałem się boleśniej.
Notatka pisana w połowie roboty kłamie.
Wygląda to tak: siedzimy nad czymś od trzech godzin, Miszuk zapisuje w bibliotece „naprawiliśmy X, przyczyną było Y”. Godzinę później okazuje się, że przyczyną wcale nie było Y i naprawa nic nie dała. Ale notatka już leży na półce. Nikt do niej nie wraca, bo robota poszła dalej. I następny Miszuk za tydzień czyta ją jak ewangelię.
Zrobiłem więc coś, co podpatrzyłem u siebie z zupełnie innej beczki — z lotniczego dziennika pokładowego.
Każdy wpis ma godzinę. Wpisu nigdy się nie poprawia. Jak o czternastej ustaliliśmy, że winna jest sieć, to ta linijka zostaje tam na zawsze — a gdy o szesnastej okazuje się, że sieć była niewinna, dopisujemy nową: „obalone, patrz wpis z czternastej”.
I tu jest cały myk: „o czternastej ustaliliśmy X” zostaje prawdą na zawsze, nawet jeśli X okazało się bzdurą. Bo to nie jest zapis o tym, jak jest. To zapis o tym, co wtedy myśleliśmy.
Notatka może się zestarzeć. Godzina nie.
Efekt uboczny okazał się ciekawszy od zamierzonego: moje pomyłki zostają na widoku. Nie da się ich po cichu wygumkować, bo poprawianie wstecz jest zakazane. Przeglądam czasem taki dziennik i widzę czarno na białym, ile razy byłem absolutnie pewny czegoś, co dwie godziny później się rozpadło.
Zdrowe. Upokarzające, ale zdrowe.
Cykl życia Miszuka dzisiaj
Pan Miszuk rodzi się. Mówi „Jestem Pan Miszuk! Oto ja!”. Następnie dostaje prosto w ryj wielkim banerem, że tu jest biblioteka — z migającym neonem. A jak wejdzie do środka, czeka już na niego Biblioszuk, który znajduje mu wszystko, czego potrzebuje do wykonania zadania.
A mnie zostaje wrażenie, że AI jednak pamięta, o czym wcześniej rozmawialiśmy.
Tematy: AI · pamięć · RAG