Jak nauczyć agentów LLM zapamiętywać kontekst i odtwarzać prace naukowe
Ostatnio natknąłem się na benchmark PaperGuru, w którym autorzy postanowili przyjrzeć się nieprzyjemnemu problemowi z agentami autonomicznymi. Okna kontekstowe w nowoczesnych modelach urosły do miliona tokenów. Jednak wielodniowe zadania, w których agent musi eksplorować repozytoria, czytać dziesiątki artykułów i pisać działający kod, wciąż się rozpadają.
Zwykle wszystko sprowadza się do pamięci. Bazy wektorowe znajdują fragmenty tekstu za pomocą podobieństwa cosinusowego, ale całkowicie pomijają relacje w czasie. Jeśli artykuł został zaktualizowany lub biblioteka stała się przestarzała, standardowy RAG chętnie wmiesza przestarzały fragment do promptu. W repozytorium PaperGuru-Benchmark badacze z zespołu AutoTrustAI opublikowali architekturę pamięci długoterminowej z świadomością cyklu życia danych (Lifecycle-Aware Memory, LAM), wraz z wynikami testów na złożonych benchmarkach.
Co jest nie tak ze standardowym RAG
Gdy agent pisze obszerną recenzję literatury lub odtwarza kod z artykułu PDF, płaskie wyszukiwanie osadzeń zawodzi na podstawowych rzeczach.
Po pierwsze, informacje stają się nieaktualne. Jeśli metoda została obalona w bardziej aktualnym artykule, płaska baza danych o tym nie wie.
Po drugie, potrzebne dowody często znajdują się nie w fragmencie podobnym do zapytania słowami kluczowymi, ale dwa linki dalej w grafie cytowań.
Po trzecie, wraz ze wzrostem archiwum rosną koszty wyszukiwania, a agent zaczyna tonąć w szumie.
Autorzy sformułowali cztery zasady pracy z pamięcią:
- Wersjonowanie treści. System śledzi edycje, deprecjacje i wycofania artykułów.
- Wieloskokowa trafność strukturalna. Wyszukiwanie przechodzi przez graf relacji, nie tylko podobieństwo wektorowe.
- Ograniczony koszt zapytań przy nieograniczonym wzroście archiwum.
- Śledzenie dowodów. Każde twierdzenie agenta jest powiązane z konkretnym źródłem.
Architektura Capital Chunk Memory
Zamiast dzielić tekst na jednolite fragmenty i wrzucać je do Chroma lub Pinecone, architektura PaperGuru dzieli pamięć na dwie warstwy. Pierwsza warstwa nazywa się nagłówkami fragmentów (chunk heads). To kompaktowe nagłówki z metadanymi dla każdego artefaktu, używane do szybkiego routingu. Druga warstwa, zawartość fragmentów (chunk contents), przechowuje surowy tekst i jest ładowana leniwie dopiero wtedy, gdy jest faktycznie potrzebna.
Router opiera się na temporalnym grafie artefaktów. Graf zawiera dwa typy relacji: strukturalne (na przykład cites, implements, benchmarked-on) i przyczynowe (deprecated-by, retracted-by, superseded-by).
Potok generacji składa się z czterech kroków:
- Wyszukiwanie: szybkie wyszukiwanie pasujących nagłówków artefaktów w archiwum.
- Ekstrakcja: wyciąganie potrzebnych fragmentów i składanie tzw. kart dowodowych (evidence cards).
- Rozumowanie: cykl generacji i krytyki, w którym model tworzy szkic i sprawdza logikę.
- Weryfikacja: końcowa walidacja ze sprawdzaniem referencji źródłowych.
Co pokazują testy
Autorzy przetestowali system na dwóch trudnych benchmarkach: PaperBench od OpenAI i SurveyBench.
PaperBench ocenia zdolność modelu do wzięcia PDF artykułu ML i napisania działającego repozytorium z odtworzeniem eksperymentów. Baseline ludzki (student ML z dyplomem doktora z budżetem 48 godzin) wynosi 41%.
PaperGuru osiągnął średni wynik 66,05% na 23 artykułach, pokonując wszystkie opublikowane rozwiązania bazowe. Poprzedni najlepszy wynik innych agentów wynosił 35,74%.
Na 19 z 20 artykułów z znanymi baseline'ami, nowa architektura pamięci wykazała znaczną poprawę. Na przykład przy odtwarzaniu artykułu o classifier-free guidance wynik wzrósł o 68%. Jedyny spadek wystąpił w zadaniu PINN (-4,47%), gdzie oryginalny baseline używał ręcznych heurystyk specyficznych dla domeny.
Na SurveyBench, który ocenia jakość pisania obszernych przeglądów naukowych, system uzyskał 94,66% w kategorii jakości treści w ocenie opartej na Claude Opus.
Warto przyjrzeć się metryce Richness. Liczy ona nie subiektywne oceny modelu językowego, ale faktyczną obecność skompilowanych wykresów, tabel, działającego kodu i poprawnych cytowań w wygenerowanym materiale.
Tutaj PaperGuru uzyskał 43,76%, podczas gdy połowa konkurencyjnych podejść uzyskała zero, generując goły tekst bez struktury.
Co zawiera repozytorium
Repozytorium ma około 350 MB i zawiera wiele praktycznych materiałów:
- Pełna infrastruktura benchmarku z odtwarzalnymi potokami ewaluacji
- Wstępnie obliczone osadzenia i struktury grafów dla wszystkich artykułów benchmarku
- Implementacje bazowe komponentów architektury LAM
- Skrypty ewaluacyjne i narzędzia wizualizacji
- Gotowe do użycia zgłoszenia dla wszystkich 23 artykułów PaperBench
Wszystkie wykresy z README można przebudować lokalnie. Folder assets/figures/ zawiera plik data.json ze wszystkimi metrykami i skryptem budowania:
python scripts/rebuild_graphs.py
Kto powinien zgłębić ten projekt
Jeśli budujesz systemy agentów pracujące z dużymi bazami kodu lub złożoną dokumentacją techniczną, to repozytorium dostarcza doskonałego materiału do przemyśleń. Pomysł dzielenia pamięci na lekkie nagłówki i graf relacji przyczynowych łatwo przenosi się na korporacyjne bazy wiedzy.
Gotowe zgłoszenia w folderze PaperBench/submissions/ będą przydatne dla osób testujących własne potoki generowania kodu z artykułów. Możesz tam zobaczyć, jak strukturyzować odtwarzanie złożonych potoków ML, gdy model musi wygenerować nie pojedynczy skrypt, ale działające drzewo projektu z zależnościami i testami.