Ostatnie dwa tygodnie miały dwa wyraźne wątki. Odpowiedzi lepiej trafiają we właściwy fragment i lepiej pokazują, skąd go wzięły. A dwie rzeczy, które dało się zmienić tylko deployem – z jakimi usługami łączy się Ragen i co wolno zawierać turze czatu – stały się ustawieniami w panelu administracyjnym.
Jeśli utrzymujesz własną instalację, przeczytaj sekcję o guardrailach przed aktualizacją. Jedna zmienna środowiskowa przestaje być czytana, a jedno polecenie powie Ci, czy to cokolwiek u Ciebie zmienia.
Odpowiedzi czytają więcej dokumentu
Od 1 października domyślnie działają dwie zmiany w wyszukiwaniu.
Każdy fragment trafia do modelu razem z tekstem wokół niego. Gdy fragment wchodzi do kontekstu, dochodzą do niego sąsiednie fragmenty z tego samego pliku, sklejone w jeden ustęp bez zdublowanej zakładki. Odpowiedź, która zaczyna się pod koniec jednego fragmentu, nie traci już swojej pierwszej połowy. Kosztuje to około 9 ms na turę, a dodatkowy kontekst jest ograniczony do trzykrotności zwykłego.
Każdy nowo zaindeksowany fragment niesie do wyszukiwania tytuł dokumentu, sekcję i jednozdaniowe streszczenie. Akapit, w którym stoi tylko „okres wypowiedzenia wynosi 30 dni”, znajdzie się teraz także na pytanie, które wymienia umowę. Ten prefiks nie kosztuje żadnego wywołania modelu i jest zapisywany obok fragmentu, nie w nim, więc model i cytowanie widzą tekst w oryginalnym brzmieniu.
Obie zmiany zmierzyliśmy przed włączeniem, na naszym dwujęzycznym zestawie testowym z dokumentami prozatorskimi. Tekst wokół fragmentu podniósł liczbę poprawnych odpowiedzi z około 18 do 20 na 24. Prefiks z tytułem i sekcją dał komplet poprawnych odpowiedzi we wszystkich trzech przebiegach, a każda liczba, o którą pytaliśmy w innym języku niż dokument, dotarła do modelu – bez prefiksu dwie lub trzy z ośmiu. Zestaw jest mały, a na dokumentach pełnych tabel żadna z tych zmian nie ruszyła wyniku, więc traktuj te liczby jako kierunek, a nie obietnicę.
Obie są domyślnie włączone i organizacja może je wyłączyć. Odpowiedzi wiedzą też teraz, z której sekcji pochodzi fragment: dokumenty parsowane przez Docling i pliki Markdown zapisują nagłówek, pod którym leży każdy fragment, więc asystent widzi „4. Wynagrodzenie > 4.2 Terminy” obok cytowanego tekstu.
Pliki zaindeksowane wcześniej dostaną prefiks z tytułem i sekcją po ponownym zaindeksowaniu. Administrator organizacji nie potrzebuje do tego już nikogo od infrastruktury: ustawienia pipeline’u RAG pokazują, ile dokumentów jest aktualnych, i indeksują resztę w tle (#1458, #1463).
Źródło otwiera się na cytowanym fragmencie
Kliknięcie źródła otwierało dokument od początku. Teraz otwiera go w cytowanym miejscu, z fragmentem zaznaczonym na żółto – słowo w słowo w PDF-ie, a także w plikach Word, Markdown, tekstowych, CSV i arkuszach. Arkusz otwiera się na tej zakładce, z której pochodzą wiersze. Cytowana strona internetowa pokazuje swój fragment i link zamiast „Podgląd niedostępny”. Gdy dokładnego fragmentu nie da się znaleźć, bo plik został w międzyczasie podmieniony, dokument i tak się otwiera, z krótką informacją o tym. Działa to też po powrocie do starej rozmowy: PDF otwiera się na cytowanej stronie, a nie tylko wtedy, gdy odpowiedź jest świeża.
Przy okazji źródła dało się łatwiej czytać. Cytat pod źródłem pokazuje słowa, a nie formatowanie parsera – bez ### Jak długo… czy | Zwrot | 14 dni |. Źródło z arkusza czyta się jak tabelę z nazwami kolumn. Pliki .xlsx i .xls mają podgląd z zakładką na każdy arkusz, a każdy podgląd można rozciągnąć na całe okno, co pomaga przy arkuszu z większą liczbą kolumn, niż mieści boczny panel.
Konektory dodaje się w panelu, nie w wydaniu
To, z jakimi usługami Ragen mógł się łączyć, było enumem w Postgresie z jedenastoma wartościami. Dodanie dwunastej oznaczało migrację, dwa manifesty, dwie ikony, kilka zmiennych środowiskowych i skoordynowane wydanie trzech usług.
Teraz to wiersz. W MCP Catalogue w panelu administracyjnym administrator platformy wkleja adres serwera, wybiera sposób uwierzytelniania, klika Test connection, żeby zobaczyć narzędzia, które serwer udostępnia, i przyznaje go organizacjom, które mają go mieć. Instalacja, której zespół pracuje w Notion, nie czeka już na wydanie od nas, a własny, wewnętrzny serwer MCP firmy da się w ogóle podłączyć – wcześniej nie było to możliwe bez forka.
Adres jest sprawdzany jedną polityką w trzech momentach: przy zapisie wpisu, przy otwieraniu połączenia i przy każdym wywołaniu narzędzia. Wpis może dopuścić adres prywatny dla serwera w Twojej sieci, co otwiera zakresy RFC 1918 i nic więcej, więc metadane chmury pod 169.254.169.254 zostają zablokowane. Wpis z poświadczeniem musi mieć https już przy zapisie, zamiast zapisać się bez błędu i potem zawodzić przy każdym połączeniu. Wbudowany konektor da się wyłączyć dla całej instalacji z tej samej strony.
Sam serwer MCP też powstaje jednym poleceniem: npx create-ragen-connector generuje szkielet serwera, z którym Ragen się połączy, i wypisuje wiersz katalogu do wklejenia w panelu.
Guardraile napisane w panelu działają w czacie
O moderacji treści decydowała zmienna MODERATION_ENABLED, do której miał dostęp tylko ktoś utrzymujący instalację i której nikt nie widział z poziomu produktu. Teraz administrator platformy pisze regułę w panelu administracyjnym – wzorzec albo wbudowany detektor moderacji – włącza ją i reguła działa od następnej tury w każdej organizacji. Reguła może zablokować wiadomość z odmową w języku użytkownika, zamaskować dopasowanie, zanim zobaczy je model, albo zapisać je w logu i przepuścić turę.
Każda reguła powstaje wyłączona i w trybie logowania. Reguła, która od początku blokuje, to reguła, której odsetka fałszywych alarmów nikt nie zmierzył.
Zablokowana wiadomość nie trafia już do żadnego modelu. Reguły działały obok przepisywania pytania, żeby oszczędzić jedno wywołanie, więc odrzucona wiadomość była już wysłana do modelu przepisującego, którym w większości instalacji jest zewnętrzny dostawca. Teraz reguły idą pierwsze, w aplikacji i w publicznym API. Kosztuje to jedno wywołanie opóźnienia na turach z włączonymi regułami.
Jeśli utrzymujesz własną instalację: MODERATION_ENABLED nie jest już czytane, a jego odpowiednikiem jest reguła content-moderation w panelu. Przed aktualizacją uruchom npm run guardrails:preflight. Powie Ci, czy środowisko i panel się nie zgadzają, i nie przejdzie, jeśli włączenie reguły mogłoby zostać zapomniane. GUARDRAILS_DISABLED=1 zostaje jako wyłącznik awaryjny na usłudze.
Limit wiadomości liczy wiadomości
Miesięczny limit wiadomości liczy wywołania czatu, a trzy rodzaje pracy w tle były zapisywane jako wywołania czatu. Ragen Brain czytający dokumenty i sprawdzający strony pod kątem sprzeczności oraz worker piszący streszczenia, oceny gotowości do RAG i sugestie Optymalizacji – wszystko to zjadało limit wiadomości organizacji. Wgranie folderu PDF-ów mogło więc skończyć się odmową tur czatu.
Teraz to osobne kroki na stronie zużycia AI: „Brain” i „Document processing”. Oba nadal liczą się do limitów tokenów i kosztów, a wcześniejsze zużycie też zostało przeniesione, więc administrator zobaczy spadek liczby wiadomości w tym miesiącu. Limit kosztów z kolei w ogóle uwzględnia już przetwarzanie dokumentów: embeddingi, streszczenia, ocena i Optymalizacja były zapisywane z kosztem zero, a teraz są wyceniane z tej samej tabeli co czat (#1472, #1473).
2.0.0, a potem z powrotem 2.x
Ragen dostaje wydanie przy każdym merge’u i wersja doszła do 1.217.0, licząc 217 zwykłych podbić za nowe funkcje, więc numer przestał komukolwiek mówić, co się zmieniło. 2.0.0 zaczęło liczenie od nowa razem z regułą, która sprawia, że wydań jest mniej: praca schowana za wyłączoną flagą funkcji nie tworzy wydania, tworzy je dopiero włączenie flagi.
W ciągu kolejnych trzydziestu sześciu godzin trzy wewnętrzne zmiany wycofały po jednej zmiennej środowiskowej i uczciwie zapisały to w commicie, co przy domyślnych regułach robiło z każdej wersję główną: 3.0.0, 4.0.0, 5.0.0, ogłaszając zmiany łamiące u ludzi, których nic nie dotknęło. Te wydania wycofaliśmy, a numeracja wróciła do 2.1.0. Od teraz zmiana łamiąca to wersja pomniejsza, a pierwsza liczba rośnie tylko wtedy, gdy ktoś tak zdecyduje. Jeśli przypinasz wersję Ragena, wersja główna oznacza świadomy komunikat o Twojej aktualizacji. Obrazy opublikowane jako 3.x, 4.x i 5.0.0 zostają w rejestrze, a latest podąża za 2.x.
Ragen Brain, nadal za flagą
Ragen Brain jest domyślnie wyłączony, więc to dla instalacji, które go włączyły. Jego graf czyta się teraz po nazwach: tytuły nie nachodzą na siebie, stronę można znaleźć, wpisując fragment jej nazwy, a graf zajmuje całe okno. Dwa nowe przełączniki pozwalają pokazać go w trybie tylko do odczytu, czego potrzebuje organizacja demonstracyjna. Obok każdego ekranu Brain jest też asystent dla osoby, która go kuratoruje: odpowiada na pytania o to, co jest na ekranie, a zmiany proponuje jako karty do zatwierdzenia. Jest domyślnie wyłączony za własną flagą.
Krócej
- Next.js 16.3.8 z poprawkami krytycznej podatności w
next/og(Ragen go nie używa) i podatności SSRF o wysokiej wadze w optymalizacji obrazów (#1465) - Instrukcja asystenta wreszcie się zapisuje. Pole czyściło się w trakcie ładowania bieżącej wartości, więc zapis wysyłał pusty tekst, a serwer odpowiadał sukcesem
- Dokumenty zaindeksowane źle mówią o tym: tabela, której wiersze straciły nazwy kolumn, tekst odczytany jako surowe znaczniki, puste fragmenty albo awaryjny parser. Sprawdzenie nie wywołuje modelu i jest domyślnie włączone
- Ponowny embedding dokumentu zachowuje Twoje zmiany. Wcześniej czytał oryginalny plik, więc edytowany albo zoptymalizowany dokument odpowiadał starym tekstem
- Przy włączonym maskowaniu danych osobowych maskowane są też fragmenty tabel z Doclinga. Wcześniej trafiały do indeksu z nazwiskami i numerami. Dokumenty wgrane z maskowaniem warto przetworzyć ponownie
- Pliki Word, Excel i PowerPoint wgrane w czasie niedostępności Doclinga są czytane, a nie indeksowane jako surowe bajty. Pliki, których to dotyczy, wymagają ponownego przetworzenia
- Odpowiedź w czacie nie pokazuje już
<PL_PHONE_1>w miejscu numeru telefonu - Wgrywanie przeżywa zajęty albo restartujący się Docling: naraz parsowane są najwyżej cztery dokumenty, a przy
DOCLING_STRICT=1plik czeka na Docling do pół godziny, zamiast zawodzić po sześciu sekundach create-ragen-appproponuje RustFS jako własny magazyn obiektów, obok lokalnego dysku i konta S3- Panel mówi po niderlandzku i norwesku, co daje 17 języków, a powiadomienia przychodzą w Twoim języku, a nie zawsze po polsku
- Ocena gotowości do RAG liczy się na żądanie w Optymalizacji, a nie przy każdym wgraniu, co oszczędza jedno wywołanie modelu na plik. Można ją też wyłączyć
- Organizację można ustawić tak, żeby nikt nie usuwał wątków, dzięki czemu przykładowe rozmowy w demo zostają na miejscu
- Literówka w linku do dokumentu, wątku albo asystenta pokazuje „nie znaleziono” zamiast zastępować okno błędem aplikacji
Pełna lista wydań: GitHub Releases
Powiązane wpisy:
- Ragen: co dowieźliśmy w drugiej połowie września
- Ragen: co dowieźliśmy w pierwszej połowie września
- n8n pyta, Ragen odpowiada. Jak podpiąć firmową bazę wiedzy do automatyzacji
Chcesz zobaczyć to na swoich dokumentach? Umów bezpłatne demo – w 30 minut pokażemy Ragena na Twoim scenariuszu.