RAG-wzorce

From Systems analysis Wiki
Jump to navigation Jump to search

RAG-wzorce (ang. RAG Patterns) — to zestaw architektonicznych i metodologicznych podejść do budowania systemów Retrieval-Augmented Generation (RAG). Wzorce te służą rozwiązaniu fundamentalnych problemów dużych modeli językowych (LLM), takich jak halucynacje, dezaktualizacja wiedzy i brak specyfiki domenowej, poprzez integrację LLM z zewnętrznymi, dynamicznie dostępnymi źródłami danych[1]. Ewolucja RAG przebiegła od prostych liniowych potoków do złożonych systemów modularnych i agentowych[2].

Podstawowe wzorce RAG

W miarę rozwoju technologii pojawiło się wiele wzorców RAG, z których każdy rozwiązuje określone zadania i ma własne kompromisy między jakością, szybkością a kosztem.

  • Classic RAG (Klasyczny RAG) — podstawowe podejście, w którym zapytanie użytkownika jest wektoryzowane w celu wyszukania odpowiednich fragmentów (chunków) w wektorowej bazie danych; znalezione chunki są przekazywane do LLM wraz z pytaniem w celu wygenerowania odpowiedzi[1].
  • Multi‑Query RAG (Wielokrotne zapytania) — LLM generuje kilka przeformułowanych/doprecyzowanych wariantów oryginalnego zapytania; wyszukiwanie odbywa się dla wszystkich wariantów, a wyniki są łączone, co zwiększa pełność (recall)[3].
  • HyDE (Hypothetical Document Expansion) — służy przezwyciężeniu „luki semantycznej" między krótkim zapytaniem a długimi dokumentami. LLM najpierw generuje „hipotetyczny" dokument-odpowiedź, a następnie jego embedding jest używany do wyszukiwania, co często poprawia jakość ekstrakcji[4].
  • Hybrid Retrieval (Wyszukiwanie hybrydowe) — połączenie wyszukiwania semantycznego (wektorowego) i leksykalnego (BM25). Schematy hybrydowe stały się standardem dla systemów produkcyjnych: wyszukiwanie wektorowe pokrywa dopasowania znaczeniowe, a BM25 znajduje dokładne terminy/ID/akronimy; wyniki są łączone przez fuzję[5][6][7].
  • Re‑ranking (Dodatkowe rankingowanie) — dwuetapowy proces: szybki retriever zwraca zestaw kandydatów (np. top‑100), następnie cross-encoder (lub inny reranker) przelicza trafność i wybiera najlepsze (np. top‑5) dla LLM[8][9].
  • Query Routing (Routing zapytań) — w systemach z wieloma heterogenicznymi źródłami danych (różne indeksy/bazy danych/API) zapytanie jest kierowane do najlepszego źródła za pomocą routera (selektor LLM lub klasyfikator); obejmuje strategie fallback[10].
  • Agentic/Web RAG (Agentowy RAG) — LLM pełni rolę agenta: dekompozuje złożone pytania, planuje iteracje i korzysta z narzędzi (wyszukiwanie wektorowe, wyszukiwanie w sieci) ze sprzężeniem zwrotnym. Typową implementacją jest paradygmat ReAct[11]; w przypadku zorientowanego na sieć zbierania informacji i obowiązkowego cytowania zob. WebGPT[12].

Powiązane i rozwijające się paradygmaty

  • GraphRAG (Grafowy RAG) — wykorzystuje graf wiedzy jako źródło i mechanizm wyboru kontekstu; wyszukiwanie odbywa się po strukturze powiązań między encjami oraz po tekście, zwiększając interpretowalność i jakość na pytaniach wieloetapowych (multi‑hop)[13][14].
  • MM‑RAG (Multimodalny RAG) — praca z tekstem i źródłami wizualnymi (skany/schematy/tabele). Przykład: VisRAG demonstruje retrieval i generację zorientowane na VLM na dokumentach multimodalnych[15].
  • Packaging & Context Handling (Pakowanie kontekstu) — sposoby integracji znalezionych chunków w prompt: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].

