RAG — Retrieval Augmented Generation
ChatGPT nie zna Twojej dokumentacji ani danych sprzed tygodnia. RAG to architektura która daje LLM dostęp do Twoich danych w czasie rzeczywistym — bez fine-tuningu i bez halucynacji.
5 kluczowych komponentów RAG
Jakość RAG zależy od każdego z tych kroków. Słabe chunking lub zły embedding model sabotuje cały system.
Chunking Strategy
Jak dzielić dokumenty na fragmenty do embeddowania
- →Fixed size (200-500 tokenów) — prosty
- →Semantic chunking — tnie na granicach semantycznych
- →Parent-child — duże chunks dla kontekstu, małe dla retrieval
- →Sentence window — chunk = zdanie + N sąsiednich zdań
Embedding Model
Model zamieniający tekst na wektor numeryczny
- →OpenAI text-embedding-3-small — szybki, niedrogi, dobra jakość
- →Cohere Embed v3 — lepszy dla multilingual
- →BGE-large — open-source, lokalny, competitive quality
- →Nomic Embed Text — open-source, bardzo długi context
Retrieval Strategy
Jak wyszukiwać relevantne chunks z bazy
- →Dense Retrieval — semantic search (vector similarity)
- →Sparse Retrieval — BM25/TF-IDF keyword search
- →Hybrid — weighted combination obu
- →Multi-query — LLM generuje wiele queries, merge wyników
Re-ranking
Opcjonalne doprecyzowanie kolejności pobranych chunks
- →Cross-encoder re-ranker (Cohere Rerank, BGE)
- →LLM-based re-ranking (droższe, wolniejsze)
- →Reciprocal Rank Fusion dla multi-source
- →Custom scoring z metadanymi (data, autor, kategoria)
Prompt Engineering
Jak konstruować prompt dla LLM z retrieved context
- →System prompt z instrukciami dot. zachowania
- →Context placement (ważne chunks na początku/końcu)
- →Citation instructions ('cytuj źródło dla każdego faktu')
- →Fallback instruction ('jeśli nie wiesz, powiedz że nie wiesz')
Jak ewaluować jakość RAG (RAGAS)
RAGAS to framework do automatycznej ewaluacji pipeline'ów RAG — mierzy retrieval i generation osobno.
Context Precision
Jaki % pobranych chunks jest relevantny do pytania
Powyżej 0.8 to dobry wynik. Poniżej 0.5 = bad retrieval
Context Recall
Czy wszystkie relevantne dokumenty zostały pobrane
Powyżej 0.9 to dobry wynik dla kompletnych odpowiedzi
Faithfulness
Czy odpowiedź LLM jest oparta wyłącznie na dostarczonym kontekście
Powyżej 0.9. Niższe = LLM 'wymyśla' poza kontekstem
Answer Relevancy
Czy odpowiedź jest relevantna do pytania użytkownika
Powyżej 0.8. Mierzone przez LLM judge lub human eval
Często zadawane pytania
Co to jest RAG (Retrieval Augmented Generation)?
RAG (Retrieval Augmented Generation) to architektura AI która wzbogaca LLM (Large Language Model) o dynamiczny dostęp do zewnętrznych, aktualnych danych przed generowaniem odpowiedzi. Bez RAG: LLM ma wiedzę tylko do daty swojego treningu i nie wie nic o Twojej prywatnej dokumentacji, danych klientów czy aktualnych wydarzeniach. Z RAG: zanim LLM odpowie, wyszukuje relevantne dokumenty z Twojej bazy danych (vector database), dostarcza je jako kontekst i generuje odpowiedź na ich podstawie. Efekty: mniej halucynacji (LLM opiera się na prawdziwych dokumentach), aktualność danych (baza jest regularnie aktualizowana), prywatność (Twoje dane nie trafiają do treningu modelu), referencje (możesz wskazać skąd pochodzi odpowiedź).
Jak działa pipeline RAG krok po kroku?
Pipeline RAG składa się z dwóch faz. Faza offline (indexing): Chunking — dokumenty są dzielone na fragmenty (chunks) po 200-500 tokenów. Zbyt duże chunks = za dużo irrelentant info. Za małe = brak kontekstu. Embedding — każdy chunk jest zamieniony na wektor przez embedding model (OpenAI text-embedding-3-small, Cohere, BGE). Storing — wektory + oryginalne teksty są zapisane do Vector Database (Pinecone, Qdrant, Weaviate). Faza online (retrieval + generation): Query Embedding — pytanie użytkownika jest zamieniane na wektor tym samym modelem. Retrieval — Vector DB zwraca Top-K (np. 5) najbliższych chunków. Re-ranking (opcjonalne) — cross-encoder re-rankuje pobrane chunks dla lepszej precyzji. Prompt Assembly — query + chunks = prompt dla LLM. Generation — LLM (GPT-4, Claude, Gemini) generuje odpowiedź na bazie dostarczonego kontekstu.
Jakie są najczęstsze problemy z RAG i jak je rozwiązać?
Problemy z RAG: Poor retrieval — baza zwraca irrelentant chunks. Fix: lepszy chunking (semantic chunking, parent-child), hybrid search (keyword + semantic), re-ranking (Cohere Rerank, BGE Reranker). Context window overflow — zbyt wiele chunks przekracza context window LLM. Fix: reduce Top-K, kompresja kontekstu, hierarchical retrieval. Chunking errors — chunks są zbyt małe (brak kontekstu) lub zbyt duże (zbyt dużo szumu). Fix: overlap między chunkami, semantic chunking (tną na zdania, nie stałej długości). Lost in the middle — LLM ignoruje środek długiego kontekstu. Fix: ustaw ważne chunks na początku lub końcu promptu. Hallucination mimo kontekstu — LLM miesza wiedzę z treningu z kontekstem. Fix: instrukcja 'odpowiadaj TYLKO na podstawie poniższego kontekstu'.
RAG vs. Fine-tuning — kiedy co stosować?
RAG vs. Fine-tuning: Fine-tuning zmienia wagi modelu — model 'uczy się' nowych danych na stałe. RAG dynamicznie wstrzykuje dane do kontekstu — model nie jest modyfikowany. Kiedy RAG: Dane się często zmieniają (dokumentacja, FAQ, baza klientów). Potrzebujesz referencji do źródeł. Dane są prywatne i nie chcesz ich w modelu. Szybszy time-to-market (brak treningu). Kiedy Fine-tuning: Uczysz model nowego stylu, formatu lub tonu odpowiedzi. Model musi znać specjalistyczny żargon. Dane zmieniają się rzadko i chcesz max performance. RAG + Fine-tuning razem: często najlepszy wynik. Fine-tuning uczy modelu domeny i stylu, RAG dostarcza aktualne fakty. Koszt: RAG jest tańszy w uruchomieniu (kilka godzin pracy). Fine-tuning kosztuje od 100 USD do 100,000+ USD dla dużych modeli.
Jakie narzędzia i frameworki wspierają RAG?
RAG tooling: Frameworki: LangChain — najpopularniejszy framework do budowania LLM apps i RAG pipeline'ów. Python/JS. Bogaty ekosystem integracji. LlamaIndex — specjalizowany w data ingestion i RAG. Łatwiejszy dla data-heavy use cases. Haystack — enterprise-ready, dobry dla complex search use cases. Embedding Models: OpenAI text-embedding-3-small (1536 dim), Cohere Embed v3, BGE-large (open-source, lokalny), Nomic Embed Text. Vector Databases: Pinecone, Qdrant, Weaviate, Chroma (prototypy). Re-ranking: Cohere Rerank, BGE Reranker, Jina Reranker. LLMs dla generacji: OpenAI GPT-4o, Anthropic Claude 3.5 Sonnet, Google Gemini, Llama 3 (open-source). Evaluation: RAGAS (RAG Assessment) do automatycznej ewaluacji jakości RAG pipeline'u. Mierzy faithfulness, answer relevancy, context precision.
Powiązane artykuły
Skontaktuj się z nami
Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.
Wyślij zapytanie
Telefon
+48 790 814 814
Pon-Pt: 9:00 - 18:00
adam@fotz.pl
Odpowiadamy w ciągu 24h
Adres
Plac Wolności 16
61-739 Poznań
Godziny pracy
Wolisz porozmawiać?
Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.
Zadzwoń teraz