Robocikowo>ROBOCIKOWO
Mechanizm rozszerzający

RAG

Architektura AI łącząca modele językowe z zewnętrzną bazą wiedzy w celu generowania dokładniejszych odpowiedzi.
Kluczowa innowacja
Połączenie wstępnie wytrenowanego modelu generatywnego z różniczkowo trenowalnym mechanizmem wyszukiwania dokumentów z zewnętrznej nieparametrycznej pamięci, umożliwiające dynamiczne uzupełnianie wiedzy parametrycznej modelu bez konieczności ponownego treningu na nowych danych.
Kategoria
Mechanizm rozszerzający
Poziom abstrakcji
Pattern
Poziom operacji
InferencjaSystem
Zastosowania
Systemy pytań i odpowiedzi nad dokumentami korporacyjnymiChatboty z dostępem do aktualnej wiedzyWsparcie prawne i medyczne oparte na dokumentacjiWyszukiwarki semantyczneAsystenci kodu z dostępem do repozytoriów

Jak działa

Zapytanie użytkownika jest zamieniane na wektor osadzenia, następnie przeszukiwana jest baza wektorowa w celu znalezienia najbardziej podobnych fragmentów dokumentów. Pobrane fragmenty są dołączane do promptu, a model generuje odpowiedź na ich podstawie.

Rozwiązany problem

Modele językowe mają wiedzę zamrożoną w czasie treningu i nie znają aktualnych danych ani dokumentów prywatnych. RAG rozwiązuje to przez dynamiczne wzbogacanie kontekstu modelu o pobrane fragmenty dokumentów.

Komponenty

RetrieverWybór podzbioru k dokumentów z dużej kolekcji do dalszego kondycjonowania generacji.

Komponent odpowiedzialny za wyszukiwanie najbardziej relewantnych dokumentów lub fragmentów z zewnętrznej bazy wiedzy, na podstawie zapytania użytkownika. W oryginalnym paperze Lewis et al. jest to Dense Passage Retrieval (DPR) — gęsty dwu-enkoderowy model (jeden enkoder dla zapytania, drugi dla dokumentów). W nowoczesnych pipeline'ach RAG retriever używa wstępnie obliczonych gęstych embeddingów i ANN search (np. FAISS) lub rzadkich metod (BM25), albo kombinacji obu (hybrid search).

Dense retrieval (DPR, embedding-based)Zapytania i dokumenty są mapowane do gęstych wektorów przez enkodery; podobieństwo mierzone przez iloczyn skalarny lub cosinus. Stosowane w oryginalnym RAG (DPR) i nowoczesnych pipeline'ach z FAISS.
Sparse retrieval (BM25, TF-IDF)Klasyczne rzadkie metody wyszukiwania informacji oparte na dopasowaniu słów kluczowych. Często stosowane jako komponent w hybrid search.
Hybrid retrievalKombinacja gęstego i rzadkiego retrievera, typowo z re-rankingiem wyników. Zapewnia lepszą precyzję niż same metody gęste lub rzadkie.

Oficjalna

Indeks dokumentów (Vector Store)Przechowywanie zewnętrznej nieparametrycznej wiedzy w formie wyszukiwalnych reprezentacji wektorowych.

Baza danych przechowująca dokumenty lub ich fragmenty (chunki) wraz z preobliczonymi embeddingami wektorowymi, umożliwiająca efektywne wyszukiwanie przybliżone najbliższego sąsiada (ANN). W oryginalnym RAG indeks to FAISS z embeddingami DPR. W nowoczesnych implementacjach stosowane są wyspecjalizowane bazy wektorowe (np. Pinecone, Weaviate, ChromaDB, Qdrant, pgvector).

Oficjalna

Generator (model języka)Generacja odpowiedzi ugruntowanej w pobranych dokumentach.

Generatywny model języka kondycjonujący swoje wyjście na podstawie wejściowego zapytania oraz pobranych dokumentów. W oryginalnym RAG jest to BART (seq2seq Transformer). W nowoczesnych pipeline'ach RAG jest to dowolny LLM (GPT-4, Llama, Gemini itp.) z dołączonym kontekstem w prompcie. W oryginalnym RAG generator jest trenowany end-to-end razem z retrieverem; w nowoczesnych zastosowaniach jest zazwyczaj zamrożony.