Tabela porównawcza wzorców

Porównanie kluczowych wzorców RAG
Wzorzec Kiedy stosować Wpływ na jakość Koszt / Opóźnienie Ryzyka i ograniczenia
Classic RAG PoC i proste Q&A nad jednorodną bazą Poziom bazowy; silnie zależy od embeddingów[1] Niski Wrażliwość na sformułowania; ryzyko nieistotnego kontekstu
Hybrid Retrieval W większości scenariuszy produkcyjnych; dużo kodów/akronimów/ID Zwiększa pełność; pokrywa dokładne terminy[5][6][7] Niski/Średni Kalibracja wag fuzji; dwa indeksy
Re‑ranking Kluczowy, gdy wymagana jest wysoka precyzja Istotny wzrost precision dla top‑k[8][9] Średni/Wysoki Dodatkowe opóźnienie/koszt
Multi‑Query Krótkie/wieloaspektowe zapytania Zwiększa recall[3] Średni Nadmiarowe/zaszumione przeformułowania
HyDE Krótkie/niejednoznaczne zapytania z dużą „luką semantyczną" Poprawia jakość retrievalu zero‑shot[4] Średni Zależy od jakości tekstu „hipotetycznego"
Query Routing Wiele źródeł (baza dokumentów, SQL, API, sieć) Zwiększa trafność dzięki właściwemu źródłu[10] Średni Błąd routingu = niepowodzenie wyszukiwania
Agentic/Web RAG Złożone, badawcze, wieloetapowe zapytania Rozwiązuje zadania poza liniowym potokiem[11][12] Wysoki Złożoność, ryzyko zapętlenia; potrzebne mechanizmy ochronne (guardrails)

Praktyczna implementacja i architektura

Etapy wdrożenia

  1. Proof of Concept (PoC): Rozpocznij od Classic RAG na ograniczonym, lecz reprezentatywnym zbiorze danych, aby sprawdzić jakość embeddingów i podstawowy retrieval[1].
  2. Minimum Viable Product (MVP): Wdróż Hybrid Retrieval i Re‑ranking jako najlepszy stosunek nakładu do efektu[5][8].
  3. Produkcja: Dodaj transformacje zapytań (HyDE, Multi‑Query) oraz w razie potrzeby Query Routing; skonfiguruj observability (logowanie retrievalu/rerankingu/odpowiedzi) i testy A/B[3][10].

Kluczowe komponenty

  • Chunking (Podziału na fragmenty): Jeden z najbardziej krytycznych czynników jakości. Naiwny stały rozmiar często przerywa jednostki znaczeniowe. Zalecane są splittery zorientowane strukturalnie (według znaczników) lub rekurencyjne (akapit → zdanie → słowo)[17][18].
  • Embeddingi i metadane: Przechowuj przy każdym chunku document_id, stronę/sekcję, tytuł, daty; jest to niezbędne do filtrowania i prawidłowego cytowania źródeł.
  • Hybrydowy retrieval i reranking: Używaj BM25+wektor z fuzją (lub RRF), a następnie cross-encoder do rerankingu na małej puli kandydatów[5][6][8].
  • Pakowanie kontekstu: Wybieraj Map‑Reduce, Refine lub Tree‑of‑Chunks dla długich korpusów[16][18].

Typowe błędy (antywzorce)

  • Tylko wyszukiwanie wektorowe bez BM25 → niepowodzenia na kodach/ID/akronimach[5][7].
  • Zbyt duży/mały chunk → utrata kontekstu lub „rozmycie" embeddingu[17].
  • Brak rerankingu w produkcji → LLM otrzymuje zaszumiony kontekst[8].
  • Brak observability i śledzenia źródeł → niemożność analizy przyczyn błędów (zob. ocena RAG).

Ocena jakości i metryki

Ocena jest przeprowadzana na poziomie retrievalu (offline) i end‑to‑end (generacja).

