RAG, dopasowanie szczegółowe czy agenci: wybór odpowiedniego warstwy i kolejności jej budowy
RAG kontra fine-tuning kontra agenci AI: co robi każdy z nich, koszty, opóźnienia i możliwe błędy, zasady przybliżone, oraz asystent HR pokazujący kolejność ich budowy.
Źródła: RAG vs Fine-Tuning vs AI Agents: When to Use What in Real-World AI Systems
W niemal każdym projekcie opartym na LLM prędzej czy później pojawiają się dwa pytania. Pierwsze dotyczy tego, czy należy pobierać dokumenty, czy dostosowywać model. Drugie brzmi, czy produkt potrzebuje agenta, czy wystarczy bardziej inteligentny prompt. Zaskakująco często na oba te pytania udzielane są złe odpowiedzi, i to nie tylko przez początkujących. Doświadczeni inżynierzy spędzali tygodnie na dostosowywaniu modelu, aby ten zapamiętał fakty, które pobranie z zewnętrznych źródeł dałoby się zrobić w ciągu popołudnia. Inne zespoły otaczały to, co w rzeczywistości było zwykłym punktem obsługi pytań, ramami agenta, po prostu dlatego, że tematem każdego spotkania w tym kwartale byli agenci.
Mniej ekscytująca rzeczywistość polega na tym, że mechanizmy pobierania danych, dopracowywania modeli oraz agenci nie są konkurentami o to samo zadanie. Każdy z nich rozwiązuje odrębny problem, a systemy używane przez prawdziwych użytkowników zazwyczaj łączą dwa z nich lub wszystkie trzy, przy czym każda część wykonuje to, w czym jest najlepsza. W dalszej części omówiono, jak każdy z tych elementów funkcjonuje wewnętrznie, jakie są ich koszty, w jaki sposób zespoły je nadużywają, jak elementy te ze sobą współpracują, oraz mały projekt pokazujący kolejność ich budowy.
Co faktycznie robi każdy z nich
Generowanie wzbogacone pobieraniem danych
Mechanizm pobierania danych nie wpływa na sam model. Zmienia jedynie to, co model może przeczytać przed udzieleniem odpowiedzi.
Gdy przychodzi pytanie, system przekształca je w embedding – numeryczną reprezentację jego znaczenia – i szuka w bazie danych wektorowych takich jak Pinecone, Qdrant, FAISS lub Azure AI Search najbliższych pod względem znaczenia przechowywanych fragmentów. Te fragmenty są umieszczane w prompt jako kontekst, a model odpowiada na podstawie tych informacji, a nie tego, co przyswoił podczas szkolenia wstępnego.
Wartość leży w uniknięciu błędów. Modele najłatwiej wymyślają szczegóły, gdy są zmuszone odpowiadać na podstawie pamięci wewnętrznej, szczególnie w przypadku tematów nowych, mało znanych lub specyficznych dla danej firmy. Dostarczanie modelowi tekstu referencyjnego przy każdym wywołaniu oznacza, że analizuje aktualne materiały i nie zgaduje.
Proces ma stałą strukturę: pobieranie dokumentów, dzielenie ich na fragmenty, włączanie tych fragmentów, przechowywanie wektorów, przeprowadzanie wyszukiwania podobieństwa (często łączonego z wyszukiwaniem słów kluczowych), opcjonalne ponowne sortowanie kandydatów, składanie promptu i generowanie wyniku.
Dopracowanie modelu
Dopracowanie modelu różni się charakterem, a nie tylko stopniem. Model wstępnie nauczony jest dalej szkoleny na dobrze dobranej serii własnych przykładów, zazwyczaj parach danych wejściowych i pożądanego wyniku, które ilustrują dokładne zachowanie wymagane. Zmieniają się wagi modelu, a w przypadku technik LoRA i QLoRA zmienia się niewielka liczba wag adapterów dodanych do zamrożonej bazy modelu.
Dobrze sprawdza się przy nauczaniu określonych sposobów postępowania: tonu głosu, sztywnego formatu wyjściowego, specyficznego sposobu rozwiązywania określonego typu zadań lub radzenia sobie z przypadkami krawędziowymi w dziedzinie, gdzie istnieją tysiące oznaczonych przykładów. Celem jest przekształcenie domyślnego zachowania tak, aby te same instrukcje nie musiały być powtarzane w każdym zapytaniu, a nie dodawanie faktów.
Słabo radzi sobie z tym, co ciągle się zmienia. Katalog produktów aktualizowany co tydzień nie może sensownie znajdować się w wagach modelu, ponieważ wiedza zamraża się po zakończeniu szkolenia, a każda aktualizacja oznacza konieczność ponownego przetwarzania.
Agenci
Agent umieszcza model w pętli: obserwuje, rozumuje, działa, obserwuje wynik, ponownie rozumuje i kontynuuje, aż zostanie osiągnięty cel lub zostanie uruchomiona zasada zatrzymania. Model nie generuje już pojedynczej odpowiedzi. Decyduje, co robić dalej, często poprzez korzystanie z narzędzi takich jak API, funkcje, bazy danych i inne usługi, a ich wyniki wprowadza do swojej kolejnej decyzji.
To właśnie ta pętla przekształca system, który odpowiada na pytania, w system, który wykonywał zadania. LangGraph, CrewAI oraz ręcznie napisana pętla ReAct – wszystkie implementują jej wersję: model zapisuje myśl, wybiera narzędzie, narzędzie jest uruchamiane, wynik wraca do kontekstu, a cykl powtarza się, dopóki agent nie uzna, że skończył, lub nie osiągnie limitu kroków. Limit kroków powinien zawsze być ustawiony.
Kompaktowy sposób na odróżnienie tych trzech elementów:
- Retrieval dostarcza właściwe informacje.
- Doprecyzowanie zapewnia właściwe zachowanie.
- Agenci zapewniają odpowiedni stopień autonomii.
Ramię w ramię
Różnice widoczne są w kilku aspektach:
- Aktualizacje wiedzy. Pobieranie danych odbywa się w czasie rzeczywistym, wystarczy bowiem odświeżenie magazynu wektorów. Doprecyzowana wiedza pozostaje nieruchoma aż do następnego treningu. W przypadku agentów zależy to od tego, co pobierają lub wywołują.
- Koszt. Pobieranie danych ma umiarkowany charakter: wymagane są embeddingi, przechowywanie oraz dodatkowe tokeny wejściowe. Doprecyzowanie jest kosztowne ze względu na selekcję danych, obliczenia, czas wykorzystania GPU oraz ocenę. Koszt działania agentów waha się od umiarkowanego do wysokiego, ponieważ każde zadanie wymaga kilku wywołań modelu plus opłat za użycie narzędzi.
- Złożoność. Wyszukiwanie wymaga dzielenia na fragmenty, embeddingu oraz dostosowywania algorytmu wyszukiwania. Dostosowywanie modelu wymaga przygotowania danych, infrastruktury treningowej, pętli oceny oraz ochrony przed nadfittingiem. Agenci potrzebują planowania, integracji narzędzi, obsługi błędów oraz kontroli pętli.
- Czas konfiguracji. Dni na wyszukiwanie, tygodnie na dostosowywanie modelu, a od dni do tygodni na tworzenie agentów – w zależności od procesu pracy.
- Najlepiej nadaje się do: odpowiadania na pytania, wyszukiwania dokumentów oraz uzupełniania informacji w procesie wyszukiwania. Do dostosowywania modelu – do kontroli tonu, formatowania oraz rozumowania w określonym dziedzinie. Do agentów – do zadań wieloetapowych, automatyzacji oraz wykorzystania narzędzi.
- Opóźnienie. Wyszukiwanie dodaje jeden krok w procesie przetwarzania, zazwyczaj od 50 do 300 milisekund. Dostosowywanie modelu nie wpływa na czas przetwarzania w porównaniu z modelem bazowym. Agenci często wymagają kilku kroków i mogą potrzebować kilku sekund na wykonanie zadania.
- Konserwacja. Pobieranie informacji oznacza utrzymywanie bazy wiedzy w aktualnym stanie. Dostosowywanie polega na okresowym ponownym szkoleniu modelu w zależności od zmieniających się potrzeb. Agenty to aktualizacja procesów pracy, narzędzi oraz instrukcji.
- Typowe problemy. Zła funkcja pobierania informacji skutkuje nieistotnym kontekstem i błędną odpowiedzią. Nadmierna adaptacja sprawia, że zoptymalizowany model staje się wrażliwy na nieznane dane wejściowe. Agenty mogą wpadać w błędną pętlę, wywoływać niewłaściwe narzędzia lub generować nieograniczone koszty.
Trzy sytuacje, po jedna dla każdej
Chatbot obsługi klienta integrujący się z dokumentacją produktu ułatwia wyszukiwanie informacji. Firma programistyczna posiadająca 400 stron dokumentacji, dzienników zmian i zasad mogłaby dostosować model do tego tekstu, ale taki dostosowany model stałby się przestarzały już przy następnej wersji produktu. Umieszczanie każdego fragmentu tekstu w bazie wektorowej unika tego problemu. Gdy klient pyta, czy API obsługuje żądania zbiorcze, system wybiera trzy najbardziej istotne sekcje, model odpowiada na podstawie nich i wskazuje odpowiednią stronę. Po zmianach w dokumentacji w następnym cyklu rozwoju ponowne umieszczenie fragmentów tekstu w bazie wektorowej odświeża odpowiedzi bez konieczności ponownego szkolenia modelu.
Asystent do pisania w stylu domowym nadaje się do drobnej kalibracji. Firma medialna chce streszczenia w określonym stylu: specyficzny rytm zdań, brak pierwszej osoby oraz ustalona liczba kluczowych punktów na początku. Pytania sterujące dają dobre wyniki, ale z czasem tracą skuteczność podczas dłuższych sesji. Szkolenie modelu na około 2000 parach streszczeń edytowanych przez ludzi sprawia, że generuje on tekst zgodny z markowym stylem w sposób niezawodny, bez konieczności wklejania przewodnika stylowego do każdego zapytania.
Weryfikacja kandydatów to zadanie agenta. Startup zajmujący się rekrutacją chce, aby system sprawdził danego kandydata i umówił rozmowę, jeśli spełnia wymagania, a reszta zadziałała automatycznie. Agent czyta CV, porównuje je z wymaganiami stanowiska za pomocą wewnętrznej API do oceniania, sprawdza kalendarz kierownika rekrutacji, pisze i wysyła e-mail z prośbą o umówienie spotkania oraz zapisuje wynik w systemie do śledzenia aplikantów. Jedna instrukcja obejmuje cały proces, a nikt nie ingeruje w poszczególne kroki.
W praktyce często występuje taki podział zadań. Projekty oparte na intensywnym pobieraniu danych zajmują się realizacją konkretnych działań, agenci odpowiadają za koordynację, a doprecyzowanie działań stosuje się tylko wtedy, gdy proste instrukcje nie są w stanie utrzymać spójnego zachowania systemu.
Jak ze sobą współpracują
Te trzy warstwy nie są wzajemnie wykluczające się. Najbardziej zaawansowane systemy łączą je ze sobą, przy czym żądanie przepływa od agenta, który planuje, przez mechanizm pozyskiwania informacji dostarczających fakty, aż do dostosowanego modelu, który formułuje wynik.
User Query
↓
Agent (decides what needs to happen — plan the steps)
↓
RAG (retrieves relevant knowledge, if the step needs facts)
↓
LLM (fine-tuned, if tone/format/behavior consistency matters)
↓
Action (respond to user, call a tool, trigger a downstream workflow)
↓
Agent (evaluates result → loop again or stop)
W środowisku obsługi klienciów proces wygląda w następujący sposób: przychodzi wiadomość, a agent klasyfikuje jej cel, dochodząc do wniosku, że potrzebne są informacje o produkcie. System wyszukiwania pobiera odpowiednie fragmenty dokumentacji. Dostosowany model sporządza odpowiedź w stylu marki. Następnie agent ocenia, czy poziom pewności jest wystarczająco wysoki, aby wysłać odpowiedź automatycznie, czy też należy przekazać zadanie człowiekowi, a na koniec rejestruje tę wymianę w CRM.
Usunięcie któregokolwiek z tych elementów powoduje powstanie luki. System wyszukiwania bez agenta nie potrafi zdecydować, kiedy szukać informacji, a kiedy działać. Agent bez możliwości wyszukiwania działa ślepo, nie znając nic poza danymi treningowymi. Dostosowany model bez możliwości wyszukiwania generuje pewne siebie, dobrze sformatowane odpowiedzi, które mogą być przestarzałe.
Koszt każdego rozwiązania
Poniższe liczby przedstawiają jedynie orientacyjne wartości, ponieważ rzeczywiste koszty zależą od skali i dostawcy.
W przypadku wyszukiwania kosztem początkowym jest umieszczenie korpusu, albo raz na zawsze, albo stopniowo w miarę wzrostu ilości dokumentów. Koszty operacyjne to hosting bazy danych wektorowej według określonej taryfy oraz dodatkowe tokeny za uzyskany kontekst przy każdej prośbie. Jest to najtańsze rozwiązanie pod względem wartości dostarczanej, dlatego większość zespołów powinna zacząć od niego.
Przy drobnej kalibracji dużym kosztem początkowym są często dane: zbieranie i oznaczanie wysokiej jakości przykładów do szkolenia jest kosztowne. Następne są koszty obliczeniowe związane z cyklami szkolenia i oceny. Później następuje ponowne szkolenie, gdy zachowanie musi ulec zmianie, oraz hosting modelu dostosowanego pod potrzeby, chyba że używa się LoRA na wspólnej bazie. Wymaga to największej początkowej inwestycji i najmniej toleruje błędów, ponieważ słabe dane treningowe bezpośrednio wpływają na kiepskie zachowanie modelu poprzez jego wagi.
Dla agentów konfiguracja obejmuje projektowanie procesów pracy, integrację narzędzi oraz testowanie scenariuszy awarii. Koszty operacyjne są szczególnie problematyczne, ponieważ każdy krok agenta to kolejna wywołanie modelu. Zadanie składające się z pięciu kroków może kosztować od pięciu do dziesięciu razy więcej niż pojedyncze zapytanie o pobranie danych, a pętla bez ograniczeń liczby iteracji może prowadzić do niekontrolowanych wydatków. Koszt odzwierciedla złożoność zadania, a nie tylko jego objętość użytkowania.
W praktyce pobieranie danych jest zazwyczaj najtańszym sposobem na maksymalne zmniejszenie ilości halucynacji. Dopełniająca kalibracja opłaca się tylko wtedy, gdy spójne zachowanie jest rzeczywistym wymogiem produktu, a nie dodatkowym udogodnieniem. Agenty uzasadniają cenę za zadanie tylko wtedy, gdy praca wymaga podjęcia kilku decyzji i wykonania kilku działań, a nie wtedy, gdy wystarczyłoby jedno dobrze uzasadnione wywołanie.
Wskazówki przy wyborze
- Wybierz metodę pobierania danych, gdy informacje zmieniają się często. Dokumenty, zasady, katalogi, ceny i zapasy, które są aktualizowane co tydzień lub co dzień, dobrze pasują do tej metody, natomiast słabo do drobnej kalibracji modelu.
- Wybierz drobną kalibrację modelu, gdy ważniejsze jest zachowanie niż wiedza. Jeśli model zna dane z danej dziedziny, ale mimo dobrych instrukcji nadal używa niewłaściwego tonu, formatu lub wzorca rozumowania, problem leży w zachowaniu modelu.
- Wybierz agenta, gdy zadanie wymaga kilku kroków lub działań w rzeczywistym świecie. Odpowiedź na pytanie nie wymaga tego, natomiast ustalenie, co należy zrobić, a następnie wykonanie tych działań w różnych systemach zapewne tak.
- Połącz metodę pobierania danych z drobną kalibracją, gdy potrzebne są zarówno wiarygodne fakty, jak i spójny ton komunikacji – co jest bardzo częste w produktach skierowanych do klientów.
- Połącz metodę pobierania danych z agentem, gdy zadanie wymaga zarówno faktów, jak i decyzji, przy czym agent decyduje, co należy sprawdzić i kiedy podjąć działanie.
Ta sama logika mieści się w dwóch krótkich schematach blokowych. Pierwszy sprawdza, czy odpowiedź zależy od informacji, które często się zmieniają.
Does the answer depend on information that changes often?
YES → RAG
NO ↓
Druga pyta o spójność zachowania oraz o to, czy zadanie obejmuje kilka kroków, czy też rzeczywiste działania.
Does the model need to consistently behave/sound a certain way,
and prompting alone isn't holding that consistency?
YES → Fine-tuning
NO ↓Does the task require multiple steps, tool calls, or real actions
(not just answering a question)?
YES → Agent (likely combined with RAG, and fine-tuning if voice matters)
NO → A single well-prompted LLM call is probably enough
Niewielki projekt pokazujący funkcjonalność
Weźmy przykład wewnętrznego asystenta ds. HR.
- Zacznij od wyszukiwania informacji. Umieść podręcznik pracownika, zasady urlopu chorobowego oraz dokumenty dotyczące świadczeń w bazie wektorowej. Pracownicy mogą wtedy zapytać, ile dni chorobowych mają do dyspozycji, i otrzymać uzasadnioną, opartą na źródłach odpowiedź. To rozwiązuje około 70 procent przypadków użycia i zajmuje kilka dni.
- Dodaj dopracowanie tylko wtedy, gdy pojawi się luka. Załóżmy, że dział HR chce, aby każda odpowiedź miała określony, empatyczny ton oraz ścisły format: „Oto zasady, oto co to oznacza dla Ciebie”, ale pytania stale odbiegają od tego schematu. Mały model dopracowany na kilkuset starannie wybranych parach pytań i odpowiedzi w tym stylu zamknie tę lukę.
Kolejność ta jest celowa. Najpierw następuje wyszukiwanie, ponieważ jest najtańsze i obejmuje najszerszy zakres działań. Dopiero gdy pojawi się rzeczywisty rozdźwięk w zachowaniu, stosuje się dostosowywanie modelu. Agenci są używani na końcu, i to tylko wtedy, gdy zadanie naprawdę wymaga wieloetapowych działań.
Częste błędy
- Doprecyzowanie tam, gdzie potrzebne jest pobieranie informacji. Zespoły starają się włączyć wagi wiedzy do modelu, gdy rzeczywisty problem polega na braku dostępu do aktualnych informacji. Skutkiem jest wolniejsza praca, znacznie wyższe koszty oraz dane przestarzałe już po pierwszym użyciu.
- Agenci bez określonego procesu pracy. Niejasny cel w połączeniu z nieograniczonymi narzędziami sprawia, że agent błądzi, powtarza działania i zachowuje się nieprzewidywalnie. Ograniczone narzędzia, jasne warunki zatrzymania oraz wyraźny limit kroków rozumowania pomagają utrzymać go w ryzach, podczas gdy prośba o samodzielne rozwiązanie problemu nie zastępuje określonego procesu.
- Ignorowanie opóźnień i kosztów. Każde pobranie informacji oraz każdy krok agenta oznaczają dodatkową podróż i większą liczbę tokenów do opłacenia. Dema może wyglądać doskonale, ale w warunkach produkcyjnych może wymagać 12 sekund i sześciu wywołań modelu, aby uzyskać jedną odpowiedź.
Kierunek rozwoju
Przemysł wyraźnie zmierza w stronę pracowniczych procesów opartych na agentach, czyli systemów, które planują, działają i sprawdzają postępy bez konieczności ciągłego sterowania. Kolejnym krokiem jest podejście hybrydowe: wykorzystanie funkcji wyszukiwania do znajdowania odpowiedzi, dostosowań w celu ustabilizowania zachowania oraz długotrwałej pamięci, dzięki której agent może przypominać sobie wcześniejsze interakcje zamiast zaczynać od zera przy każdej sesji.
Widać wyraźną zmianę od chatbotów w kierunku tego, co niektórzy teraz nazywają pracownikami AI – systemami, które wykonywają ciągłą pracę w różnych narzędziach i na przestrzeni czasu, zamiast czekać na pytanie. Osiągnięcie tego etapu ma niewiele wspólnego z wyborem najbardziej efektownej techniki. Zależy to od zrozumienia, co każda część robi dobrze, oraz od celowego łączenia ich, zaczynając od najprostszej warstwy, która rozwiązuje problem.
Wybór nie dotyczył nigdy kwestii pobierania danych kontra dopracowywania kontra agentów. Prawdziwe pytanie brzmi, jaką kombinację potrzebuje dany system i w jakiej kolejności należy go budować.
Literatura pokrewna
- Chroma Context-1: Sub-agent do wyszukiwania o wielkości 20B dla tańszego i bardziej skutecznego RAG — Jak Chroma Context-1 o wielkości 20B funkcjonuje jako sub-agent służący wyłącznie do wyszukiwania, który usuwa swój własny kontekst, jak został wytrenowany, co brakuje bez tego rozwiązania oraz w czym ulega ograniczeniom.
- Praktyczne notatki: Trzy poziomy usług RAG w Google Cloud: wyszukiwanie wektorowe, silnik RAG oraz odzyskiwanie informacji przez agenta — Szczegółowy przewodnik po praktycznych notatkach dotyczących trzech poziomów usług RAG w Google Cloud: wyszukiwanie wektorowe, silnik RAG oraz odzyskiwanie informacji przez agenta, wraz z kontraktami, sprawdzaniami oraz miejscami na kod do wstawić.