Oficjalna

Moduł chunkoowania i indeksowaniaPrzygotowanie zewnętrznych dokumentów do efektywnego przeszukiwania przez retriever.

Komponent offline odpowiedzialny za podział źródłowych dokumentów na mniejsze fragmenty (chunki), obliczenie ich embeddingów i zaindeksowanie w bazie wektorowej. Jakość chunkoowania (rozmiar chunka, overlap) ma bezpośredni wpływ na jakość retrieval. Nie był wyróżnionym komponentem w oryginalnym RAG (który używał gotowych pasaży Wikipedii), ale jest kluczowym elementem nowoczesnych pipeline'ów RAG.

Oficjalna

Implementacja

Pułapki implementacyjne
Niedopasowanie embeddingów zapytania i dokumentu (asymetria enkodera)Krytyczna

Jeśli model embeddingu używa różnych enkoderów lub różnej tokenizacji dla zapytań i dokumentów (asymetryczne modele jak DPR), generowanie embeddingów dokumentów enkoderem zapytań (lub odwrotnie) daje złe wyniki retrieval. Modele symetryczne (np. SBERT) są odporniejsze na ten błąd.

Rozwiązanie:Używać modelu embeddingu zgodnie z dokumentacją: asymetrycznych modeli (DPR, E5) z właściwymi enkodery dla zapytań i dokumentów. Weryfikować pipeline embeddingów na parach testowych.
Zbyt duże chunki – szum kontekstowy i degradacja jakości LLMWysoka

Zbyt duże fragmenty dokumentów w indeksie zawierają dużo tekstu nieistotnego dla zapytania, co 'rozrzedza' sygnał kontekstowy i może prowadzić do halucynacji lub ignorowania istotnych fragmentów przez LLM. Problem znany jako 'lost in the middle' — LLM gorzej korzysta z informacji w środku długich kontekstów.

Rozwiązanie:Stosować umiarkowane rozmiary chunków (256–512 tokenów z overlapem). Dodać re-ranking pobranych dokumentów (np. cross-encoder re-ranker). Stosować kompresję kontekstu (np. LLMLingua) przed wstawieniem do promptu.
Brak spójności embeddingów przy aktualizacji indeksuWysoka

Przy zmianie modelu embeddingowego (np. aktualizacji do nowszej wersji), istniejące embeddyngi w bazie wektorowej stają się niekompatybilne z nowym modelem. Przeszukiwanie indeksu stworzonego przez stary model za pomocą embeddingów zapytania z nowego modelu daje błędne wyniki.

Rozwiązanie:Pełne re-embeddowanie indeksu po każdej zmianie modelu embeddingowego. Wersjonowanie indeksów. Stosowanie stabilnych, rzadko aktualizowanych modeli embeddingu w produkcji.
Retrieval pasaży sprzecznych z faktami (context poisoning / misinformation)Wysoka

RAG zakłada, że pobrane dokumenty są wiarygodne i faktycznie trafne. Jeśli baza wiedzy zawiera nieprawdziwe, przestarzałe lub złośliwe dokumenty, retrieval może dostarczyć do LLM kontekst prowadzący do generacji błędnych odpowiedzi, nawet jeśli LLM ma prawidłową parametryczną wiedzę.

Rozwiązanie:Kontrola jakości i kuratyzacja źródeł w bazie wiedzy. Stosowanie Corrective RAG lub mechanizmów weryfikacji faktów. Dodanie re-rankera wykrywającego niskiej jakości lub sprzeczne pasaże.
Ignorowanie kontekstu przez LLM (context faithfulness failure)Średnia

LLM może ignorować lub błędnie interpretować pobrany kontekst, bazując zamiast tego na swojej wiedzy parametrycznej. Zjawisko to jest szczególnie problematyczne gdy pobrane dokumenty zawierają informacje sprzeczne z wiedzą treningową modelu.