Metryki retrievera

  • Hit Rate, Recall@k, MRR — pokrycie i pozycja trafnych dokumentów.
  • Context Precision & Recall — na ile wyekstrahowany kontekst jest wolny od „szumów" i pokrywa wszystko, co potrzebne (zaimplementowane w RAGAS)[19].

Metryki generatora (end‑to‑end)

  • Faithfulness / Groundedness — zgodność odpowiedzi z dostarczonym kontekstem.
  • Answer Relevancy (Trafność odpowiedzi) — zgodność z oryginalnym pytaniem.

Do automatyzacji metryk używane są frameworki open‑source: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].

Zobacz też

  • Retrieval-Augmented Generation (RAG)
  • Wektorowe bazy danych
  • Embedding
  • Agent AI
  • GraphRAG
  • MM-RAG
  • Ocena i benchmarki LLM

Literatura

  • Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  • Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
  • Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels (HyDE). ACL 2023. ACL Anthology; arXiv:2212.10496.
  • Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
  • Weaviate Docs. Hybrid search (BM25+Vector). [1].
  • Qdrant Docs. Hybrid Queries. [2].
  • Milvus Docs. Full‑Text Search / Hybrid Search. [3] / [4].
  • LangChain Docs. MultiQueryRetriever. [5].
  • Cohere Docs. Rerank — best practices. [6].
  • LlamaIndex Docs. Routing (query routers/selectors). [7].
  • Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR. arXiv:2210.03629.
  • Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
  • Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. (2024). [8].
  • Microsoft Research. Project GraphRAG. (2024). [9].
  • Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594.
  • Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
  • Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). [10].
  • TruLens Docs. RAG Triad. [11].
  • DeepEval (GitHub). The LLM Evaluation Framework. [12].
  • LangChain Docs. RecursiveCharacterTextSplitter. [13].
  • LlamaIndex Docs. HierarchicalNodeParser; Response Synthesis (Tree/Refine). [14]; [15].

Przypisy

  1. 1.0 1.1 1.2 1.3 Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  2. Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
  3. 3.0 3.1 3.2 LangChain Docs. MultiQueryRetriever. https://python.langchain.com/docs/how_to/MultiQueryRetriever/
  4. 4.0 4.1 Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels. ACL 2023. arXiv:2212.10496; ACL Anthology: 2023.acl‑long.99.
  5. 5.0 5.1 5.2 5.3 5.4 Weaviate Docs. Hybrid search (BM25+Vector). https://docs.weaviate.io/weaviate/concepts/search/hybrid-search
  6. 6.0 6.1 6.2 Qdrant Docs. Hybrid Queries. https://qdrant.tech/documentation/concepts/hybrid-queries/
  7. 7.0 7.1 7.2 Milvus Docs. Full‑Text Search и Hybrid Search. https://milvus.io/docs/full-text-search.md; https://milvus.io/docs/hybrid_search_with_milvus.md
  8. 8.0 8.1 8.2 8.3 8.4 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
  9. 9.0 9.1 Cohere Docs. Rerank — best practices. https://docs.cohere.com/docs/reranking-best-practices
  10. 10.0 10.1 10.2 LlamaIndex Docs. Routing (query routers/selectors). https://docs.llamaindex.ai/en/stable/module_guides/querying/router/
  11. 11.0 11.1 Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
  12. 12.0 12.1 Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
  13. Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. 2024. https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
  14. Microsoft Research. Project GraphRAG. https://www.microsoft.com/en-us/research/project/graphrag/
  15. Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594; OpenReview: zG459X3Xge.
  16. 16.0 16.1 Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
  17. 17.0 17.1 LangChain Docs. RecursiveCharacterTextSplitter. https://python.langchain.com/docs/how_to/recursive_text_splitter/
  18. 18.0 18.1 LlamaIndex Docs. HierarchicalNodeParser и Tree Summarization. https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html; https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/
  19. Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). https://aclanthology.org/2024.eacl-demo.16/
  20. TruLens Docs. RAG Triad. https://www.trulens.org/getting_started/core_concepts/rag_triad/
  21. DeepEval (GitHub). https://github.com/confident-ai/deepeval