Wybór architektury RAG: Naive, Advanced, CRAG, GraphRAG, Agentic
Praktyczne porównanie sześciu architektur RAG wraz z zaletami, wadami i przypadkami zastosowania, a także czterostopniową ścieżką decyzyjną oraz sytuacjami, w których RAG nie jest odpowiednim narzędziem.
Źródła: How to Design a Production-Ready RAG System (Architecture + Tradeoffs)
Dlaczego RAG i dlaczego jeden projekt nie wystarcza
Agenci AI są zdolni do wykonywania zadań, jednak mogą tworzyć halucynacje i nie potrafią samodzielnie uzyskiwać dostępu do specjalistycznych lub czasowo aktualnych danych. Technologia Retrieval-Augmented Generation (RAG) rozwiązuje oba te problemy, umożliwiając opieranie odpowiedzi agenta na zweryfikowanej bazie wiedzy. Jednak RAG nie stanowi jedynego rozwiązania. Zwykłe wyszukiwanie wektorowe wystarcza do prostego bota FAQ, ale zawodzi przy złożonym rozumowaniu lub analizie obejmującej wiele dokumentów. Poniżej omówiono popularne architektury RAG oraz sposób wyboru odpowiedniej z nich w zależności od wymagań zadania.
Co robi RAG
RAG pobiera dokumenty z bazy wiedzy i wykorzystuje je do generowania bardziej trafnych odpowiedzi. Poniższy diagram pokazuje przepływ od przechowywania dokumentów, przez wyszukiwanie wektorowe, aż po generowanie treści przez model językowy.
Główna idea polega na połączeniu wyszukiwania informacji, które w tym schemacie odbywa się od przechowywania do ich odzyskiwania, z sztuczną inteligencją generatywną. Włączanie odpowiedniego kontekstu do promptu zapewnia, że model językowy pozostaje powiązany z rzeczywistymi informacjami. Może on skanować strony materiałów specyficznych dla danej dziedziny w ciągu sekund, dzięki czemu model językowy potrafi dokładnie i szybko odpowiedzieć na zapytanie użytkownika.
Typowy proces pracy składa się z dwóch faz. Faza offline polega na przyjmowaniu surowych danych i przygotowywaniu ich jako danych strukturyzowanych, nadających się do wyszukiwania. Faza online polega na odzyskiwaniu odpowiednich danych i odpowiadaniu na zapytanie. Warto dodać również trzecią fazę – pętlę zwrotną, w której odzyskany kontekst jest wielokrotnie oceniany.
Faza 1: przyjmowanie danych
Pierwsza faza przekształca surowe pliki w strukturyzowane, nadające się do wyszukiwania rekordy w bazie danych:
- Ładuj dane z takich źródeł jak PDF-y, Notion, SQL i Slack za pomocą narzędzi takich jak LlamaIndex lub LangChain.
- Oczyszczaj dane z niepotrzebnego materiału, takiego jak nagłówki, stopki i tagi HTML.
- Dziel długie dokumenty na sensowne fragmenty, na przykład po 500 słów każdy. Zbyt duże fragmenty mylą model, a zbyt małe tracą kontekst.
- Wbuduj każdy fragment za pomocą modelu do tworzenia wektorów (na przykład
text-embedding-3-smallod OpenAI), aby przekształcić tekst w wektory. - Stwórz indeks wektorów w bazie danych wektorowej takiej jak Pinecone lub Chroma, co umożliwia wyszukiwanie semantyczne na podstawie znaczenia.
Faza 2: wyszukiwanie i generowanie
Gdy użytkownik zadaje pytanie, cały proces odbywa się w ułamku sekundy:
- Transformacja zapytania. System przekształca pytanie, na przykład „Jak sformatować hasło?”, w wektor przy użyciu tego samego modelu embeddingu co w fazie 1.
- Poиск. Szuka w bazie danych wektorowej 3 do 5 fragmentów matematycznie najbliższych danemu pytaniu.
- Ponowna klasyfikacja. Model do ponownej klasyfikacji sprawdza wyniki ponownie, aby najlepsza odpowiedź znalazła się na górze.
- Wzbogacenie. Znalezione fragmenty są włączane do promptu modelu LLM. Typowy prompt informuje model, że jest pomocnym asystentem, przekazuje mu fragmenty jako kontekst, a następnie zadaje pytanie dotyczące sformatowania hasła.
- Generowanie. Model LLM czyta prompt wraz z kontekstem i tworzy odpowiedź opartą wyłącznie na dostarczonych informacjach.
Faza 3: informacje zwrotne
Wyniki wyszukiwania należy stale oceniać, aby zapobiec halucynacjom. Ocena określa, czy odpowiedź rzeczywiście opierała się na kontekście, a obserwowalność pokazuje dokładnie, który fragment spowodował błędną odpowiedź. Te informacje są wykorzystywane do udoskonalenia strategii dzielenia na fragmenty z Fazy 1.
Narzędzia według fazy
Narzędzia RAG stanowią elementy łączące twoje dane z modelem językowym i są klasyfikowane według etapu procesu, w którym są używane. Odpowiedni wybór zależy od fazy, nad którą pracujesz.
Tabela sortuje zestaw technologii RAG według fazy procesu.
Czy potrzebna jest baza danych wektorowych?
Nie do końca. Specjalistyczny magazyn wektorów nie jest obowiązkowy do budowy RAG – istnieją dwie prostsze metody. W ramach podejścia zero-DB kilka dokumentów jest dzielonych na fragmenty i przechowywanych w pamięci RAM. Jest to szybkie, bezpłatne i nie wymaga konfiguracji, ale pamięć jest wymazywana po ponownym uruchomieniu, a duże dokumenty przyspieszają proces. Podejście tradycyjnej bazy danych polega na przechowywaniu fragmentów tekstu w systemie takim jak PostgreSQL i wykonywaniu wyszukiwania słów kluczowych opartego na regułach. Dobra jest do unikalnych fraz, takich jak imię osoby czy numer identyfikacyjny, ale nie posiada zrozumienia semantycznego: użytkownik pytający o „ssaki” nie znajdzie dokumentu, który zawiera tylko „ psy”.
Porównanie sześciu architektur
Żadna konfiguracja nie jest odpowiednia we wszystkich sytuacjach. Niektóre zadania wymagają szybkości i prostoty, inne zaś głębszej analizy, kilku źródeł lub danych nie tekstowych, takich jak obrazy czy wykresy. Sześć głównych rozwiązań obejmuje większość potrzeb: Naive RAG, Advanced RAG, Modular RAG, Corrective RAG (CRAG), GraphRAG oraz Agentic RAG.
Naive RAG
Najprostsza forma polega na pobieraniu dokumentów na podstawie zapytania i przekazywaniu ich modelowi bez żadnych modyfikacji.
Na rysunku przedstawiono proste dopasowywanie podobieństwa wektorowego typu top-K. Zapytanie przekształca się w wektor, najbardziej podobne fragmenty pochodzą z bazy danych wektorowej i trafiają do modelu językowego. Poszukiwanie jest semantyczne, a złożoność niska.
- Zalety: zapewnia najszybsze odpowiedzi i najniższe koszty obliczeniowe, łatwo go konfigurować za pomocą bibliotek takich jak LangChain lub LlamaIndex, a także nadaje się do prostego wyszukiwania faktów w czystych dokumentach.
- Słabości: nieistotne fragmenty mogą dodawać szum, który myli model językowy, ma trudności z zadaniami złożonymi lub wieloetapowymi, a także nie potrafi się sam poprawić, więc nieudana próba wyszukiwania skutkuje fałszywą odpowiedzią.
- Najlepiej nadaje się do: prostych pytań i odpowiedzi w małych, uporządkowanych zestawach danych, takich jak pytania i odpowiedzi dotyczące dokumentów osobistych, wewnętrzne FAQ firmowe oraz proste aplikacje do rozmów z dokumentami.
Rozwinięty RAG
Ta wersja dodaje logikę, taką jak kierowanie zapytaniem i ponowne rankowanie w ramach kroku wyszukiwania, aby uzyskać lepszą dokładność.
Rysunek przedstawia transformację zapytania przed wyszukiwaniem oraz ponowne rankowanie po nim. Przed wyszukiwaniem zapytanie jest przepisywane, aby stało się jaśniejsze. Po wyszukiwaniu wyniki są rankowane i sprawdzane pod kątem poprawności, aby uzyskana odpowiedź była jak najbardziej istotna i dokładna. Szukanie odbywa się w sposób hybrydowy (wektorowy plus słowa kluczowe) z ponownym rankowaniem, a poziom złożoności jest średni.
- Mocne strony: lepiej radzi sobie z złożonymi pytaniami, wybiera odpowiednie podejścia do różnych sytuacji i zapewnia większą kontrolę nad procesem generowania odpowiedzi.
- Słabe strony: ponowna klasyfikacja zwiększa opóźnienia, kilka wywołań modelu na zapytanie podnosi koszty, istnieje więcej elementów wymagających konserwacji, a komponenty muszą być dostrojone, aby dobrze współpracować.
- Najlepsze zastosowanie: systemy o wysokiej dokładności, w których błędy są niedopuszczalne, takie jak profesjonalne bazy wiedzy i boty obsługi klienta.
Modularny RAG
Modularny RAG wykorzystuje strukturę typu „podłącz i używaj”, w której oddzielne moduły zajmują się różnymi etapami procesu pracy.
Wyróżnione komponenty to moduły wyszukiwania i pamięci. Taki podział systemu oznacza, że każdą jego część można dostosować bez konieczności przepisywania reszty: zespół może zastąpić istniejący mechanizm wyszukiwania innym, użyć silniejszego narzędzia do ponownego sortowania wyników lub innego generatora. Proces pozyskiwania danych może odbywać się z kilku źródeł, takich jak API, bazy danych i internet, a złożoność jest wysoka, ponieważ wymaga zaawansowanego warstwy orkiestracji.
- Mocne strony: każdy komponent jest łatwy do dostosowania, a jego elementy można ulepszać lub zastępować bez konieczności rozpoczynania wszystkiego od nowa.
- Słabe strony: koszty wdrożenia oraz złożoność architektury są bardzo wysokie i wymagają wcześniejszego planowania; orkiestracją musi zająć się silny zespół inżynierski, a różne wersje modułów mogą ze sobą kolidować.
Corrective RAG (CRAG)
CRAG został stworzony tak, aby ponownie sprawdzać swoje odpowiedzi i je korygować, gdy coś jest nie tak.
Proces obejmuje krok oceny z możliwością odwołania się do wyszukiwania w sieci. Model oceniający ocenia pobrane dokumenty. Gdy wynik jest zbyt niski, system odrzuca dane z wewnętrznej bazy danych i przeprowadza wyszukiwanie w sieci, aby znaleźć odpowiedź w innym miejscu – to pokazane jest linią przerywaną na rysunku. Jest to rozwiązanie o wysokiej złożoności ze względu na logikę rozgałęzień i połączenia z zewnętrznymi API.
- Mocne strony: słabe wyniki wyszukiwania są korygowane, zanim użytkownik je zobaczy, a dodatkowy warstwa kontroli jakości sprawia, że odpowiedzi są bardziej niezawodne i dokładne.
- Słabości: alternatywny proces wyszukiwania wymaga czasu i zasobów obliczeniowych, a system może wchodzić w nieskończony błąd, jeśli nigdy nie będzie zadowolony z znalezionych informacji.
- Najlepsze zastosowanie: prace o dużym znaczeniu, gdzie błędne lub przestarzałe informacje są nie do przyjęcia, takie jak badania medyczne i prawnicze.
GraphRAG
GraphRAG wykorzystuje graf wiedzy do strukturyzowania związków pomiędzy poszczególnymi informacjami i nie polega wyłącznie na podobieństwie tekstowym.
Diagram pokazuje przemierzanie grafu wiedzy oraz generowanie podsumowań grup informacyjnych. Po utworzeniu grafu system przeszukuje go w poszukiwaniu wzorców w danych, a nie tylko dopasowań słów, dzięki czemu może określić, w jaki sposób Jednostka A jest powiązana z Jednostką B, nawet jeśli występują one w różnych dokumentach. Złożoność jest bardzo wysoka, ponieważ konieczne jest utworzenie i utrzymanie zorganizowanej bazy danych grafowych.
Druga ilustracja, zaczerpnięta z materiałów Microsoft Research, pokazuje graf wiedzy stworzony przez model LLM na podstawie prywatnego zbioru danych przy użyciu GPT-4 Turbo.
- Mocne strony: radzi sobie z złożonymi pytaniami łączącymi kilka koncepcji, unika rozproszonych odpowiedzi i może ujawnić nieoczekiwane, ale istotne wyniki poprzez łączenie poszczególnych elementów.
- Słabe strony: budowa takiego grafu wymaga znacznego wysiłku, jest wolniejsza od zwykłego RAG, a jej jakość ogranicza wydajność, ponieważ zależy ona wyłącznie od jakości połączeń w grafie.
- Najlepsze zastosowania: analiza całościowej sytuacji oraz rozumowanie wieloetapowe w różnych źródłach danych, np. w dziennikarstwie śledczym, wykrywaniu oszustw czy odkrywaniu leków.
Agentic RAG
W tym dynamicznym podejściu agent AI pełni rolę koordynatora, który planuje, pobiera i udoskonala odpowiedź.
Proces pracy pokazuje agenta koordynującego, który wykorzystuje narzędzia do rozumowania wieloetapowego. Zamiast od razu bierać pierwsze istotne dokumenty, planuje podejście, decyduje, co należy zbadać, i działa za pomocą swoich narzędzi. Dzieli zadanie na mniejsze kroki, przeszukuje różne źródła danych, sprawdza, czy uzyskane informacje odpowiadają na pytanie, i kontynuuje poszukiwania, jeśli tak nie jest.
- Mocne strony: nadaje się do rozumowania wieloetapowego, podejmuje inteligentne decyzje dotyczące gromadzenia informacji i może poprawić wyniki przy złożonych zapytaniach.
- Słabe strony: liczne wyszukiwania zwiększają koszty, a praca w stylu badawczym spowalnia reakcje.
- Najlepsze zastosowanie: zadania wymagające metodycznego planowania, takie jak szczegółowa analiza przypadków w badaniach prawniczych lub analiza finansowa łącząca dane rynkowe z informacjami regulacyjnymi.
Czteroetapowa ścieżka decyzyjna
Żadna zasada nie pasuje do wszystkiego, ale wspólny podejście pomaga w realizacji danego zadania.
Diagram przepływowy pomaga architektom w doborze odpowiedniej metody – Simple, Graph, Corrective lub Advanced RAG – w zależności od wymagań zadania. Kroki są następujące:
Krok 1: test złożoności. Czy odpowiedź znajduje się w jednym dokumencie? Jeśli tak, najlepszym rozwiązaniem jest No-DB RAG dla małych dokumentów lub Simple RAG – jest szybki, tani i łatwy w implementacji.
Krok 2: test relacji. Czy aby udzielić odpowiedzi konieczne jest zrozumienie złożonych hierarchii lub ukrytych powiązań pomiędzy różnymi źródłami danych? W takim przypadku GraphRAG mapuje te zasoby i powiązania, których nie dostrzeże zwykła wyszukiwarka tekstowa. Przykład: „Które działy są dotknięte polityką A i kim są ich kierownicy?”. W tym przypadku konieczne jest połączenie danych o działach z danymi o pracownikach, a GraphRAG przedstawia je jako powiązane entity.
Krok 3: test niezawodności i rozumowania. Czy system może sobie pozwolić na błędy? Tam, gdzie kluczowa jest ekstremalna precyzja, Corrective RAG lub Self-RAG wprowadzają specjalny etap, który sprawdza, czy uzyskane dane rzeczywiście odpowiadają na pytanie, zanim trafią do użytkownika. Jeśli taka zadanie wymaga również wieloetapowego rozumowania, Agentic RAG wykorzystuje swoje agenty do planowania i samodoskonalenia.
Krok 4: kompromis między wydajnością a kosztem. Gdy priorytetem jest opóźnienie, najlepiej sprawdza się prostsze rozwiązania, takie jak No-DB, Naive lub Simple RAG. Gdy jakość ma większe znaczenie niż koszt, choć nie na poziomie ekstremalnej precyzji z Kroku 3, Advanced RAG lepiej rozumie intencję założoną w zapytaniu niż prostsze rozwiązania, ale kosztem dłuższego czasu przetwarzania.
Kiedy nie używać RAG
RAG umożliwia modelom językowym generowanie odpowiedzi uwzględniających kontekst na podstawie ogromnych, prywatnych zbiorów danych bez konieczności ciągłego ponownego szkolenia. Nie jest jednak przydatny we wszystkich przypadkach, szczególnie gdy zadanie wymaga głębokiego rozumowania, kreatywnej syntezy lub opanowania wzorców językowych, a nie tylko wyszukiwania informacji w dokumencie. W takich sytuacjach zazwyczaj radzi sobie lepiej bez niego:
- Rozszerzone rozumowanie dotyczące zdrowego rozsądku, etycznych niuansów lub ogólnego zachowania ludzi. Wystarczają wewnętrzne parametry modelu przeszkolonego wcześniej.
- Zapytania o wiedzę ogólną dotyczące rzeczy, które nie zmieniają się od dziesięcioleci. Model przeszkolony wcześniej jest wystarczający, a RAG tylko wydłuża czas reakcji bez poprawy dokładności.
- Pisanie kreatywne o określonym tonie i stylu. Lepiej używać modeli przeszkolonych wcześniej lub metod fine-tuning, ponieważ RAG jest tu nadmiarowy.
W tabeli na końcu porównano wydajność modeli RAG, modeli po dopasowaniu oraz modeli do rozumowania.
Literatura pokrewna
- AegisOps: Autonomiczny agent SRE z czterema warstwami pamięci — Jak agent LangGraph ReAct rozwiązuje incydenty w Kubernetes, wykorzystując pamięć epizodyczną pgvector, poziomy autonomii kontrolowane przez zasady, szesnaście narzędzi oraz pełny ślad audytowy.
- Budowanie pipeline ETL do użycia w produkcji dla RAG przy użyciu LangChain i FAISS — Projektowanie procesów dzielenia na fragmenty, tworzenia embeddingów oraz indeksowania wektorowego dla 40 000 plików PDF z wymogami zgodności, wraz z mechanizmami ponawiania prób, kolejkami wiadomości błędowych, metrykami Prometheus oraz mierzalnymi wskaźnikami wydajności.
- Praktyczne wskazówki: Budowanie systemu detekcji oszustw opartego na agentach gotowego do użycia w produkcji — Szczegółowy przewodnik po praktycznych wskazówkach dotyczących budowy systemu detekcji oszustw opartego na agentach gotowego do użycia w produkcji: umowy, sprawdzania oraz gotowe fragmenty kodu przeznaczone dla zespołów wdrażających ten model.
- Dartboard RAG: Co robić, gdy Top-K zwraca ten sam fragment trzy razy — Zwykłe wyodrębnianie elementów za pomocą Top-K może zwracać niemal identyczne fragmenty. Dartboard RAG bierze pod uwagę zarówno istotność, jak i różnorodność; oto algorytm, kod oraz sytuacje, w których należy go stosować.
- Inżynieria narzędzi dla agentów AI: budżety, uprawnienia i oceny dla agentów produkcyjnych — Większość agentów zawodzi w środowisku produkcyjnym z powodu słabych narzędzi, a nie modeli. Dowiedz się o pętlach działania, poziomach ryzyka, budżetach, warstwach kontekstowych oraz ocenach bezpieczeństwa, które zapewniają bezpieczeństwo agentom.
- Jak działa RAG w środku: dzielenie na fragmenty, embeddingi, wyszukiwanie wektorowe i ponowna sortacja — szczegółowe omówienie Retrieval-Augmented Generation: dzielenie na fragmenty, embeddingi, bazy danych wektorowych, kompletowanie zapytań, ponowna sortacja, ograniczenia związane z halucynacjami oraz krótka notatka o KAG.