Rozwiązanie:Eksplicytne instrukcje w prompcie nakazujące modelowi priorytetyzowanie dostarczonego kontekstu. Ewaluacja faithfulness na zbiorze testowym (np. RAGAs framework). Stosowanie modeli wyspecjalizowanych do RAG (np. Command R+ od Cohere).

Ewolucja

Oryginalny paper · 2020 · NeurIPS 2020 (Advances in Neural Information Processing Systems 33) · Patrick Lewis
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela
2020
Lewis et al. (Meta AI / NeurIPS 2020) definiują RAG jako end-to-end trenowalną architekturę
Punkt przełomowy

Paper 'Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks' wprowadził termin RAG i formalną architekturę łączącą DPR (retriever) z BART (generator) w end-to-end trenowalny system. Zaproponowano dwa warianty: RAG-Sequence i RAG-Token. Osiągnięto state-of-the-art na trzech zadaniach open-domain QA bez użycia bezpośrednich sygnałów nadzorczych dla retrievera.

2022
Fusion-in-Decoder i inne warianty RAG dla wielodokumentowego rozumowania

Izacard & Grave opublikowali Fusion-in-Decoder (FiD), w którym każdy pobrany dokument jest enkodowany osobno przez enkoder T5, a dekoder przeprowadza cross-attention nad wszystkimi enkodowanymi dokumentami jednocześnie. FiD poprawia wydajność retrieval przy dużym k bez kwadratowego wzrostu kosztu self-attention.

2022
ChatGPT i wzrost popularności RAG jako techniki produktowej dla LLM
Punkt przełomowy

Po premierze ChatGPT (grudzień 2022) i rosnącym zainteresowaniu LLM, RAG stał się dominującą techniką wzbogacania LLM o zewnętrzną wiedzę bez re-treningu. Termin 'RAG' zaczął być powszechnie stosowany dla pipeline'ów retrieve-then-read z zamrożonymi LLM i bazami wektorowymi, odbiegając od oryginalnej definicji z paperu Lewis et al.

2023
SELF-RAG, Adaptive RAG, Corrective RAG – warianty z adaptacyjnym retrieval

Opublikowano warianty RAG z adaptacyjnym decydowaniem o potrzebie retrieval: SELF-RAG (Asai et al., arXiv:2310.11511) uczy model generowania tokenów refleksji ('Should I retrieve?', 'Is this relevant?'), Adaptive RAG kondycjonuje retrieval na złożoności zapytania, Corrective RAG weryfikuje jakość pobranych dokumentów przed generacją.

2024
GraphRAG (Microsoft) – RAG na grafach wiedzy

Microsoft Research opublikował GraphRAG (Edge et al., arXiv:2404.16130), rozszerzając RAG o budowę grafów wiedzy z dokumentów i retrieval na poziomie encji i społeczności. GraphRAG poprawia odpowiedzi na złożone pytania globalnej wiedzy, które zwykły RAG obsługuje słabo.

Hiperparametry (konfigurowalne osie)

Liczba pobranych dokumentów (top-k)Krytyczna

Liczba dokumentów lub fragmentów pobieranych przez retriever dla każdego zapytania. Wyższe k zwiększa recall retrieval, ale wydłuża prompt i zwiększa koszt LLM. W oryginalnym RAG k=5 było typową wartością.

3Minimalna wartość dla prostych zadań QA. Niskie opóźnienie.
5Wartość typowa z oryginalnego paperu Lewis et al. 2020.
10–20Dla złożonych zadań wymagających szerokiego pokrycia tematycznego. Zwiększa koszt LLM.
Rozmiar chunka (tokeny)Wysoka

Długość fragmentów dokumentów wchodzących do indeksu. Wpływa na granularność retrieval i długość kontekstu dołączonego do promptu. Za małe chunki tracą kontekst; za duże chunki spowalniają LLM i mogą zawierać dużo nieistotnego tekstu.

