Wyjaśnienie RAG: Jak systemy AI pozyskują aktualną wiedzę na żądanie
Dowiedz się, jak działa generowanie wzbogacone wyodrębnianiem informacji – od dzielenia tekstu na fragmenty i tworzenia wektorów aż po wyszukiwanie wektorowe – aby modele AI mogły odpowiadać na pytania bez ponownego szkolenia.
Załóżmy, że istnieje asystent AI, który dawno już zakończył swoje szkolenie.
Zadajesz mu pytanie:
"Co znajduje się w tym dokumencie, który właśnie przesłałem?"
Model nigdy nie napotkał tego pliku podczas szkolenia.
Jak więc może na to odpowiedzieć?
Jedną z możliwych odpowiedzi jest technika zwana Retrieval-Augmented Generation, zwykle skracana do RAG.
RAG umożliwia systemowi AI pobieranie istotnych materiałów z zewnętrznych źródeł i włączanie ich do generowanej odpowiedzi.
Oto najciekawsza część:
Model nie musi być ponownie szkolony za każdym razem, gdy pojawiają się nowe informacje.
Zobaczmy, jak to działa.
Problem: AI nie może wiedzieć wszystkiego
Wielkie modele językowe uczą się na podstawie danych, z których zostały wytrenowane.
Spojrzenie na ten proces z uproszczeniem wygląda tak:
Training Data
↓
Model Training
↓
Model Parameters
↓
AI Model
↓
Generate Answers
Gdy trening się zakończy, model nie ma automatycznego sposobu na przyswajanie nowych dokumentów, stron internetowych, raportów firmowych lub plików prywatnych, które pojawiają się później.
Załóżmy, że dziś zakończysz trening modelu.
A jutro ktoś stworzy:
new_report.pdf
Ten plik PDF po prostu nie istniał w momencie treningu modelu.
Jak więc model miałby odpowiedzieć na pytanie:
"Jakie są trzy główne wnioski z tego raportu?"
To właśnie jest luka, którą ma za zadanie wypełnić RAG.
Czym jest RAG?
RAG = Retrieval-Augmented Generation
Sama nazwa wyjaśnia mechanizm:
- Retrieval → znajdowanie odpowiednich informacji
Zamiast prostego toku:
Question
↓
LLM
↓
Answer
można zbudować pipeline w następujący sposób:
Question
↓
Retrieve relevant information
↓
Add information to context
↓
LLM
↓
Answer
Ta zmiana architektury może mieć znaczący wpływ.
RAG vs Tradycyjna sztuczna inteligencja
Bез RAG tok jest bezpośredni:
┌──────────────┐
Question ───→│ LLM │
└──────┬───────┘
↓
Answer
Z dodaniem RAG:
┌─────────────────┐
│ External Data │
│ PDFs / Docs │
│ Database / Web │
└────────┬────────┘
↓
Question → Retrieval → Relevant Context
↓
LLM
↓
Answer
Model nie musi już zapamiętywać wszystkiego z góry.
Zamiast tego może uzyskiwać istotne fakty na żądanie.
Jak właściwie działa RAG?
Standardowa konfiguracja RAG przechodzi przez kilka odrębnych etapów:
Documents
↓
Document Processing
↓
Chunking
↓
Embeddings
↓
Vector Database
↓
← User Question
↓
Query Embedding
↓
Similarity Search
↓
Relevant Chunks
↓
LLM
↓
Final Answer
Przejdźmy przez każdy z nich.
Zbieraj swoje dane
Punktem wyjścia jest zebranie materiałów źródłowych. Może to obejmować:
- Pliki w formacie PDF
- Dokumenty stworzone w Wordzie
- Strony pobrane z stron internetowych
- Prace naukowe lub badawcze
- Wewnętrzne dokumenty firmy
- Instrukcje opisujące produkt
- Pliki tekstowe
- Dane przechowywane w bazie danych
- Wpisy z bazy wiedzy
Jako przykład wyobraźmy folder zawierający:
company_policy.pdf
research_paper.pdf
employee_handbook.pdf
product_manual.pdf
Proces RAG jest w stanie przetwarzać wszystkie te elementy.
Dzielenie dokumentów na fragmenty
Podawanie modelowi całego dokumentu naraz zwykle nie jest praktyczne ze względu na ograniczenia rozmiarowe.
Dlatego dokumenty są dzielone na mniejsze jednostki zwane fragmentami.
Oto proste ilustracje:
Document
│
├── Chunk 1
├── Chunk 2
├── Chunk 3
├── Chunk 4
├── Chunk 5
└── ...
Wyobraźmy sobie dokument o 100 stronach zawierający kilka tysięcy zdań.
Zamiast skanować całość przy każdym zapytaniu, można ją podzielić na łatwiejsze do obsługi sekcje:
Chunk 1 → Introduction
Chunk 2 → Architecture
Chunk 3 → Security
Chunk 4 → Performance
Chunk 5 → Limitations
Sposób dzielenia treści zależy od jej charakteru oraz tego, co się tworzy.
Konwertowanie tekstu na embeddingi
Tutaj sprawa staje się naprawdę interesująca.
Komputery nie potrafią pojąć znaczenia tekstu w taki sam sposób jak ludzie, przynajmniej nie w sposób naturalny.
Aby to obejść, tekst jest konwertowany na wektory liczbowe zwane embeddingami.
Rozważmy ten przykład:
"Machine learning is a branch of AI"
↓
Embedding Model
↓
[0.21, -0.14, 0.73, ...]
A drugie zdanie:
"Artificial intelligence includes machine learning"
↓
[0.19, -0.11, 0.70, ...]
Ponieważ te dwa zdania mają podobne znaczenie, ich wektory zazwyczaj znajdują się blisko siebie w przestrzeni embeddingów.
W przybliżeniu wygląda to tak:
AI
●
/ \
/ \
ML ● ● Robotics
\
\
Cooking ●
Celem nie jest znalezienie dosłownego pokrycia się słów.
Celem jest raczej uchwycenie podobieństwa semantycznego — bliskości w znaczeniu.
Czym jest wyszukiwanie semantyczne?
Klasyczny silnik wyszukiwania oparty na słowach kluczowych przyjąłby zapytanie takie jak:
"samochód"
i szukał dokumentów, które dosłownie zawierają słowo samochód.
Z kolei wyszukiwanie semantyczne stara się zrozumieć, co faktycznie oznacza to zapytanie.
Naprzимер, zapytanie takie jak:
">Jak pojazdy elektryczne przechowują energię?"
może wyświetlić fragment tekstu wyjaśniający, że pojazdy elektryczne polegają na ogniwach litowo-jonowych do przechowywania ładunku elektrycznego.
Sformułowania te ledwo się pokrywają, a mimo to dopasowanie ma sens.
Działa to dlatego, że embeddingi kodują relacje w znaczeniu, a nie tylko w pisowni.
Zachowuj embeddingi w bazie danych wektorowej
Gdy już istnieją embeddingi, potrzebują one miejsca przechowywania.
To właśnie jest rolą bazy danych wektorowych, która przechowuje:
Chunk
+
Embedding
+
Metadata
Struktura wygląda mniej więcej tak:
Vector Database
ID Vector Text
-------------------------------------
1 [0.21,...] Chunk A
2 [0.78,...] Chunk B
3 [0.34,...] Chunk C
4 [0.91,...] Chunk D
Gdy ktoś wysyła pytanie, system przeszukuje te przechowywane wektory w celu znalezienia odpowiedniego kontekstu.
Niektóre powszechnie używane narzędzia do tego typu wyszukiwania wektorowego to:
- FAISS
- pgvector
- Pinecone
- Weaviate
- Milvus
- Chroma
To, którą konkretnie bazę danych wybierzesz, nie jest kluczowe.
Ważne jest to:
Zachowuj informacje w formie, która umożliwia szybkie wyszukiwanie oparte na znaczeniu.
Użytkownik zadaje pytanie
Załóżmy, że użytkownik wpisze:
">Które mechanizmy bezpieczeństwa używa system?"
To pytanie jest następnie przekształcane w swoje własne embeddingi.
User Question
↓
Embedding Model
↓
Query Vector
W tym momencie system posiada numeryczny odcisk palca pytania.
Szukanie istotnych informacji
Wektor zapytania jest następnie porównywany ze wszystkimi wektorami już znajdującymi się w bazie danych.
Mówiąc ogólnie:
Query
●
/ \
/ \
● ●
Relevant Relevant
Chunk Chunk
●
Unrelated
Wybierane są najbardziej odpowiadające fragmenty.
Na przykład, przy założeniu:
Question:
"What security mechanisms does the system use?"
System może zwrócić:
Retrieved:Chunk 17 → Authentication
Chunk 42 → Encryption
Chunk 51 → Access control
Dzięki temu model ma teraz sensowny, istotny kontekst do pracy.
Dodanie pozyskanych informacji do promptu
Gdy znajdą się odpowiednie fragmenty, są one przekazywane modelowi LLM jako kontekst wraz z oryginalnym pytaniem.
Koncepcyjnie struktura promptu wygląda tak:
System Instructions
+
User Question
+
Retrieved Context
↓
LLM
↓
Answer
Na przykład:
Context:
"The system uses AES-GCM encryption
for protecting stored data..."Question:"What encryption method does the
system use?"
Biorąc pod uwagę tę konfigurację, model może odpowiedzieć czymś w rodzaju:
"System używa szyfrowania AES-GCM do ochrony przechowywanych danych."
Ta odpowiedź opiera się na pobraanych danych, a nie wyłącznie na tym, co model przyswoił podczas swojego początkowego szkolenia.
I to jest kluczowa idea
Sam model nie musi koniecznie nauczyć się niczego trwałego z tej wymiany.
Jego wewnętrzne parametry pozostają nietknięte.
Zamiast tego proces wygląda w ten sposób:
New Information
↓
External Knowledge Store
↓
Retrieve When Needed
↓
LLM Uses Context
↓
Answer
To rozdzielenie pomiędzy stałą wiedzą modelu a wymiennym, zewnętrznym źródłem wiedzy jest dokładnie tym, co nadaje RAG jego siłę.
RAG nie oznacza, że AI nauczyło się tych informacji
To rozróżnienie ma ogromne znaczenie i łatwo je pomylić.
Załóżmy, że przesłasz plik w takim formacie:
Project_Report.pdf
a asystent zacznie odpowiadać na pytania w oparciu o niego.
To nie oznacza, że model trwale wchłonął treść tego raportu do swoich wag.
Zamiast tego dokument jest:
Stored externally
↓
Retrieved when relevant
↓
Provided as context
↓
Used to generate response
Pomocną analogią jest uczeń korzystający z podręcznika podczas egzaminu.
Uczeń nie zapamiętał z góry każdej strony.
Zamiast tego proces przebiega w następujący sposób:
Zadaj pytanie, następnie znajdź odpowiednią stronę, przeczytaj ją i udziel odpowiedzi
RAG zachowuje się mniej więcej w ten sam sposób.
RAG vs Fine-Tuning
To porównanie pojawia się ciągle, więc warto je jasno przedstawić.
Fine-Tuning
Fine-tuning polega na dostosowaniu parametrów modelu poprzez kontynuowanie jego szkolenia na określonej grupie przykładów.
Koncepcyjnie:
Base Model
↓
Training Data
↓
Fine-Tuning
↓
Modified Model
RAG
RAG pozostawia model w zasadzie bez zmian i zamiast tego dostarcza informacje z zewnątrz w momencie zadania pytania.
Base Model
+
External Knowledge
↓
Retrieval
↓
Context
↓
Answer
Oto uproszczony porównanie obok siebie:
| Cecha | RAG | Doprecyzowanie |
|---|---|---|
| Zmiana parametrów modelu | Zazwyczaj nie | Tak |
| Wiedza zewnętrzna | Doskonałe dopasowanie | Mniej bezpośrednie|
| Aktualizacja wiedzy | Aktualizacja dokumentów lub indeksu | Może wymagać ponownego szkolenia |
| Dokumenty prywatne | Korzystne | Możliwe, ale inne kompromisy |
| Styl lub zachowanie | Ograniczone | Mocniejsze zastosowanie |
| Uzasadnienie źródłem | Silny potencjał | Nie jest to wrodzone zagwarantowane |
Te dwie techniki nie są ze sobą wykluczające się; zespoły mogą je łączyć.
Czy RAG może korzystać z Internetu?
Tak, może.
Zbiór wiedzy zewnętrznej nie musi znajdować się w prywatnym sklepie dokumentów.
Zamiast tego system może pobierać informacje z takich źródeł jak:
Internet
↓
Search Engine
↓
Relevant Pages
↓
LLM
↓
Answer
Staje się to cenne, gdy pytanie opiera się na aktualnych faktach.
Naprzимер:
"Co zmieniło się w najnowszej wersji tego oprogramowania?"
W takim przypadku system może najpierw pobrać aktualną dokumentację i wykorzystać ją do sformułowania odpowiedzi.
Mimo to samo pobieranie informacji nie gwarantuje dokładności.
Źródło, z którego pobierane są dane, nadal musi być wiarygodne i rzeczywiście istotne dla pytania.
RAG do własnych dokumentów
Jednym z najpraktyczniejszych zastosowań tego wzorca jest możliwość bezpośredniej komunikacji z własnymi plikami.
Wyobraź sobie folder zawierający coś w rodzaju:
Research/
│
├── paper1.pdf
├── paper2.pdf
├── dataset_notes.pdf
├── experiment_results.pdf
└── thesis.pdf
Ustawienie oparte na RAG pozwala zadawać pytania takie jak:
"Jakie były główne ograniczenia stwierdzone podczas eksperymentów?"
Kolejność operacji wygląda wtedy następująco:
Your Documents
↓
Extract Text
↓
Chunk Documents
↓
Create Embeddings
↓
Vector Database
↓
Question
↓
Semantic Search
↓
Relevant Sections
↓
LLM
↓
Answer
Dlatego właśnie RAG stał się tak cenny dla procesów badawczych oraz systemów wiedzy na skalę przedsiębiorstw.
RAG w praktycznych zastosowaniach
Wzorzec ten występuje w szerokiej gamie systemów.
Podpora klienta
Customer Question
↓
Product Documentation
↓
Retrieve Relevant Section
↓
AI
↓
Response
Edukacja
Student Question
↓
Course Materials
↓
Relevant Concepts
↓
AI Tutor
↓
Explanation
Badania naukowe
Research Question
↓
Research Papers
↓
Relevant Sections
↓
AI
↓
Summary
Wiedza firmy
Employee Question
↓
Internal Documents
↓
Retrieve Policy
↓
AI
↓
Answer
RAG nie eliminuje całkowicie halucynacji
To zagadnienie wymaga podkreślenia.
Można by przypuszczać:
„Jeśli użyję RAG, sztuczna inteligencja nigdy nie będzie tworzyć halucynacji.”
To nie do końca prawda.
RAG może zmniejszyć liczbę określonych rodzajów nieudokumentowanych odpowiedzi, ale nie eliminuje tego problemu całkowicie.
Naprzykład:
Bad Retrieval
↓
Wrong Context
↓
LLM
↓
Wrong Answer
Istnieje również kilka innych sposobów, w jakie mogą wystąpić błędy:
- Kawałki tekstu podzielone w taki sposób, że tracią swoje znaczenie
- Fakty istotne, które po prostu nie występują w materiałach źródłowych
- Cytaty pobrane, które w rzeczywistości nie odnoszą się do pytania
- Dokumenty przestarzałe lub już nieaktualne
- Pliki źródłowe, które od samego początku były błędne lub niepasujące
- Zbyt dużo kontekstu umieszczonego jednocześnie w zapytaniu
- Sam model, który błędnie rozumuje pomimo dobrych danych wejściowych
Z tego powodu solidny system RAG wymaga czegoś więcej niż tylko bazy danych wektorowej w tle.
Ocena systemu RAG
Można ocenić proces RAG na kilku różnych poziomach.
Jakość wyszukiwania
Czy system pobrał właściwe informacje?
Question
↓
Retrieved chunks
↓
Are they relevant?
Jakość generowania
Czy model faktycznie dobrze wykorzystał to, co zostało pobraane?
Retrieved Context
↓
Generated Answer
↓
Is the answer supported?
Jakość end-to-end
Czy cały proces łącznie prawidłowo odpowiada na pytanie użytkownika?
Question
↓
Retrieval
↓
Context
↓
Generation
↓
Final Answer
System może zawieść nawet wtedy, gdy leżący u jego podstaw model językowy jest doskonały.
Naprzимер:
Jeśli wyszukiwanie pokaże niewłaściwy dokument, nawet bardzo zdolny model może podać błędną odpowiedź.
Matymatyka stojąca za embeddingami
Embeddingi umożliwiają porównywanie fragmentów informacji za pomocą matematyki.
Jedną z powszechnie używanych miar podobieństwa jest podobieństwo kosinowe.
Dla dwóch wektorów A i B podobieństwo kosinowe oblicza się jako iloczyn skalarny A i B podzielony przez iloczyn ich długości.
Otrzymana wartość pokazuje, na jak blisko wektory te są zgodne pod względem kierunku.
Mówiąc prościej:
High similarity
↓
Vectors point in similar directions
↓
Likely related meaning
To daje RAG konkretny, matematyczny sposób na znajdowanie informacji semantycznie powiązanych z zapytaniem.
RAG to jak dostarczenie sztucznej inteligencji biblioteki
Oto chyba najjaśniejszy sposób na to wyobrażenie.
Pomyśl o sztucznej inteligencji jako o bardzo zdolnym uczniu.
Bез RAG:
Student
↓
Uses what they already remember
↓
Answer
Z RAG:
Student
↓
Goes to library
↓
Finds relevant book
↓
Reads relevant pages
↓
Answers question
Podstawowa wiedza i umiejętność rozumowania ucznia się nie zmieniły.
To, co się zmieniło, to informacje dostępne dla tego ucznia w danym momencie.
To właśnie stanowi istotę koncepcji RAG.
Kierunek rozwoju RAG
Systemy RAG stają się coraz bardziej zaawansowane.
Przyszłe wersje mogą łączyć:
User Question
↓
Query Understanding
↓
Multiple Retrieval Sources
↓
Document Ranking
↓
Reasoning
↓
Tool Use
↓
Verification
↓
Answer + Evidence
Zamiast korzystać z jednego dokumentu, system może przeszukiwać:
PDFs
+
Database
+
Website
+
API
+
Company Knowledge Base
Następnie powiązane elementy są łączone ze sobą.
To sprawia, że RAG staje się szerszą architekturą wiedzy i rozumowania dla agentów AI, a nie tylko techniką wyszukiwania.
Bardziej szeroki kontekst
RAG oznacza znaczącą zmianę w sposobie postrzegania wiedzy przez AI.
Stary model polegał na:
Train AI
↓
Put knowledge into model
↓
Ask questions
Nowsze podejście przypomina bardziej:
Train AI
↓
Keep knowledge externally
↓
Retrieve relevant information
↓
Reason over it
↓
Generate answer
Rozdzielenie inteligencji modelu od zewnętrznej wiedzy okazuje się niezwykle skuteczne.
Model nie musi już przechowywać wszystkich faktów w swojej strukturze.
Zamiast tego musi umieć efektywnie wykorzystywać informacje, gdy tylko ma do nich dostęp.
Ostatnia myśl
Być może przyszłość sztucznej inteligencji nie polega na tworzeniu modelu, który zapamiętałby wszystko, co warto znać.
Być może chodzi raczej o stworzenie modelu, który potrafi określić, co musi sprawdzić, znaleźć odpowiedni źródło, wykorzystać te informacje w praktyce i sprawdzić, czy odpowiedź jest poprawna.
To właśnie sprawia, że RAG zasługuje na uwagę.
AI Model
+
External Knowledge
+
Retrieval
+
Reasoning
+
Verification
↓
More Useful AI
To wskazuje na szerszą koncepcję: najmądrzejsza sztuczna inteligencja to może nie ta, która wie wszystko. To może być ta, która potrafi znaleźć to, czego potrzebuje.
Literatura pokrewna
- Wyjaśnienie sztucznej inteligencji agencyjnej: od modeli językowych do autonomicznych agentów — Strukturalny przegląd tego, jak modele językowe ewoluują w systemy agencyjne dzięki narzędziom, pamięci, planowaniu, architekturom wieloagentowym oraz integracji MCP.