Generowanie wspomagane wyszukiwaniem (Retrieval-Augmented Generation, RAG) to technika, w której model językowy (LLM) zanim cokolwiek napisze, najpierw dostaje do ręki garść konkretnych dokumentów wyszukanych w zewnętrznej bazie wiedzy. Zamiast odpowiadać wyłącznie z tego, co „zapamiętał” podczas treningu, model opiera odpowiedź na materiałach, które podsuwasz mu na bieżąco. Dzięki temu odpowiedzi są aktualne, osadzone w Twoich danych i łatwiejsze do zweryfikowania, bo wiadomo, z jakiego źródła pochodzą.
Jak to działa
Pipeline RAG ma dwie fazy. Najpierw indeksowanie: dzielisz dokumenty na fragmenty (chunki), zamieniasz każdy na embedding (wektor liczb opisujący znaczenie) i wrzucasz do bazy wektorowej. Potem retrieval: pytanie użytkownika też zamieniasz na embedding, wyszukujesz najbardziej podobne fragmenty (zwykle przez podobieństwo kosinusowe) i doklejasz je do promptu jako kontekst.
Model dostaje więc prompt w stylu „odpowiedz na pytanie, korzystając z poniższych fragmentów” plus same fragmenty. To dlatego RAG bije fine-tuning w wielu zastosowaniach: żeby dodać nową wiedzę, nie musisz przetrenowywać modelu — wystarczy zaktualizować bazę dokumentów.
Przykład z praktyki
Budujesz bota odpowiadającego na pytania o wewnętrzną dokumentację firmy. Używasz biblioteki LangChain albo LlamaIndex do podziału plików, modelu embeddingów (np. text-embedding-3-small) i bazy wektorowej Chroma lub pgvector. Gdy pracownik pyta „jak skonfigurować VPN?”, system wyciąga 3-4 najtrafniejsze akapity z firmowego wiki i przekazuje je modelowi razem z pytaniem. Odpowiedź dotyczy Twojej procedury, a nie ogólników z internetu — i możesz pokazać, z którego dokumentu pochodzi.
Na co uważać
- Garbage in, garbage out. Jeśli retrieval wyciągnie nietrafione fragmenty, model i tak wygeneruje pewną siebie bzdurę. Jakość wyszukiwania jest ważniejsza niż sam model.
- RAG nie likwiduje halucynacji w 100%. Ogranicza je, bo daje model konkretną podstawę, ale model wciąż potrafi „dopowiedzieć” coś spoza kontekstu. Warto wymuszać cytowanie źródeł.
- Rozmiar chunków ma znaczenie. Za duże fragmenty rozmywają sens, za małe gubią kontekst. To parametr, który realnie stroisz.
- Limit kontekstu. Nie wepchniesz całej bazy do promptu — dlatego cały sens polega na wybraniu tylko najtrafniejszych kawałków.
Pojęcia powiązane: embeddingi, baza wektorowa (vector database), LLM, fine-tuning, prompt engineering, podobieństwo kosinusowe, chunking, halucynacje modelu.