256 tokenówDrobnoziarniste chunki — wysoka precyzja retrieval, ale ryzyko utraty kontekstu zdaniowego.
512 tokenówPopularna wartość domyślna w wielu frameworkach RAG (np. LangChain, LlamaIndex).
1024 tokenówWiększe chunki — więcej kontekstu, ale wyższy koszt LLM i mniejsza precyzja retrieval.
Model embeddinguKrytyczna

Model używany do konwersji zapytań i dokumentów do reprezentacji wektorowych. Jakość modelu embeddingowego ma bezpośredni wpływ na jakość retrieval. W oryginalnym RAG używano DPR; nowoczesne pipeline'y korzystają z modeli takich jak text-embedding-3 (OpenAI), all-MiniLM (SBERT), e5-large, lub BGE.

Strategia retrievalWysoka

Metoda wyszukiwania dokumentów: gęsta (dense, embedding similarity), rzadka (sparse, BM25/TF-IDF) lub hybrydowa. Wpływa na jakość i latencję retrieval.

dense (cosine similarity)Semantyczne wyszukiwanie — dobra wydajność na parafrazach i zapytaniach wielojęzycznych.
BM25 (sparse)Efektywne dla zapytań z dokładnymi słowami kluczowymi i nazwami własnymi.
hybrid (dense + BM25)Najlepsza ogólna wydajność retrieval w benchmarkach (np. BEIR). Wymaga re-rankingu lub normalizacji ocen.

Wąskie gardło obliczeniowe

Opóźnienie retrieval i kontekst długości promptu

Podczas inferencji RAG wprowadza dwa dodatkowe koszty względem standardowego LLM: (1) czas wyszukiwania ANN w bazie wektorowej (typowo dziesiątki milisekund, ale zależny od rozmiaru indeksu i infrastruktury); (2) wydłużenie promptu przez dołączony kontekst pobranych dokumentów, co zwiększa koszt przetwarzania przez LLM proporcjonalnie do liczby i rozmiaru chunków (kwadratowa złożoność self-attention dla długich kontekstów). Przy k=10 chunków po 512 tokenów każdy kontekst może liczyć ~5000 dodatkowych tokenów.

Zależy od
Liczba pobranych dokumentów (k)Rozmiar chunkuRozmiar indeksu wektorowego

Paradygmat wykonania

Tryb główny
conditional

RAG jest paradygmatem conditional: retrieval jest wyzwalany przez zapytanie użytkownika i tylko podzbiór dokumentów z całego indeksu jest pobierany i używany do kondycjonowania generacji. Nie wszystkie dokumenty z korpusu są aktywowane przy każdym zapytaniu — jest to warunkowe, zależne od wejścia. W wariantach Adaptive RAG lub Self-RAG, krok retrieval może być opcjonalnie pomijany, co czyni aktywację jeszcze bardziej input-dependent.

Wzorzec aktywacji
input_dependent

Równoległość

Poziom równoległości
partially_parallel

Wiele niezależnych zapytań może być przetwarzanych równolegle. Etap indeksowania (offline chunking i embedding computation) jest w pełni zrównolegliwalny. Retrieval z FAISS i podobnych bibliotek ANN może korzystać z wielu wątków CPU lub GPU.

Zakres
inference
Ograniczenia
!Generacja jest warunkowana wynikami retrieval, więc oba etapy muszą być wykonane sekwencyjnie: najpierw retrieval, następnie generacja. Nie można ich zrównoleglić dla jednego zapytania.

Wymagania sprzętowe

Podstawowe

Zarówno model embeddingowy (do generowania embeddingów dokumentów i zapytań), jak i LLM generator używają architektur Transformer akcelerowanych przez GPU Tensor Cores. Dla modeli produkcyjnych o dużej skali (miliony dokumentów, modele LLM 7B+) GPU jest wymagany do utrzymania akceptowalnego opóźnienia inferencji.

Dobry fit

Wyszukiwanie ANN w bibliotekach takich jak FAISS (Flat index, HNSW) może być efektywnie wykonywane na CPU z rozszerzeniami AVX/AVX-512 dla wektorowych operacji zmiennoprzecinkowych. Dla indeksów do kilkudziesięciu milionów dokumentów i umiarkowanego obciążenia CPU jest wystarczające dla etapu retrieval.