Wyjaśnienie RAG: umożliwianie modelom językowym dostępu do wiedzy zewnętrznej
Przewodnik po RAG przeznaczony dla początkujących – dzielenie na fragmenty, embeddingi, wyszukiwanie wektorowe, hybrydowe odzyskiwanie informacji oraz sytuacje, gdy RAG nadal tworzy halucynacje – wraz z jasnymi diagramami architektury.
Wielkie modele językowe odpowiadają na podstawie pamięci treningowej. Pamięć ta jest potężna, ale niekompletna – może zawierać braki w postaci wewnętrznych przewodników, przestarzałych zasad oraz faktów, które nigdy nie pojawiły się w tekstach publicznych. Technika Retrieval-Augmented Generation (RAG) eliminuje tę luki, najpierw pobierając istotne materiały zewnętrzne, a następnie prosząc model o udzielenie odpowiedzi na podstawie tych materiałów.
Czym jest RAG?
Bez funkcji wyszukiwania pytanie trafia bezpośrednio do modelu:
User Question
↓
LLM
↓
Answer
Z użyciem RAG system znajduje odpowiednie informacje przed generowaniem tekstu:
User Question
↓
Find Relevant Information
↓
Give Information to the LLM
↓
LLM
↓
Answer
Model nadal tworzy ostateczną wersję tekstu; nowym elementem jest kontekst pochodzący ze sklepu wiedzy.
Dlaczego potrzebujemy RAG?
Limity szkolenia, prywatne korpusy danych oraz szybko zmieniające się zasady wszystkie podważają możliwość udzielania odpowiedzi opartych wyłącznie na pamięci. Podręcznik pracowniczy zaktualizowany w zeszłym tygodniu nie znajdzie się w wagach modelu typu frontier. RAG umożliwia asystentowi korzystanie z tego podręcznika w momencie zadania pytania bez konieczności ponownego szkolenia.
Prosty przykład RAG
Pracownik pyta o przeniesienie dni urlopu. Przebieg działań wygląda następująco:
Employee asks a question
↓
Search the employee handbook
↓
Find the relevant section
↓
Give that section to the LLM
↓
LLM generates the answer
Asystent powinien cytować podręcznik, a nie wymyślać zasady, która „brzmi słusznie”.
Jak działa RAG?
Ważne są dwie fazy: przygotowanie wiedzy offline, a następnie udzielanie odpowiedzi online.
1. Przygotowanie wiedzy
Przetwarzamy pliki, dzielimy je, wstawiamy fragmenty i przechowujemy wektory do wyszukiwania.
2. Odpowiedź na pytanie
Wstawiamy pytanie, pobieramy najważniejsze fragmenty, pakujemy je do promptu i generujemy odpowiedź.
Część 1: Przygotowanie wiedzy
Typowe źródła informacji dla asystenta ds. HR:
Employee Handbook
Vacation Policy
Benefits Guide
Leave Policy
Proces przygotowania:
Documents
↓
Extract Text
↓
Break into Smaller Pieces
↓
Create Embeddings
↓
Store for Search
Krok 1: Pobranie informacji
Wyodrębnij czysty tekst z każdego źródła:
Employee Handbook
↓
Extract text
↓
"Employees receive..."
"Vacation requests..."
"Leave policy..."
Tytuły, stopki oraz elementy nawigacyjne należy usunąć wcześnie, aby nigdy nie stały się „faktami”.
Krok 2: Podział dokumentu na fragmenty
Długie podręczniki przekraczają limity kontekstowe i ukrywają istotne akapity. Dzielenie na fragmenty tworzy jednostki nadające się do wyszukiwania:
Employee Handbook
↓
┌───────────────┐
│ Chunk 1 │
├───────────────┤
│ Chunk 2 │
├───────────────┤
│ Chunk 3 │
├───────────────┤
│ ... │
└───────────────┘
Dlaczego podział na fragmenty jest ważny?
Fragmenty zbyt duże osłabiają istotność informacji; fragmenty zbyt małe tracą kontekst otaczających ich elementów (szczególnie negacje i wyjątki). Przecięcie się sąsiednich fragmentów pomaga zachować kontekst graniczny. Zacznij od prostego rozwiązania – stałej wielkości z przecięciem – a następnie dostosuj je w razie błędów w ocenach.
Krok 3: Tworzenie wektorów embeddingowych
Wektory embeddingowe mapują tekst na wektory, dzięki czemu frazy o podobnym znaczeniu znajdują się blisko siebie, nawet jeśli nie mają wspólnych słów kluczowych.
Tekst pytania:
"What is my vacation allowance?"
Parafraza o tym samym znaczeniu:
"How many annual leave days do I get?"
Oba mogą trafić w pobliże tego samego fragmentu dotyczącego polityki wakacyjnej po embedowaniu:
"What is my vacation allowance?"
↓
Embedding
↓
Numerical representation
Należy używać tego samego narzędzia embedowania do indeksowania i wyszukiwania; mieszanie modeli potajemnie psuje funkcję wyszukiwania najbliższych sąsiadów.
Krok 4: Przechowywanie informacji do wyszukiwania
Każdy fragment wraz z jego wektorem trafia do indeksu wektorowego (lub hybrydowego magazynu):
Document Chunk
↓
Embedding
↓
Vector Database
Metryki — tytuł źródła, strona, poziom dostępu, data wejścia w życie — powinny towarzyszyć fragmencie, aby później można było stosować filtry i cytaty.
Część 2: Odpowiadanie na pytanie użytkownika
Droga online:
User Question
↓
Understand the question
↓
Search the stored information
↓
Find relevant chunks
↓
Give those chunks to the LLM
↓
Generate an answer
Krok 5: Pobieranie istotnych informacji
Embedowanie pytania pozwala na wybranie najważniejszych fragmentów, na przykład:
Chunk 147 → Vacation carryover policy
Chunk 148 → Vacation request process
Chunk 62 → Employee benefits
Chunk 300 → Security policy
Jakość rankingu ma tu decydujące znaczenie dla jakości ostatecznej odpowiedzi. Złą selekcję informacji nie da się naprawić poprzez lepiej sformułowane pytanie.
Krok 6: Przekazanie informacji do LLM
Zdobrany tekst staje się kontekstem promptu:
Context:Employees may carry over up to 5 unused
vacation days into the following year.
Question:How many vacation days can I carry over?
Instrukcje powinny wymagać odpowiadania w oparciu o kontekst oraz przyznawania się do braków, gdy kontekstu nie ma.
Krok 7: Generowanie odpowiedzi
Retrieved Information
+
User Question
↓
LLM
↓
Answer
Model tworzy odpowiedź opartą na pobranych fragmentach tekstu, a nie na ogólnych zasadach stosowanych w HR.
Pełna architektura RAG
Etykieta przygotowania offline:
KNOWLEDGE PREPARATION
Diagram end-to-end:
Documents
↓
Extract Text
↓
Chunking
↓
Embeddings
↓
Vector Database
│
│
│
▼
USER QUESTION
↓
Query Embedding
↓
Retrieval
↓
Relevant Information
↓
Question + Context
↓
LLM
↓
Answer
Przed zadaniem pytania
Documents
↓
Chunks
↓
Embeddings
↓
Vector Database
Gdy przychodzi pytanie
Question
↓
Retrieval
↓
Relevant Context
↓
LLM
↓
Answer
Czy RAG wykorzystuje tylko wyszukiwanie wektorowe?
Nie. Systemy produkcyjne często łączą różne metody.
Wyszukiwanie według słów kluczowych
Narzędzia do porównywania leksykalnego (BM25 i podobne) doskonale radzą sobie z dokładnym dopasowywaniem tokenów: kodów polityk, SKU, identyfikatorów błędów, nazw własnych.
Wyszukiwanie semantyczne
Wyszukiwanie wektorowe wykrywa parafrazy i synonimy, których nie dostrzegają słowa kluczowe.
Wyszukiwanie hybrydowe
Połącz oba podejścia, a następnie połącz rankingi:
Keyword Search
+
Semantic Search
↓
Hybrid Search
Wyszukiwanie hybrydowe jest dobrym standardowym rozwiązaniem, gdy ruch internetowy łączy dokładne identyfikatory z zapytaniami w języku naturalnym.
RAG nie eliminuje halucynacji
Proces wyodrębniania informacji zmniejsza nieuzasadnione wymysły, ale ich całkowicie nie usuwa. Do możliwych problemów należą:
Pobrany niewłaściwy fragment tekstu:
User Question
↓
Wrong information retrieved
↓
LLM
↓
Wrong answer
Nic istotnego nie zostało znalezione, a mimo to model nadal udziela odpowiedzi:
User Question
↓
No relevant information found
↓
LLM
↓
Unsupported answer
Sposoby łagodzenia problemów: bardziej precyzyjne wyodrębnianie informacji, ponowne rankowanie, instrukcje odmowy odpowiedzi, cytaty oraz ocena wiarygodności, a nie tylko płynności.
RAG kontra dopasowywanie fine-tuning
RAG
Najlepiej nadaje się w sytuacjach, gdy wiedza często się zmienia, musi być cytowana lub pozostaje prywatna poza danymi treningowymi. Aktualizacje oznaczają ponowne indeksowanie, a nie przeszkolenie modelu.
Dopasowywanie fine-tuning
Najlepiej sprawdza się wtedy, gdy konieczna jest zmiana zachowania, stylu lub formatu zadań, albo gdy wiedza jest wystarczająco stabilna i zwięzła, by zostać włączona bezpośrednio do systemu. Jej aktualizacja jest kosztowna, gdy polityki się zmieniają.
Wiele produktów wykorzystuje oba podejścia: dopasowanie do umiejętności za pomocą RAG, a do faktów bezpośrednio w dokumentacji.
Gdzie jest przydatny RAG?
Podpora klienta
Asystenci opierający się na dokumentacji produktu i szablonach zgłoszeń.
Ochrona zdrowia
Szukanie protokołów i wytycznych z ścisłą kontrolą cytowań i dostępu (nadal obowiązują zasady domeny).
Finanse
Odpowiedzi dotyczące polityk, informacji ujawnieniowych oraz zasad produktu, które muszą odwoływać się do najnowszego zatwierdzonego tekstu.
Zasoby ludzkie
Podręczniki, świadczenia, zasady urlopu – dokładnie ten sam wzorzec pytań pracowników co powyżej.
Rozwój oprogramowania
Wewnętrzne procedury rozwiązywania problemów, instrukcje obsługi oraz referencje API obok dokumentacji publicznej.
Kiedy należy używać RAG?
Należy używać RAG, gdy odpowiedzi muszą odzwierciedlać konkretne korpusy większe niż treść promptu, które zmieniają się szybciej niż cykle dopasowywania modelu lub wymagają informacji o ich pochodzeniu. Unikaj RAG w przypadku zwykłych faktów, które model już zna, czystej kreatywności lub ścieżek o ekstremalnie niskiej opóźnieniu, które nie mogą pozwolić sobie na dodatkowy krok pobierania danych.
Czym może być utrudnione stosowanie RAG?
Grenice fragmentów danych, odchylenia we wzorach embeddingów, przestarzałe indeksy, wycieki z mechanizmów kontroli dostępu oraz luki w ocenie. Konkretne przykłady błędów:
Użytkownik pyta:
User asks:
"What is the vacation carryover policy?"
System pobiera niewłaściwą rodzinę zasad:
↓System retrieves:
"Health insurance policy" ↓LLM receives wrong context ↓Poor answer
Następnie model brzmi pewnie, wyjaśniając ubezpieczenie zdrowotne tak, jakby chodziło o przeniesienie środków z ubezpieczenia podróżnego. Napraw najpierw proces pobierania danych i filtry metadanych, zanim obwiniasz generatora.
Czego musisz się nauczyć, aby zbudować RAG?
Pракtyczna ścieżka rozwoju umiejętności:
RAG Fundamentals
↓
Document Processing
↓
Chunking
↓
Embeddings
↓
Vector Databases
↓
Retrieval
↓
Prompt + Context
↓
LLM
↓
Evaluation
Przetwarzanie dokumentów, strategia dzielenia na fragmenty, embeddingi, magazyny wektorowe, kompletowanie promptów, ocena oraz operacje (odbudowa, dostęp, monitorowanie) – wszystko to ma znaczenie.
Kontekst ogólny
Knowledge
↓
Find relevant
information
↓
Give it to LLM
↓
Generate
answer
Wiedza znajduje się poza modelem; pobieranie danych zamienia tę luki; generowanie stanowi ostatni etap.
Wybory dotyczące dzielenia na fragmenty wpływają na wymiarowość embeddingów oraz typ indeksu: konfiguracje HNSW oparte wyłącznie na danych gęstych zachowują się inaczej niż hybrydowe magazyny BM25+wektorów, gdy zapytania zawierają zarówno tekst prozatorski, jak i identyfikatory. Należy utrzymywać pisemną politykę dotyczącą sygnałów do odbudowy – nowe wersje podręczników, usunięte strony, zmiany uprawnień – oraz sprawdzać, czy usunięte materiały rzeczywiście znikają z indeksu, a nie pozostają jako samotne wektory. Formatowanie cytatów również powinno być określone w umowie dotyczącej generowania treści: jeśli interfejs obiecuje informacje o pochodzeniu na poziomie strony, prompt i procesor postobróbki muszą generować stabilne identyfikatory źródła, a nie dekoracyjne przypisy, które nic не wskazują.
Przeprowadzenie ponownego rankingu zasługuje na krótkie omówienie nawet w ścieżce dla początkujących. Wybór dwukrotnego kodera jest tani; jedna praca kros-kodera nad pięćdziesięcioma najlepszymi kandydatami często naprawia błędy typu „prawie właściwy dokument, niewłaściwa sekcja”, które sprawiają, że dema wyglądają na niepracujące. Należy to połączyć z prostymi regułami odrzucenia, gdy wyniki podobieństwa spadną poniżej ustalonego progu. Zespoły, które pomijają ocenę, zazwyczaj odkrywają te problemy przed interesariuszami, a nie w notatniku.
Na koniec pamiętaj o charakterze ekonomicznym RAG: koszt indeksowania jest płatny ciągle w miarę rozwoju korpusów, natomiast koszt dopasowywania jest płatny w okresowych transzach. W dziedzinach wymagających ścisłych regulacji rachunek za ciągłe indeksowanie jest zazwyczaj tańszy niż cotygodniowe dopasowywania – ponadto umożliwia przytoczenie dokładnego akapitu, o który prosił audytor. Ta możliwość audytowalności jest często rzeczywistym wymogiem produktu, który kryje się za hasłem „stworzyć chatbota”.
Gdy wdrażasz RAG do istniejącego zestawu narzędzi wsparcia, zacznij od jednego korpusu i jednej grupy pytań, zamiast próbować rozwiązać wszystko naraz. Zmierz poziom odchylenia, eskalacji oraz skarg na błędne odpowiedzi w tym ograniczonym zakresie, zanim dodasz całe przestrzenie Confluence. Skupione działania pomagają określić, jakie rozmiary fragmentów i hybrydowe wagi są skuteczne; szerokie wdrożenia zazwyczaj pokazują, że tablice kontrolne bez metryk wierności ukrywają regresje. Przez pierwsze tygodnie utrzymuj kolejkę do ludzkiej oceny spornych odpowiedzi, aby redaktorzy mogli oznaczyć „dobry proces wyszukiwania / zła generacja” w porównaniu z „złym procesem wyszukiwania”, co oznacza różne sposoby naprawy. Z czasem te etykiety stają się sygnałami treningowymi dla narzędzi do ponownego rankowania oraz pomagają w decydowaniu, czy dany temat powinien zostać usunięty z RAG i zastąpiony deterministycznym procesem pracy.
Ostateczny wniosek
Store external knowledge
↓
Find relevant information
↓
Give that information to an LLM
↓
Generate a grounded response
Zachowuj zewnętrzną wiedzę, znajdź odpowiednie informacje do każdego pytania, a dopiero wtedy generuj odpowiedź. Ten cykl składający się z trzech kroków to RAG – prosty w zarysowaniu, wymagający umiejętnego działania, a mimo to najpraktyczniejszy sposób na zapewnienie, by asystenci byli uczciwi wobec prywatnych i zmieniających się faktów.
Dyscyplina operacyjna odróżnia proste dema od niezawodnych asystentów: zamroź zestaw pytań, mierz wskaźniki trafności wyszukiwania wraz z dokładnością odpowiedzi, a także odbudowuj indeksy według harmonogramu odpowiadającego częstotliwości zmian materiałów źródłowych. Podczas stosowania hybrydowego wyszukiwania, ponownego rankingu lub filtrów metadanych zachowuj ten sam zestaw wskaźników, aby ulepszenia były widoczne, a nie oparte jedynie na przypadkowych obserwacjach. Od samego początku traktuj etykiety dostępu jako część danych przekazywanych do obsługi; dodawanie uprawnień później powoduje wyciek prywatnych notatek HR do publicznych czatów. Wreszcie, gdy najważniejsze fragmenty danych wydają się słabe, preferuj odmowę wraz z prośbą o cytat zamiast trafnego domysłu – użytkownicy bardziej ufają dobrze przemyślanej ciszy niż wyrafinowanym wymysłom.
Zachowuj podręczniki dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowego działania, aby operatorzy otrzymywali coś więcej niż tylko zestaw slajdów.
Zachowaj podręczniki operacyjne dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowych, aby operatorzy otrzymali coś więcej niż tylko zestaw slajdów.
Zachowaj podręczniki operacyjne dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowych, aby operatorzy otrzymali coś więcej niż tylko zestaw slajdów.
Zachowaj podręczniki operacyjne dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowych, aby operatorzy otrzymali coś więcej niż tylko zestaw slajdów.
Zachowaj podręczniki operacyjne dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowych, aby operatorzy otrzymali coś więcej niż tylko zestaw slajdów.
Zachowaj podręczniki operacyjne dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowych, aby operatorzy otrzymali coś więcej niż tylko zestaw slajdów.
Zachowaj instrukcje obsługi dotyczące odbudowy indeksów, przeglądów dostępu oraz znanych sposobów awarii obok diagramów ścieżek prawidłowej pracy, aby operatorzy otrzymali coś więcej niż tylko zestaw slajdów.
Literatura pokrewna
- Wyjaśnienie Retrieval-Augmented Generation: Usprawnianie luk wiedzy LLM — Dowiedz się, dlaczego modele LLM tworzą iluzje i stają się przestarzałe, a następnie zobacz krok po kroku, jak RAG pobiera dane, dzieli je na fragmenty, wstawia wektory i ulepsza prompty w celu rozwiązania tego problemu.
- Wyjaśnienie RAG: Jak powstrzymać chatboty przed wymyślaniem faktów o firmie — Praktyczny przewodnik po procesie RAG – narzędzia do ładowania danych, dzielenia na fragmenty, tworzenia wektorów, przechowywania wektorów, ponownego sortowania wyników, wyszukiwania hybrydowego oraz RRF – wraz z informacjami o sytuacjach, gdy w ogóle nie należy używać funkcji wyszukiwania.