AutoRAG 2.0 — agent-bibliotekarz, który czyta twoje dokumenty i sam się uczy
AutoRAG przeszedł zwrot: z narzędzia do optymalizacji pipeline'ów RAG stał się agentem przeszukującym dokumenty, Slacka, pocztę i czaty. Pokazujemy architekturę, model bezpieczeństwa i ustawienie, bez którego polskie wyszukiwanie zamienia się w szum.
Każde narzędzie do wyszukiwania daje ci to samo: listę ścieżek do plików i pasujących linii. Potem ty otwierasz każdy plik, czytasz otoczenie, decydujesz co jest istotne, składasz z tego odpowiedź i próbujesz zapamiętać, co się sprawdziło. Narzędzie tylko wskazuje palcem — resztę robi człowiek.
AutoRAG stawia tezę, że da się inaczej: to ma być bibliotekarz, a nie wyszukiwarka. Szuka, otwiera źródła, czyta, ocenia dowody i wraca z ponumerowanymi jednostkami wiedzy zamiast ze zrzutem z grepa. Do tego zapamiętuje, co zadziałało, więc świeża instalacja próbuje wszystkiego, a wysłużona wie, gdzie zajrzeć.
Uwaga na wstępie: to już nie jest to samo narzędzie
Jeśli kojarzysz AutoRAG jako narzędzie RAG AutoML — to, które automatycznie dobierało optymalny pipeline RAG dla twoich danych i mierzyło warianty na twoim zbiorze ewaluacyjnym — musisz wiedzieć, że projekt przeszedł pełny zwrot. Repozytorium jest dziś monorepem, w którego korzeniu siedzi AutoRAG 2.0: napisany w TypeScripcie agent-bibliotekarz. Stary, pythonowy AutoRAG został przeniesiony do katalogu legacy/.
Autorzy stawiają przy tym sprawę jasno i wypada to powtórzyć, bo dla części czytelników będzie to najważniejsza informacja w całym wpisie: wersja legacy nie jest porzucona. Jest w trybie utrzymania — dostaje poprawki błędów, aktualizacje zależności i wydania na PyPI, więc pip install AutoRAG nadal działa, a dotychczasowi użytkownicy mogą korzystać z niej dokładnie tak jak wcześniej. Widać to w praktyce: tag legacy-v0.3.25 powstał 24 sierpnia 2026, a dependabot podbijał zależności w legacy/ jeszcze 5 września. Nowe funkcje powstają natomiast wyłącznie w wersji 2.0.
Konsekwencja licencyjna też jest podwójna i warto ją znać przed audytem. Korzeń repozytorium jest na MIT, z prawami po stronie NomaDamas / Marker Inc. Katalog legacy/ ma osobną licencję Apache 2.0 — plik MIT w korzeniu odsyła do niej wprost notatką na końcu.
Stan projektu
Repozytorium: Marker-Inc-Korea/AutoRAG. 5064 gwiazdki, 434 forki, start w styczniu 2024. Tempo pracy jest wysokie: v2.4.1 z 5 września 2026, v2.4.0 z 4 września, v2.3.0 z 24 sierpnia, v2.2.0 z 22 sierpnia, v2.1.0 z 24 lipca. Commity wpadają codziennie. Otwartych zgłoszeń jest 132 — dużo, ale przy takim tempie zmian to raczej objaw ruchu niż zaniedbania.
Warto mieć na uwadze, że przy tym rytmie wydań (cztery wersje mniejsze w ciągu sześciu tygodni) czytasz opis stanu z konkretnego dnia. Przed wdrożeniem sprawdź aktualną dokumentację, bo szczegóły konfiguracji mogły się przesunąć.
Czym jest AutoRAG 2.0
Technicznie to wyspecjalizowany agent zbudowany na pętli agentowej Pi, skonfigurowanej w rolę bibliotekarza. Jeden model odpowiada za cały cykl: wyszukanie kandydatów, odczytanie plików źródłowych, ocenę materiału i złożenie odpowiedzi. Autorzy podkreślają, że AutoRAG nie jest koordynatorem wielu modeli w różnych rolach — konfigurujesz jeden model i on prowadzi całość. Model i dostawca pochodzą z uwierzytelnionego środowiska użytkownika; projekt nie dowozi własnego domyślnego dostawcy.
Trzy zasady, które autorzy stawiają jako fundament, są warte przytoczenia, bo dobrze tłumaczą decyzje projektowe:
- Nigdy nie migruj danych, żeby je przeszukać. AutoRAG federuje magazyny należące do zewnętrznych narzędzi CLI, w miejscu, w którym już są. Bez wymuszonego wgrania wszystkiego do centralnego indeksu i bez serwera trzeciej strony trzymającego kopię twojego zbioru.
- Ma po prostu działać — minimum konfiguracji, bez strojenia pipeline'u, bez obsługi bazy wektorowej, bez kluczy API. Lokalny model osadzeń i automatyczna instalacja komponentu indeksującego mają ukryć „instalację hydrauliczną RAG-a".
- Szybko z założenia — jeden model, wyszukiwanie lokalnie po fragmentach, interaktywne szukanie optymalizowane pod niskie opóźnienie.
Zwróć uwagę na pierwszą zasadę w zestawieniu z drugą: to jednocześnie największa zaleta i największy koszt operacyjny tego projektu, o czym poniżej.
Jak szuka
Wyszukiwanie leksykalne BM25, semantyczne wektorowe i hybrydowe idą przez jeden wspólny cykl życia fragmentów w komponencie MinSync, spięte rejestrem metod. Wszystkie trzy są włączone domyślnie, gdy MinSync jest aktywny. Indeksowanie lokalne wyłącza się przez "minSync": false, a samo wyszukiwanie leksykalne przez "bm25": false.
Warstwą odkrywania jest z kolei Jikji — napisane w Rust narzędzie CLI, wywoływane jako jikji find ROOT "zapytanie" --json. Co istotne, Jikji nie jest zarejestrowane jako backend wyszukiwania: dostarcza ograniczone „paczki odpowiedzi", a bibliotekarz nadal sam otwiera oryginalne pliki, żeby zweryfikować źródło. Jeśli binarki albo łańcucha narzędzi Rusta nie ma, Jikji zgłasza diagnostykę, a zwykłe ścieżki wyszukiwania działają dalej. Wyłącza się je przez "jikji": false.
Jest jeszcze dupey do wykrywania duplikatów — rodzin dokumentów identycznych, zbliżonych i zawierających się w sobie. Polecenie autorag duplicates jest wyłącznie do odczytu: raportuje grupy i podpowiada, co przejrzeć, ale nigdy nie przenosi ani nie usuwa plików źródłowych. Domyślnie przy odświeżaniu indeksowana jest najnowsza kopia z każdej grupy dokładnych duplikatów, a starsze pomijane — jeśli obie mają być wyszukiwalne, ustaw "excludeExactDuplicates": false.
Źródła danych
To najbardziej rozbudowana część projektu. Poza katalogami na dysku AutoRAG potrafi przeszukiwać, każde przez własne zewnętrzne narzędzie CLI: KakaoTalk (katok), WhatsApp (wacrawl), Telegram (telecrawl), Slacka (slacrawl), Discorda (discrawl), Notion (notcrawl), zgłoszenia i pull requesty z GitHuba (przez REST, token opcjonalny), dyski w chmurze przez rclone, Gmaila, lokalne eksporty poczty w formatach .mbox i .eml, archiwa pocztowe przez mailcrawl, skarbiec Obsidiana przez qmd oraz kanały RSS i Atom.
Podział odpowiedzialności jest przy tym konsekwentny: narzędzia zewnętrzne zachowują własność swoich archiwów, indeksów pełnotekstowych i uwierzytelnienia, a AutoRAG tylko mapuje wyniki ich zapytań do wspólnego potoku. Przy KakaoTalku autorzy podkreślają to wprost — AutoRAG nigdy nie czyta baz danych KakaoTalka bezpośrednio. Poświadczenia Slacka zostają w konfiguracji slacrawl, Notion w notcrawl, a dane logowania do poczty w mailcrawl.
Dwie uwagi praktyczne. Po pierwsze, wiele z tych narzędzi wymaga instalacji przez brew albo cargo, a część funkcji — na przykład podłączenie się do działającej aplikacji WhatsApp Desktop czy Telegram Desktop — działa tylko na macOS. Istniejące, przenośne archiwum można odpytywać na pozostałych platformach. Po drugie, dysk Google jest oznaczony jako poziom pierwszy, OneDrive, Dropbox, SMB, SFTP i WebDAV dzielą ten sam kontrakt, a iCloud Drive jest eksperymentalny, bo rclone klasyfikuje go najniżej, a sesje Apple ID z uwierzytelnianiem dwuskładnikowym wymagają okresowego ponownego logowania.
Model bezpieczeństwa, który warto obejrzeć
Ta część zaskoczyła mnie pozytywnie, bo rozwiązuje problem, o którym większość projektów agentowych milczy: co się stanie, gdy model zostanie namówiony na rozszerzenie własnych uprawnień. Domyślne ustawienia autorzy nazywają celowo surowymi, i słusznie:
- Dostęp do źródeł jest domyślnie zabroniony, dopóki zaufana konfiguracja serwera albo API nie poda listy dozwolonych znaczników w
datasourceAccess.allowedTags. - Argumenty modelu i narzędzi nigdy nie nadają znaczników ani zakresów. To zdanie jest sedno: model nie może wyprosić sobie dostępu, którego nie dał mu człowiek w konfiguracji.
- Narzędzie wyszukiwania w źródłach przyjmuje wyłącznie
{ query, topK?, scope? }, ascopemoże jedynie zawężać zaufany dostęp, nigdy go poszerzać. - Tokeny są wskazywane przez nazwę zmiennej środowiskowej, nigdy nie trafiają do pliku konfiguracyjnego.
- Proces potomny dostaje ograniczone środowisko — niepowiązane sekrety dostawców modeli nie są mu przekazywane.
- Błędy narzędzi i API wracają jako diagnostyka nieprzezroczysta dla ścieżek i danych osobowych, zamiast wysypywać je w komunikacie.
- Pliki ukryte, pliki wrażliwe i indeksowanie multimediów są domyślnie wyłączone.
- Przygotowanie indeksu działa domyślnie z flagą wyłączającą modyfikację reguł agentowych, więc AutoRAG nigdy nie przepisuje twoich plików
AGENTS.md,CLAUDE.mdani.cursorrules— chyba że jawnie to włączysz.
Ten zestaw to nie ozdoba. Narzędzie, które czyta twoją pocztę i czaty, a potem oddaje treść modelowi językowemu, jest dokładnie tym rodzajem systemu, w którym wstrzyknięcie instrukcji w treść dokumentu jest realnym wektorem. Zasada „argumenty modelu nie nadają uprawnień" jest właściwą odpowiedzią na ten problem.
Regulaminy zaszyte w kodzie
Osobny akapit należy się jednej decyzji, bo rzadko się takie widzi. Przy Discordzie AutoRAG obsługuje dwa źródła archiwum: domyślne czyta lokalną pamięć podręczną aplikacji Discord Desktop i nie potrzebuje żadnego tokenu, a drugie używa tokenu bota, czyli ścieżki dopuszczonej regulaminem.
I teraz rzecz istotna: AutoRAG odmawia uruchomienia narzędzia, jeśli w środowisku znajdzie token użytkownika Discorda. Uzasadnienie jest w dokumentacji podane wprost — automatyzacja konta użytkownika narusza wytyczne społeczności Discorda i może skończyć się usunięciem konta. To projekt, który wbudował zgodność z regulaminem w kod i odmawia zrobienia czegoś, co zaszkodziłoby użytkownikowi. Przy tego rodzaju narzędziach warto to odnotować, bo bywa dokładnie odwrotnie.
Najważniejsze ustawienie dla polskich zbiorów
Jeśli miałbym wybrać jedną rzecz z całej dokumentacji, którą polski zespół musi wiedzieć przed pierwszym uruchomieniem, to jest nią wybór modelu osadzeń — a ostrzeżenie autorów jest zaskakująco dosłowne.
Nie używaj nomic-embed-text. Dokumentacja tłumaczy, dlaczego: ten model jest wyłącznie angielski i „zapada" teksty nieangielskie w jedno wąskie pasmo podobieństwa, przez co wyszukiwanie semantyczne cicho degraduje się do szumu. Nie wywala się, nie zgłasza błędu — po prostu zwraca bezsensowne wyniki, które wyglądają jak wyniki. AutoRAG emituje w takiej sytuacji diagnostykę, ale trzeba na nią patrzeć.
Rekomendowany jest EmbeddingGemma (Gemma 3 300M, 768 wymiarów, ponad 100 języków), uruchamiany lokalnie przez Ollamę. To ten sam model, którego używa integracja z KakaoTalkiem, więc wszystkie źródła oparte o zewnętrzne narzędzia mogą dzielić jeden lokalny model osadzeń. Dla polskich dokumentów, polskiego Slacka i polskiej poczty to nie jest kwestia optymalizacji, a warunek działania.
ollama serve
ollama pull embeddinggemmaDruga rzecz z tej samej sekcji jest znakomitym przykładem tego, jak wygląda uczciwa inżynieria. Domyślny tryb wyszukiwania dla Discorda to hybrid, a powód jest podany razem z pomiarem: indeks pełnotekstowy narzędzia discrawl usuwa znaki nowej linii, nie wstawiając w to miejsce spacji, przez co słowa z sąsiadujących linii zlepiają się w jeden, niewyszukiwalny token. Autorzy zmierzyli to na prawdziwym archiwum — dotyczy około 47% słów występujących po znaku nowej linii — i zamiast to przemilczeć, zostawili odnośnik do zgłoszenia i włączyli wyszukiwanie semantyczne, które tę dziurę zakrywa.
PDF-y, czyli gdzie kończy się prosta ścieżka
Domyślny parser PDF-ów robi tani test jakości dla dokumentów wielostronicowych. Gdy wynikowy markdown jest podejrzanie ubogi — mniej niż 800 znaków albo mniej niż 40 znaków na wykrytą stronę, przez co najmniej trzy strony — parser ponawia próbę przez hybrydowy backend z limitem 30 sekund. Gęste PDF-y nie są ponawiane, a tryb hybrydowy nigdy nie jest używany dla dokumentów jednostronicowych ani jako pierwsza ścieżka dla obrazów.
Jeśli backend hybrydowy jest niedostępny albo przekroczy limit, AutoRAG zachowuje lokalny markdown i emituje diagnostykę, a odświeżanie kończy się sukcesem. To rozsądne zachowanie — ale znaczy też, że skan bez warstwy tekstowej może przejść przez indeksowanie „pomyślnie", dając w wyniku prawie nic. Progi są konfigurowalne, więc przy zbiorze złożonym ze skanów warto je świadomie podnieść.
Zanim skierujesz to na firmowego Slacka
Tu trzeba się zatrzymać, bo to narzędzie z natury robi rzecz o dużych konsekwencjach: buduje przeszukiwalny indeks komunikacji.
Jeśli podłączysz firmowego Slacka, pocztę i Notion, powstaje zbiór, w którym są dane osobowe pracowników i klientów — treści rozmów, adresy, nazwiska, załączniki. W organizacji taki zbiór wymaga podstawy przetwarzania, określonej retencji i wpisania do rejestru czynności. Sam fakt, że indeks stoi lokalnie, tego obowiązku nie zdejmuje; zdejmuje tylko problem powierzenia danych zewnętrznemu dostawcy wyszukiwania.
Druga kwestia jest delikatniejsza. Modele osadzeń mogą działać lokalnie, ale model prowadzący pętlę bibliotekarza czyta treść dokumentów — i jeśli jest to model zdalny, ta treść opuszcza waszą infrastrukturę. Dokumentacja mówi, że model i dostawca pochodzą z uwierzytelnionego środowiska użytkownika, więc decyzja jest wasza. To jest właśnie miejsce, w którym trzeba ją podjąć świadomie, a nie odkryć po fakcie: albo model działa lokalnie, albo trzeba pogodzić przepływ treści z waszymi zobowiązaniami wobec klientów.
Trzecia rzecz dotyczy czatów prywatnych. Możliwość indeksowania WhatsAppa, Telegrama i KakaoTalka jest w tym projekcie pomyślana pod użytek osobisty — jako sposób na odnalezienie własnej rozmowy z zeszłego roku. Kierowanie tego na komunikatory, w których są prywatne rozmowy pracowników, byłoby monitorowaniem, które w polskim porządku prawnym ma ścisłe ramy i wymaga poinformowania osób monitorowanych. Rozgraniczenie „mój laptop, moje rozmowy" od „sprzęt firmowy, rozmowy zespołu" trzeba tu zrobić przed instalacją.
Koszt operacyjny, o którym trzeba wiedzieć
Zasada „nie migruj danych, żeby je przeszukać" ma cenę i jest nią liczba ruchomych części. Pełne wykorzystanie AutoRAG-a oznacza obecność w systemie kilkunastu osobnych binarek: jikji i dupey instalowanych przez cargo, wacrawl, telecrawl, slacrawl, discrawl i notcrawl przez brew, do tego rclone, qmd, mailcrawl, katok i Ollama z modelem osadzeń.
Każda z nich ma własne wydania, własną konfigurację i własne poświadczenia. To świadomy wybór architektoniczny — dane zostają tam, gdzie są, a właścicielem archiwum jest narzędzie, które je zna najlepiej — ale przy wdrożeniu firmowym trzeba to policzyć jako koszt utrzymania, a nie jako szczegół instalacji. Dokumentacja podaje przy okazji konkretny przykład tego rodzaju kruchości: mailcrawl w wersji 0.1.3 i wcześniejszych zawodzi przy ponownym indeksowaniu po odświeżeniu, które nic nie zmieniło, więc wymagana jest 0.1.4 lub nowsza.
Osobno warto zauważyć, że MinSync sam instaluje weryfikowane wydanie do katalogu w twojej przestrzeni roboczej przy pierwszym użyciu. Domyślnie ta automatyczna instalacja jest włączona; jeśli w waszym środowisku pobieranie i uruchamianie binarek musi przechodzić przez własny proces, ustaw "autoInstall": false i zarządzaj plikiem samodzielnie.
Stan trzymany jest poza przestrzenią roboczą, w ~/.autorag/: plik konfiguracyjny, memory.json z wyuczoną pamięcią oraz dziennik przebiegów w logs/runs.jsonl. Ten pierwszy plik pamięci to nie cache — to właśnie on sprawia, że narzędzie „mądrzeje", więc przy przenoszeniu instalacji warto go zabrać, a przy zgłaszaniu problemu pamiętać, że zawiera wnioski z twoich zapytań.
Pułapki w jednym miejscu
- To nie jest już narzędzie do optymalizacji pipeline'ów RAG. Tamto żyje w
legacy/w trybie utrzymania, dostępne przezpip install AutoRAG, bez nowych funkcji. - Dwie licencje w jednym repozytorium — MIT w korzeniu, Apache 2.0 w
legacy/. Przy audycie sprawdź, której części używasz. - Nie używaj
nomic-embed-textdo polskich treści — wyszukiwanie semantyczne cicho zamieni się w szum. Sięgnij po EmbeddingGemma. - Model prowadzący pętlę czyta treść dokumentów. Przy modelu zdalnym treść opuszcza waszą infrastrukturę — to decyzja do podjęcia przed wdrożeniem.
- Kilkanaście zewnętrznych binarek instalowanych przez
brewicargo, każda z własną konfiguracją i poświadczeniami. - Podłączenie działających aplikacji WhatsApp i Telegram Desktop wymaga macOS. Na innych platformach odpytasz tylko gotowe archiwum.
- MinSync sam instaluje binarkę przy pierwszym użyciu. W kontrolowanym środowisku ustaw
"autoInstall": false. - Skan bez warstwy tekstowej może przejść indeksowanie „pomyślnie" i dać prawie nic — progi ponowienia dla PDF-ów są konfigurowalne.
- Domyślnie indeksowana jest tylko najnowsza kopia dokładnych duplikatów. Jeśli obie mają być wyszukiwalne, wyłącz to jawnie.
- iCloud Drive jest eksperymentalny i wymaga okresowego ponownego uwierzytelnienia.
- Cztery wydania mniejsze w sześć tygodni. Szczegóły konfiguracji sprawdzaj w aktualnej dokumentacji, nie w opisach z drugiej ręki.
Podsumowanie
AutoRAG 2.0 jest projektem o wyraźnej i niepopularnej tezie: żeby przeszukać własne dane, nie trzeba ich najpierw nikomu oddać ani zebrać w jednym indeksie. Realizuje ją konsekwentnie, płacąc za to rozbudowaną konstelacją zewnętrznych narzędzi — i uczciwie o tym pisze.
- Odpowiedzi zamiast ścieżek — agent czyta źródła i zwraca ponumerowane jednostki wiedzy z odesłaniem do miejsca w dokumencie.
- Trzy metody wyszukiwania w jednym interfejsie — leksykalna, semantyczna i hybrydowa, przez wspólny cykl życia fragmentów.
- Trzynaście rodzajów źródeł — od PDF-ów na dysku po Slacka, Notion, pocztę, dyski w chmurze i kanały RSS, każde przez narzędzie, które zna swoje dane.
- Poważnie przemyślany model uprawnień — dostęp domyślnie zabroniony, a argumenty modelu nie mogą nadać sobie znaczników ani zakresów.
- Zgodność z regulaminami wbudowana w kod — odmowa uruchomienia przy tokenie użytkownika Discorda zamiast cichego złamania zasad.
- Uczciwa dokumentacja, która podaje zmierzone słabości zewnętrznych indeksów i ostrzega przed modelem osadzeń psującym wyniki dla języków innych niż angielski.
Korzeń projektu jest wydany na licencji MIT z prawami NomaDamas / Marker Inc. — permisywnie, bez obowiązku otwierania własnych zmian. Pythonowa wersja legacy pozostaje na Apache 2.0, która dokłada wyraźne udzielenie licencji patentowej i wymóg odnotowania modyfikacji w zmienionych plikach. Jeśli przyszedłeś tu po narzędzie RAG AutoML, ta druga część nadal na ciebie czeka i nadal jest utrzymywana — tylko rozwój przeniósł się gdzie indziej.