---
title: "RAG patterns"
source: "https://systems-analysis.info/eng/RAG_patterns"
wiki: "systems-analysis.info/eng"
article: "RAG_patterns"
language: "en"
categories:
  - "Category:English"
  - "Category:Large language models"
  - "Category:Prompt engineering"
  - "Category:Technology"
revision_id: 321
wiki_created_at: 2026-09-06T22:22:04Z
wiki_modified_at: 2026-09-06T22:22:04Z
downloaded_at: 2026-09-07T22:22:41Z
---

# RAG patterns

**RAG Patterns** are a set of architectural and methodological approaches for building **[Retrieval-Augmented Generation](https://systems-analysis.info/eng/Retrieval-augmented_generation_(RAG) "Retrieval-augmented generation (RAG)")** (RAG) systems. These patterns are designed to address fundamental problems of [large language models (LLMs)](https://systems-analysis.info/eng/Large_language_model "Large language model"), such as hallucinations, outdated knowledge, and a lack of domain specificity, by integrating LLMs with external, dynamically accessible data sources<sup>[\[1\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-lewis2020-1)</sup>. The evolution of RAG has progressed from simple linear pipelines to complex modular and agentic systems<sup>[\[2\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-survey2024-2)</sup>.

## Core RAG Patterns

As the technology has evolved, numerous **RAG patterns** have emerged, each addressing specific challenges and involving trade-offs between quality, speed, and cost.

- **Classic RAG** — the basic approach where a user query is vectorized to find relevant fragments (chunks) in a vector database; the retrieved chunks are then fed into an LLM along with the question to generate an answer<sup>[\[1\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-lewis2020-1)</sup>.

<!-- -->

- **Multi-Query RAG** — the LLM generates several paraphrased or refined versions of the original query; a search is performed for all variants, and the results are merged, which increases *recall*<sup>[\[3\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-langchain-multiquery-3)</sup>.

<!-- -->

- **[HyDE (Hypothetical Document Expansion)](https://systems-analysis.info/eng/Hypothetical_Document_Embeddings_(HyDE) "Hypothetical Document Embeddings (HyDE)")** — addresses the "semantic gap" between a short query and long documents. The LLM first generates a "hypothetical" answer document, and its embedding is then used for search, often improving retrieval quality<sup>[\[4\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-hyde-4)</sup>.

<!-- -->

- **[Hybrid Retrieval](https://systems-analysis.info/eng/Hybrid_retrieval "Hybrid retrieval")** — a combination of semantic (vector) search and lexical (BM25) search. Hybrid schemes have become standard for production systems: vector search covers semantic matches, while BM25 finds exact terms, IDs, or acronyms; results are combined through fusion<sup>[\[5\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-weaviate-hybrid-5)[\[6\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-qdrant-hybrid-6)[\[7\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-milvus-fulltext-7)</sup>.

<!-- -->

- **Re-ranking** — a two-stage process: a fast retriever returns a set of candidates (e.g., top 100), then a cross-encoder (or another reranker) recalculates relevance and selects the best ones (e.g., top 5) for the LLM<sup>[\[8\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-nogueira2019-8)[\[9\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-cohere-rerank-9)</sup>.

<!-- -->

- **Query Routing** — in systems with multiple heterogeneous data sources (different indexes, databases, APIs), the query is directed to the best source by a router (an LLM-selector or a classifier); includes fallback strategies<sup>[\[10\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-llama-router-10)</sup>.

<!-- -->

- **Agentic/Web RAG** — the LLM acts as an agent: it decomposes complex questions, plans iterations, and uses tools (vector search, web search) with feedback. A typical implementation is the ReAct paradigm<sup>[\[11\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-react-11)</sup>; for web-oriented collection and mandatory citation, see WebGPT<sup>[\[12\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-webgpt-12)</sup>.

### Related and Emerging Paradigms

- **[GraphRAG](https://systems-analysis.info/eng/GraphRAG "GraphRAG")** — uses a knowledge graph as both a source and a context selection mechanism; search traverses the structure of relationships between entities and text, improving interpretability and performance on multi-hop questions<sup>[\[13\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-graphrag-13)[\[14\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-graphrag-project-14)</sup>.
- **[MM-RAG (Multimodal RAG)](https://systems-analysis.info/eng/MM-RAG_(Multimodal_RAG) "MM-RAG (Multimodal RAG)")** — works with text and visual sources (scans, diagrams, tables). Example: VisRAG demonstrates VLM-oriented retrieval and generation on multimodal documents<sup>[\[15\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-visrag-15)</sup>.
- **[Context Packing](https://systems-analysis.info/eng/Packaging_%26_Context_Handling "Packaging & Context Handling")** — methods for integrating retrieved chunks into the prompt: *Stuff*, *Map-Reduce*, *Refine*, *Tree-of-Chunks (RAPTOR)*<sup>[\[16\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-raptor-16)</sup>.

## Comparative Table of Patterns

| Pattern              | When to Use                                                | Impact on Quality                                                                                                                                                                                                                                                                                      | Cost / Latency | Risks and Limitations                              |
|----------------------|------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|----------------------------------------------------|
| **Classic RAG**      | PoCs and simple Q&A over a homogeneous knowledge base      | Baseline level; highly dependent on embeddings<sup>[\[1\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-lewis2020-1)</sup>                                                                                                                                                                 | Low            | Sensitivity to wording; risk of irrelevant context |
| **Hybrid Retrieval** | In most production scenarios; many codes, acronyms, or IDs | Increases recall; covers exact terms<sup>[\[5\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-weaviate-hybrid-5)[\[6\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-qdrant-hybrid-6)[\[7\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-milvus-fulltext-7)</sup> | Low/Medium     | Tuning fusion weights; requires two indexes        |
| **Re-ranking**       | Critical when high precision is important                  | Significant boost in precision for top-k<sup>[\[8\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-nogueira2019-8)[\[9\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-cohere-rerank-9)</sup>                                                                                   | Medium/High    | Additional latency/cost                            |
| **Multi-Query**      | Short or multi-faceted queries                             | Increases recall<sup>[\[3\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-langchain-multiquery-3)</sup>                                                                                                                                                                                    | Medium         | Redundant or noisy paraphrases                     |
| **HyDE**             | Short or ambiguous queries with a large "semantic gap"     | Improves *zero-shot* retrieval quality<sup>[\[4\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-hyde-4)</sup>                                                                                                                                                                              | Medium         | Depends on the quality of the "hypothetical" text  |
| **Query Routing**    | Multiple sources (doc base, SQL, API, web)                 | Improves relevance by selecting the correct source<sup>[\[10\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-llama-router-10)</sup>                                                                                                                                                        | Medium         | Routing error = search failure                     |
| **Agentic/Web RAG**  | Complex, exploratory, multi-step queries                   | Solves tasks beyond a linear pipeline<sup>[\[11\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-react-11)[\[12\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-webgpt-12)</sup>                                                                                                | High           | Complexity, risk of loops; requires guardrails     |

Comparison of Key RAG Patterns

## Practical Implementation and Architecture

### Implementation Stages

1.  **Proof of Concept (PoC):** Start with **Classic RAG** on a limited but representative dataset to validate embedding quality and basic retrieval<sup>[\[1\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-lewis2020-1)</sup>.
2.  **Minimum Viable Product (MVP):** Implement **Hybrid Retrieval** and **Re-ranking** as they offer the best effort-to-impact ratio<sup>[\[5\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-weaviate-hybrid-5)[\[8\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-nogueira2019-8)</sup>.
3.  **Production:** Add query transformations (**HyDE**, **Multi-Query**) and **Query Routing** if needed; set up observability (logging for retrieval, reranking, and responses) and A/B testing<sup>[\[3\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-langchain-multiquery-3)[\[10\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-llama-router-10)</sup>.

### Key Components

- **Chunking:** One of the most critical factors for quality. Naive fixed-size chunking often breaks semantic units. Structure-aware (based on markup) or recursive splitters (paragraph → sentence → word) are recommended<sup>[\[17\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-rcsplit-17)[\[18\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-llama-hier-18)</sup>.
- **Embeddings and Metadata:** Store metadata with each chunk, such as document_id, page/section, title, and dates; this is essential for filtering and accurate source citation.
- **Hybrid Retrieval and Re-ranking:** Use BM25+vector with fusion (or RRF), followed by a cross-encoder to re-rank a small pool of candidates<sup>[\[5\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-weaviate-hybrid-5)[\[6\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-qdrant-hybrid-6)[\[8\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-nogueira2019-8)</sup>.
- **Context Packing:** Choose *Map-Reduce*, *Refine*, or *Tree-of-Chunks* for long corpora<sup>[\[16\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-raptor-16)[\[18\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-llama-hier-18)</sup>.

### Common Mistakes (Anti-Patterns)

- **Vector-only search** without BM25 → fails on codes, IDs, or acronyms<sup>[\[5\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-weaviate-hybrid-5)[\[7\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-milvus-fulltext-7)</sup>.
- **Chunks too large or too small** → loss of context or "diluted" embeddings<sup>[\[17\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-rcsplit-17)</sup>.
- **No re-ranking in production** → the LLM receives noisy context<sup>[\[8\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-nogueira2019-8)</sup>.
- **No observability** and source tracing → impossible to debug the causes of errors (see RAG evaluation).

## Quality Evaluation and Metrics

Evaluation is conducted at the retrieval level (offline) and the end-to-end generation level.

### Retriever Metrics

- **Hit Rate, Recall@k, MRR** — coverage and position of relevant documents.
- **Context Precision & Recall** — measures how much of the retrieved context is relevant (free of "noise") and covers all necessary information (implemented in RAGAS)<sup>[\[19\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-ragas-19)</sup>.

### Generator Metrics (End-to-End)

- **Faithfulness / Groundedness** — alignment of the answer with the provided context.
- **Answer Relevancy** — alignment with the original question.

Open-source frameworks are used to automate these metrics: **RAGAS**, **TruLens** (the *RAG triad*: context relevance, groundedness, answer relevance), and **DeepEval**<sup>[\[20\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-trulens-20)[\[21\]](https://systems-analysis.info/eng/RAG_patterns#cite_note-deepeval-21)</sup>.

## External links

- <a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation" class="external text" rel="nofollow">Retrieval-augmented generation — Wikipedia</a>

## See also

- [Retrieval-Augmented Generation (RAG)](https://systems-analysis.info/eng/Retrieval-augmented_generation_(RAG) "Retrieval-augmented generation (RAG)")
- [Vector database](https://systems-analysis.info/eng/Vector_database "Vector database")
- [Embedding](https://systems-analysis.info/eng/Embedding_(NLP) "Embedding (NLP)")
- [AI agent](https://systems-analysis.info/eng/AI_Agent "AI Agent")
- [GraphRAG](https://systems-analysis.info/eng/GraphRAG "GraphRAG")
- [MM-RAG](https://systems-analysis.info/eng/MM-RAG_(Multimodal_RAG) "MM-RAG (Multimodal RAG)")
- [LLM evaluation](https://systems-analysis.info/eng/LLM_evaluation "LLM evaluation")

## Bibliography

- Lewis, P., Perez, E., et al. (2020). *Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks*. NeurIPS. <a href="https://arxiv.org/abs/2005.11401" class="external text" rel="nofollow">arXiv:2005.11401</a>.
- 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; <a href="https://arxiv.org/abs/2405.06211" class="external text" rel="nofollow">arXiv:2405.06211</a>.
- Gao, L., Ma, X., Lin, J., Callan, J. (2023). *Precise Zero‑Shot Dense Retrieval without Relevance Labels (HyDE)*. ACL 2023. <a href="https://aclanthology.org/2023.acl-long.99/" class="external text" rel="nofollow">ACL Anthology</a>; <a href="https://arxiv.org/abs/2212.10496" class="external text" rel="nofollow">arXiv:2212.10496</a>.
- Nogueira, R., Cho, K. (2019). *Passage Re‑ranking with BERT*. <a href="https://arxiv.org/abs/1901.04085" class="external text" rel="nofollow">arXiv:1901.04085</a>.
- Weaviate Docs. *Hybrid search (BM25+Vector)*. <a href="https://docs.weaviate.io/weaviate/concepts/search/hybrid-search" class="external autonumber" rel="nofollow">[1]</a>.
- Qdrant Docs. *Hybrid Queries*. <a href="https://qdrant.tech/documentation/concepts/hybrid-queries/" class="external autonumber" rel="nofollow">[2]</a>.
- Milvus Docs. *Full‑Text Search* / *Hybrid Search*. <a href="https://milvus.io/docs/full-text-search.md" class="external autonumber" rel="nofollow">[3]</a> / <a href="https://milvus.io/docs/hybrid_search_with_milvus.md" class="external autonumber" rel="nofollow">[4]</a>.
- LangChain Docs. *MultiQueryRetriever*. <a href="https://python.langchain.com/docs/how_to/MultiQueryRetriever/" class="external autonumber" rel="nofollow">[5]</a>.
- Cohere Docs. *Rerank — best practices*. <a href="https://docs.cohere.com/docs/reranking-best-practices" class="external autonumber" rel="nofollow">[6]</a>.
- LlamaIndex Docs. *Routing (query routers/selectors)*. <a href="https://docs.llamaindex.ai/en/stable/module_guides/querying/router/" class="external autonumber" rel="nofollow">[7]</a>.
- Yao, S., et al. (2023). *ReAct: Synergizing Reasoning and Acting in Language Models*. ICLR. <a href="https://arxiv.org/abs/2210.03629" class="external text" rel="nofollow">arXiv:2210.03629</a>.
- Nakano, R., et al. (2021). *WebGPT: Browser‑assisted question‑answering with human feedback*. <a href="https://arxiv.org/abs/2112.09332" class="external text" rel="nofollow">arXiv:2112.09332</a>.
- Microsoft Research Blog. *GraphRAG: Unlocking LLM discovery on narrative private data*. (2024). <a href="https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/" class="external autonumber" rel="nofollow">[8]</a>.
- Microsoft Research. *Project GraphRAG*. (2024). <a href="https://www.microsoft.com/en-us/research/project/graphrag/" class="external autonumber" rel="nofollow">[9]</a>.
- Yu, S., et al. (2024). *VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents*. <a href="https://arxiv.org/abs/2410.10594" class="external text" rel="nofollow">arXiv:2410.10594</a>.
- Sarthi, P., et al. (2024). *RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval*. <a href="https://arxiv.org/abs/2401.18059" class="external text" rel="nofollow">arXiv:2401.18059</a>.
- Es, S., et al. (2024). *RAGAs: Automated Evaluation of Retrieval Augmented Generation*. EACL (Demo). <a href="https://aclanthology.org/2024.eacl-demo.16/" class="external autonumber" rel="nofollow">[10]</a>.
- TruLens Docs. *RAG Triad*. <a href="https://www.trulens.org/getting_started/core_concepts/rag_triad/" class="external autonumber" rel="nofollow">[11]</a>.
- DeepEval (GitHub). *The LLM Evaluation Framework*. <a href="https://github.com/confident-ai/deepeval" class="external autonumber" rel="nofollow">[12]</a>.
- LangChain Docs. *RecursiveCharacterTextSplitter*. <a href="https://python.langchain.com/docs/how_to/recursive_text_splitter/" class="external autonumber" rel="nofollow">[13]</a>.
- LlamaIndex Docs. *HierarchicalNodeParser*; *Response Synthesis (Tree/Refine)*. <a href="https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html" class="external autonumber" rel="nofollow">[14]</a>; <a href="https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/" class="external autonumber" rel="nofollow">[15]</a>.

## References

1.  <span id="cite_note-lewis2020-1">↑ <sup>[1.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-lewis2020_1-0)</sup> <sup>[1.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-lewis2020_1-1)</sup> <sup>[1.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-lewis2020_1-2)</sup> <sup>[1.3](https://systems-analysis.info/eng/RAG_patterns#cite_ref-lewis2020_1-3)</sup> Lewis, P., Perez, E., et al. (2020). *Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks*. NeurIPS. arXiv:2005.11401.</span>
2.  <span id="cite_note-survey2024-2">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-survey2024_2-0) 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.</span>
3.  <span id="cite_note-langchain-multiquery-3">↑ <sup>[3.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-langchain-multiquery_3-0)</sup> <sup>[3.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-langchain-multiquery_3-1)</sup> <sup>[3.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-langchain-multiquery_3-2)</sup> LangChain Docs. *MultiQueryRetriever*. <a href="https://python.langchain.com/docs/how_to/MultiQueryRetriever/" class="external free" rel="nofollow">https://python.langchain.com/docs/how_to/MultiQueryRetriever/</a></span>
4.  <span id="cite_note-hyde-4">↑ <sup>[4.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-hyde_4-0)</sup> <sup>[4.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-hyde_4-1)</sup> 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.</span>
5.  <span id="cite_note-weaviate-hybrid-5">↑ <sup>[5.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-weaviate-hybrid_5-0)</sup> <sup>[5.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-weaviate-hybrid_5-1)</sup> <sup>[5.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-weaviate-hybrid_5-2)</sup> <sup>[5.3](https://systems-analysis.info/eng/RAG_patterns#cite_ref-weaviate-hybrid_5-3)</sup> <sup>[5.4](https://systems-analysis.info/eng/RAG_patterns#cite_ref-weaviate-hybrid_5-4)</sup> Weaviate Docs. *Hybrid search (BM25+Vector)*. <a href="https://docs.weaviate.io/weaviate/concepts/search/hybrid-search" class="external free" rel="nofollow">https://docs.weaviate.io/weaviate/concepts/search/hybrid-search</a></span>
6.  <span id="cite_note-qdrant-hybrid-6">↑ <sup>[6.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-qdrant-hybrid_6-0)</sup> <sup>[6.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-qdrant-hybrid_6-1)</sup> <sup>[6.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-qdrant-hybrid_6-2)</sup> Qdrant Docs. *Hybrid Queries*. <a href="https://qdrant.tech/documentation/concepts/hybrid-queries/" class="external free" rel="nofollow">https://qdrant.tech/documentation/concepts/hybrid-queries/</a></span>
7.  <span id="cite_note-milvus-fulltext-7">↑ <sup>[7.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-milvus-fulltext_7-0)</sup> <sup>[7.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-milvus-fulltext_7-1)</sup> <sup>[7.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-milvus-fulltext_7-2)</sup> Milvus Docs. *Full‑Text Search* and *Hybrid Search*. <a href="https://milvus.io/docs/full-text-search.md" class="external free" rel="nofollow">https://milvus.io/docs/full-text-search.md</a>; <a href="https://milvus.io/docs/hybrid_search_with_milvus.md" class="external free" rel="nofollow">https://milvus.io/docs/hybrid_search_with_milvus.md</a></span>
8.  <span id="cite_note-nogueira2019-8">↑ <sup>[8.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-nogueira2019_8-0)</sup> <sup>[8.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-nogueira2019_8-1)</sup> <sup>[8.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-nogueira2019_8-2)</sup> <sup>[8.3](https://systems-analysis.info/eng/RAG_patterns#cite_ref-nogueira2019_8-3)</sup> <sup>[8.4](https://systems-analysis.info/eng/RAG_patterns#cite_ref-nogueira2019_8-4)</sup> Nogueira, R., Cho, K. (2019). *Passage Re‑ranking with BERT*. arXiv:1901.04085.</span>
9.  <span id="cite_note-cohere-rerank-9">↑ <sup>[9.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-cohere-rerank_9-0)</sup> <sup>[9.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-cohere-rerank_9-1)</sup> Cohere Docs. *Rerank — best practices*. <a href="https://docs.cohere.com/docs/reranking-best-practices" class="external free" rel="nofollow">https://docs.cohere.com/docs/reranking-best-practices</a></span>
10. <span id="cite_note-llama-router-10">↑ <sup>[10.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-llama-router_10-0)</sup> <sup>[10.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-llama-router_10-1)</sup> <sup>[10.2](https://systems-analysis.info/eng/RAG_patterns#cite_ref-llama-router_10-2)</sup> LlamaIndex Docs. *Routing (query routers/selectors)*. <a href="https://docs.llamaindex.ai/en/stable/module_guides/querying/router/" class="external free" rel="nofollow">https://docs.llamaindex.ai/en/stable/module_guides/querying/router/</a></span>
11. <span id="cite_note-react-11">↑ <sup>[11.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-react_11-0)</sup> <sup>[11.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-react_11-1)</sup> Yao, S., et al. (2023). *ReAct: Synergizing Reasoning and Acting in Language Models*. ICLR 2023. arXiv:2210.03629.</span>
12. <span id="cite_note-webgpt-12">↑ <sup>[12.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-webgpt_12-0)</sup> <sup>[12.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-webgpt_12-1)</sup> Nakano, R., et al. (2021). *WebGPT: Browser‑assisted question‑answering with human feedback*. arXiv:2112.09332.</span>
13. <span id="cite_note-graphrag-13">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-graphrag_13-0) Microsoft Research Blog. *GraphRAG: Unlocking LLM discovery on narrative private data*. 2024. <a href="https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/" class="external free" rel="nofollow">https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/</a></span>
14. <span id="cite_note-graphrag-project-14">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-graphrag-project_14-0) Microsoft Research. *Project GraphRAG*. <a href="https://www.microsoft.com/en-us/research/project/graphrag/" class="external free" rel="nofollow">https://www.microsoft.com/en-us/research/project/graphrag/</a></span>
15. <span id="cite_note-visrag-15">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-visrag_15-0) Yu, S., et al. (2024). *VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents*. arXiv:2410.10594; OpenReview: zG459X3Xge.</span>
16. <span id="cite_note-raptor-16">↑ <sup>[16.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-raptor_16-0)</sup> <sup>[16.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-raptor_16-1)</sup> Sarthi, P., et al. (2024). *RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval*. arXiv:2401.18059.</span>
17. <span id="cite_note-rcsplit-17">↑ <sup>[17.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-rcsplit_17-0)</sup> <sup>[17.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-rcsplit_17-1)</sup> LangChain Docs. *RecursiveCharacterTextSplitter*. <a href="https://python.langchain.com/docs/how_to/recursive_text_splitter/" class="external free" rel="nofollow">https://python.langchain.com/docs/how_to/recursive_text_splitter/</a></span>
18. <span id="cite_note-llama-hier-18">↑ <sup>[18.0](https://systems-analysis.info/eng/RAG_patterns#cite_ref-llama-hier_18-0)</sup> <sup>[18.1](https://systems-analysis.info/eng/RAG_patterns#cite_ref-llama-hier_18-1)</sup> LlamaIndex Docs. *HierarchicalNodeParser* and *Tree Summarization*. <a href="https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html" class="external free" rel="nofollow">https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html</a>; <a href="https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/" class="external free" rel="nofollow">https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/</a></span>
19. <span id="cite_note-ragas-19">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-ragas_19-0) Es, S., et al. (2024). *RAGAs: Automated Evaluation of Retrieval Augmented Generation*. EACL (Demo). <a href="https://aclanthology.org/2024.eacl-demo.16/" class="external free" rel="nofollow">https://aclanthology.org/2024.eacl-demo.16/</a></span>
20. <span id="cite_note-trulens-20">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-trulens_20-0) TruLens Docs. *RAG Triad*. <a href="https://www.trulens.org/getting_started/core_concepts/rag_triad/" class="external free" rel="nofollow">https://www.trulens.org/getting_started/core_concepts/rag_triad/</a></span>
21. <span id="cite_note-deepeval-21">[↑](https://systems-analysis.info/eng/RAG_patterns#cite_ref-deepeval_21-0) DeepEval (GitHub). <a href="https://github.com/confident-ai/deepeval" class="external free" rel="nofollow">https://github.com/confident-ai/deepeval</a></span>
