ai RAG - ghdrako/doc_snipets GitHub Wiki
RAG = Retrieval-Augmented Generation
To architektura łącząca dwa podejścia:
- Retrieval – wyszukiwanie informacji z zewnętrznego źródła wiedzy (np. bazy danych, dokumentów, wyszukiwarek).
 - Generation – generowanie odpowiedzi przez model językowy (LLM), z wykorzystaniem wyszukanych informacji.
 
Cel: Umożliwić modelowi odpowiadanie na pytania w oparciu o aktualne i dokładne dane, które nie znajdują się bezpośrednio w jego wytrenowanej wiedzy.
Ogólny przepływ
- Input użytkownika (np. pytanie).
 - Moduł Retrieval przeszukuje bazę wiedzy (np. dokumenty PDF, artykuły, wewnętrzne dane firmy).
 - Zwrócone fragmenty są przekazywane jako kontekst do modelu językowego.
 - Model generuje odpowiedź na podstawie pytania i dostarczonych fragmentów.
 
RAG bez rerankingu
- Retriever (np. wektorowy, oparty o embeddingi) znajduje np. 10 fragmentów dokumentów najbardziej podobnych do zapytania. *Wszystkie (lub część) tych fragmentów trafiają do modelu generatywnego, który z nich buduje odpowiedź. Problem: embeddingi nie zawsze dają idealną kolejność trafności — np. fragment 5. może być ważniejszy niż fragment 1.
 
Reranking
Reranking to drugi etap selekcji:
- Retriever zwraca np. 50 kandydatów.
 - Reranker (np. model typu cross-encoder) ocenia dokładniej, jak bardzo każdy kandydat pasuje do zapytania.
 - Wybierasz np. 5 najlepszych i dopiero one trafiają do modelu generatywnego.
 
modele do rerankingu:
- Bi-encoder (embedding retriever) – szybki, ale mniej precyzyjny.
 - Cross-encoder (reranker) – wolniejszy, ale dokładniejszy (porównuje pytanie i fragment razem, nie osobno).
 
Przykłady popularnych rerankerów:
- cross-encoder/ms-marco-MiniLM-L-6-v2 (Hugging Face)
 - bge-reranker-large (BAAI)
 - Cohere Rerank (API)
 
Schemat RAG z rerankingiem
Zapytanie użytkownika
       ↓
 [Retriever] – szybkie wyszukiwanie (np. 50 fragmentów)
       ↓
 [Reranker] – dokładne ocenienie trafności
       ↓
 [Top N fragmentów] – najbardziej trafne
       ↓
 [Generator] – model LLM tworzy odpowiedź