RAG patterns (CS)
RAG vzory (angl. RAG Patterns) — jsou sadou architektonických a metodologických přístupů pro budování systémů Retrieval-Augmented Generation (RAG). Tyto vzory jsou určeny k řešení fundamentálních problémů velkých jazykových modelů (LLM), jako jsou halucinace, zastarávání znalostí a nedostatek doménové specifičnosti, prostřednictvím integrace LLM s externími, dynamicky dostupnými zdroji dat[1]. Evoluce RAG prošla cestou od jednoduchých lineárních pipeline k složitým modulárním a agentním systémům[2].
Základní RAG vzory
S rozvojem technologie se objevilo mnoho RAG vzorů, z nichž každý řeší určité úlohy a má své kompromisy mezi kvalitou, rychlostí a náklady.
- Classic RAG (Klasický RAG) — základní přístup, kde je dotaz uživatele vektorizován pro vyhledávání relevantních fragmentů (chunků) ve vektorové databázi; nalezené chunky jsou předány LLM spolu s otázkou pro generování odpovědi[1].
- Multi‑Query RAG (Vícenásobné dotazy) — LLM generuje několik přeformulovaných/upřesněných variant původního dotazu; vyhledávání probíhá podle všech variant, výsledky jsou sloučeny, což zvyšuje úplnost (recall)[3].
- HyDE (Hypothetical Document Expansion) — pro překonání „sémantické mezery" mezi krátkým dotazem a dlouhými dokumenty. LLM nejprve vygeneruje „hypotetický" dokument-odpověď, poté je jeho embedding použit pro vyhledávání, což často zlepšuje kvalitu extrakce[4].
- Hybrid Retrieval (Hybridní vyhledávání) — kombinace sémantického (vektorového) a lexikálního (BM25) vyhledávání. Hybridní schémata se stala standardem pro produkční systémy: vektorové vyhledávání pokrývá sémantické shody, zatímco BM25 nachází přesné termíny/ID/akronymy; výsledky jsou sloučeny fúzí[5][6][7].
- Re‑ranking (Dodatečné řazení) — dvoustupňový proces: rychlý retriever vrátí sadu kandidátů (např. top‑100), poté cross-encoder (nebo jiný reranker) přepočítá relevanci a vybere nejlepší (např. top‑5) pro LLM[8][9].
- Query Routing (Směrování dotazů) — v systémech s více heterogenními zdroji dat (různé indexy/databáze/API) je dotaz nasměrován k nejvhodnějšímu zdroji pomocí routeru (LLM-selektor nebo klasifikátor); zahrnuje fallback strategie[10].
- Agentic/Web RAG (Agentní RAG) — LLM vystupuje jako agent: dekompozuje složité otázky, plánuje iterace a využívá nástroje (vektorové vyhledávání, webové vyhledávání) se zpětnou vazbou. Typická implementace — paradigma ReAct[11]; pro webově orientovaný sběr dat a povinné citování viz WebGPT[12].
Příbuzná a rozvíjející se paradigmata
- GraphRAG (Grafový RAG) — využívá znalostní graf jako zdroj a mechanismus výběru kontextu; vyhledávání probíhá podle struktury vazeb mezi entitami i podle textu, čímž zvyšuje interpretovatelnost a kvalitu u multi‑hop otázek[13][14].
- MM‑RAG (Multimodální RAG) — práce s textem a vizuálními zdroji (skeny/schémata/tabulky). Příklad: VisRAG demonstruje VLM-orientovaný retrieval a generování na multimodálních dokumentech[15].
- Packaging & Context Handling (Balení kontextu) — způsoby integrace nalezených chunků do promptu: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].
Srovnávací tabulka vzorů
| Vzor | Kdy použít | Vliv na kvalitu | Náklady / Latence | Rizika a omezení |
|---|---|---|---|---|
| Classic RAG | PoC a jednoduché Q&A nad homogenní bází | Základní úroveň; silně závisí na embeddingech[1] | Nízká | Citlivost na formulace; riziko nerelevantního kontextu |
| Hybrid Retrieval | Ve většině produkčních scénářů; mnoho kódů/akronymů/ID | Zvyšuje úplnost; pokrývá přesné termíny[5][6][7] | Nízká/Střední | Ladění vah fúze; dva indexy |
| Re‑ranking | Kritický, kdy je důležitá vysoká přesnost | Výrazný nárůst precision na top‑k[8][9] | Střední/Vysoká | Dodatečná latence/náklady |
| Multi‑Query | Krátké/mnohoaspektové dotazy | Zvyšuje recall[3] | Střední | Nadbytečné/šumivé přeformulace |
| HyDE | Krátké/nejednoznačné dotazy s velkou „sémantickou mezerou" | Zlepšuje kvalitu retrievalu zero‑shot[4] | Střední | Závisí na kvalitě „hypotetického" textu |
| Query Routing | Více zdrojů (dokumentová báze, SQL, API, web) | Zvyšuje relevanci díky správnému zdroji[10] | Střední | Chyba směrování = selhání vyhledávání |
| Agentic/Web RAG | Složité, výzkumné, vícekrokové dotazy | Řeší úlohy přesahující lineární pipeline[11][12] | Vysoká | Složitost, riziko zacyklení; nutné guardrails |
Praktická implementace a architektura
Fáze nasazení
- Proof of Concept (PoC): Začněte s Classic RAG na omezeném, ale reprezentativním datasetu, abyste ověřili kvalitu embeddingů a základní retrieval[1].
- Minimum Viable Product (MVP): Nasaďte Hybrid Retrieval a Re‑ranking jako nejlepší poměr „úsilí/efekt"[5][8].
- Produkce: Přidejte transformace dotazů (HyDE, Multi‑Query) a v případě potřeby Query Routing; nastavte observability (logování retrievalu/reranku/odpovědí) a A/B testování[3][10].
Klíčové komponenty
- Chunking (Dělení na chunky): Jeden z nejkritičtějších faktorů kvality. Naivní fixní velikost často přerušuje sémantické celky. Doporučují se strukturálně orientované (podle značení) nebo rekurzivní splittery (odstavec → věta → slovo)[17][18].
- Embeddingy a metadata: Uchovávejte u každého chunku document_id, stránku/sekci, nadpis, data; to je nezbytné pro filtrování a správné citování zdrojů.
- Hybridní retrieval a rerank: Použijte BM25+vektor s fúzí (nebo RRF), poté cross-encoder pro přeřazení na malém poolu kandidátů[5][6][8].
- Balení kontextu: Volte Map‑Reduce, Refine nebo Tree‑of‑Chunks pro dlouhé korpusy[16][18].
Časté chyby (antivzory)
- Pouze vektorové vyhledávání bez BM25 → selhání na kódech/ID/akronymech[5][7].
- Příliš velký/malý chunk → ztráta kontextu nebo „rozmazání" embeddingu[17].
- Absence reranku v produkci → LLM dostává šumivý kontext[8].
- Žádná observability a trasování zdrojů → nelze analyzovat příčiny chyb (viz hodnocení RAG).
Hodnocení kvality a metriky
Hodnocení probíhá na úrovni retrievalu (offline) a end‑to‑end (generování).
Metriky retrieveru
- Hit Rate, Recall@k, MRR — pokrytí a pozice relevantních dokumentů.
- Context Precision & Recall — nakolik extrahovaný kontext neobsahuje „šum" a pokrývá vše potřebné (implementováno v RAGAS)[19].
Metriky generátoru (end‑to‑end)
- Faithfulness / Groundedness — soulad odpovědi s poskytnutým kontextem.
- Answer Relevancy (Relevance odpovědi) — soulad s původní otázkou.
Pro automatizaci metrik se používají open‑source frameworky: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].
Viz také
- Retrieval-Augmented Generation (RAG)
- Vektorové databáze
- Embedding
- AI-agent
- GraphRAG
- MM-RAG
- Hodnocení a benchmarky 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].
Poznámky
- ↑ 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.
- ↑ 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.0 3.1 3.2 LangChain Docs. MultiQueryRetriever. https://python.langchain.com/docs/how_to/MultiQueryRetriever/
- ↑ 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.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.0 6.1 6.2 Qdrant Docs. Hybrid Queries. https://qdrant.tech/documentation/concepts/hybrid-queries/
- ↑ 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.0 8.1 8.2 8.3 8.4 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
- ↑ 9.0 9.1 Cohere Docs. Rerank — best practices. https://docs.cohere.com/docs/reranking-best-practices
- ↑ 10.0 10.1 10.2 LlamaIndex Docs. Routing (query routers/selectors). https://docs.llamaindex.ai/en/stable/module_guides/querying/router/
- ↑ 11.0 11.1 Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
- ↑ 12.0 12.1 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. https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
- ↑ Microsoft Research. Project GraphRAG. https://www.microsoft.com/en-us/research/project/graphrag/
- ↑ Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594; OpenReview: zG459X3Xge.
- ↑ 16.0 16.1 Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
- ↑ 17.0 17.1 LangChain Docs. RecursiveCharacterTextSplitter. https://python.langchain.com/docs/how_to/recursive_text_splitter/
- ↑ 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/
- ↑ Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). https://aclanthology.org/2024.eacl-demo.16/
- ↑ TruLens Docs. RAG Triad. https://www.trulens.org/getting_started/core_concepts/rag_triad/
- ↑ DeepEval (GitHub). https://github.com/confident-ai/deepeval