RAG-mönster
RAG-mönster (eng. RAG Patterns) — är en uppsättning arkitekturella och metodologiska angreppssätt för att bygga Retrieval-Augmented Generation (RAG)-system. Dessa mönster är avsedda för att lösa grundläggande problem hos stora språkmodeller (LLM), såsom hallucinationer, föråldrad kunskap och brist på domänspecificitet, genom att integrera LLM med externa, dynamiskt tillgängliga datakällor[1]. RAG:s evolution har gått från enkla linjära pipelines till komplexa modulära och agentbaserade system[2].
Grundläggande RAG-mönster
Med teknikens utveckling har ett flertal RAG-mönster uppstått, vart och ett med syfte att lösa specifika uppgifter och med sina egna avvägningar mellan kvalitet, hastighet och kostnad.
- Classic RAG (Klassisk RAG) — det grundläggande angreppssättet, där användarens fråga vektoriseras för att söka efter relevanta fragment (chunks) i en vektordatabas; de funna chunksen skickas till LLM tillsammans med frågan för att generera ett svar[1].
- Multi‑Query RAG (Multipla frågor) — LLM genererar flera omformulerade/förfinade varianter av den ursprungliga frågan; sökning utförs på alla varianter, resultaten kombineras, vilket ökar täckningen (recall)[3].
- HyDE (Hypothetical Document Expansion) — för att överbrygga det "semantiska gapet" mellan en kort fråga och långa dokument. LLM genererar först ett "hypotetiskt" svarsdokument, varefter dess embedding används för sökning, vilket ofta förbättrar extraktionskvaliteten[4].
- Hybrid Retrieval (Hybridsökning) — en kombination av semantisk (vektor) och lexikal (BM25) sökning. Hybridscheman har blivit standard för produktionssystem: vektorsökning täcker semantiska matchningar, medan BM25 hittar exakta termer/ID/akronymer; resultaten kombineras genom fusion[5][6][7].
- Re‑ranking (Omrangordning) — en tvåstegsprocess: en snabb retriever returnerar en kandidatmängd (t.ex. topp‑100), varefter en korsenkodare (eller annan reranker) räknar om relevansen och väljer ut de bästa (t.ex. topp‑5) för LLM[8][9].
- Query Routing (Frågestyrning) — i system med flera heterogena datakällor (olika index/databaser/API:er) dirigeras frågan till den mest lämpliga källan med hjälp av en router (LLM-selektor eller klassificerare); inkluderar fallback-strategier[10].
- Agentic/Web RAG (Agentbaserad RAG) — LLM agerar som agent: dekomponerar komplexa frågor, planerar iterationer och använder verktyg (vektorsökning, webbsökning) med återkoppling. En typisk implementering är ReAct-paradigmen[11]; för webbinriktad insamling och obligatorisk citering, se WebGPT[12].
Besläktade och framväxande paradigmer
- GraphRAG (Grafbaserad RAG) — använder en kunskapsgraf som källa och mekanism för kontextval; sökning sker längs relationsstrukturen mellan entiteter och i text, vilket förbättrar tolkningsbarhet och kvalitet på multi-hop-frågor[13][14].
- MM‑RAG (Multimodal RAG) — hanterar text och visuella källor (skannade dokument/diagram/tabeller). Exempel: VisRAG demonstrerar VLM-orienterad retrieval och generering på multimodala dokument[15].
- Packaging & Context Handling (Kontextpaketering) — sätt att integrera hittade chunks i prompten: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].
Jämförelsetabell över mönster
| Mönster | När det används | Inverkan på kvalitet | Kostnad / Latens | Risker och begränsningar |
|---|---|---|---|---|
| Classic RAG | PoC och enkla Q&A över en homogen databas | Grundläggande nivå; starkt beroende av embeddings[1] | Låg | Känslighet för formuleringar; risk för irrelevant kontext |
| Hybrid Retrieval | I de flesta produktionsscenarier; många koder/akronymer/ID | Ökar täckning; täcker exakta termer[5][6][7] | Låg/Medel | Justering av fusionsvikter; två index |
| Re‑ranking | Kritiskt när hög precision är viktig | Betydande ökning av precision i topp‑k[8][9] | Medel/Hög | Extra latens/kostnad |
| Multi‑Query | Korta/mångfacetterade frågor | Ökar recall[3] | Medel | Överflödiga/brusiga omformuleringar |
| HyDE | Korta/tvetydiga frågor med stort "semantiskt gap" | Förbättrar retrieval-kvalitet zero‑shot[4] | Medel | Beror på kvaliteten hos den "hypotetiska" texten |
| Query Routing | Flera källor (dokumentbas, SQL, API, webb) | Ökar relevans tack vare rätt källa[10] | Medel | Fel route = misslyckad sökning |
| Agentic/Web RAG | Komplexa, undersökande, flerstegs-frågor | Löser uppgifter bortom den linjära pipelinen[11][12] | Hög | Komplexitet, risk för loopar; guardrails krävs |
Praktisk implementering och arkitektur
Implementeringssteg
- Proof of Concept (PoC): Börja med Classic RAG på ett begränsat men representativt dataset för att verifiera embedding-kvalitet och grundläggande retrieval[1].
- Minimum Viable Product (MVP): Implementera Hybrid Retrieval och Re‑ranking som det bästa förhållandet mellan insats och effekt[5][8].
- Produktion: Lägg till frågetransformationer (HyDE, Multi‑Query) och vid behov Query Routing; konfigurera observability (loggning av retrieval/rerank/svar) och A/B-testning[3][10].
Nyckelkomponenter
- Chunkning (Chunking): En av de mest kritiska kvalitetsfaktorerna. Naiv fast storlek delar ofta upp semantiska enheter. Strukturorienterade (markupbaserade) eller rekursiva splitters rekommenderas (stycke → mening → ord)[17][18].
- Embeddings och metadata: Lagra document_id, sida/sektion, rubrik, datum med varje chunk; detta är nödvändigt för filtrering och korrekt källcitering.
- Hybrid retrieval och rerank: Använd BM25+vektor med fusion (eller RRF), sedan korsenkodare för omrangordning på en liten kandidatpool[5][6][8].
- Kontextpaketering: Välj Map‑Reduce, Refine eller Tree‑of‑Chunks för långa korpusar[16][18].
Vanliga misstag (antimönster)
- Endast vektorsökning utan BM25 → misslyckanden på koder/ID/akronymer[5][7].
- För stor/liten chunk → förlust av kontext eller "utspädning" av embedding[17].
- Avsaknad av rerank i produktion → LLM får brusig kontext[8].
- Ingen observability och källspårning → omöjligt att analysera felorsaker (se RAG-utvärdering).
Kvalitetsutvärdering och mätvärden
Utvärdering sker på retrieval-nivå (offline) och end‑to‑end (generering).
Retriever-mätvärden
- Hit Rate, Recall@k, MRR — täckning och position för relevanta dokument.
- Context Precision & Recall — i vilken mån den extraherade kontexten är fri från "brus" och täcker allt som behövs (implementerat i RAGAS)[19].
Generator-mätvärden (end‑to‑end)
- Faithfulness / Groundedness — svarets överensstämmelse med den tillhandahållna kontexten.
- Answer Relevancy (Svarensrelevans) — överensstämmelse med den ursprungliga frågan.
För automatisering av mätvärden används open‑source-ramverk: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].
Se även
- Retrieval-Augmented Generation (RAG)
- Vektordatabaser
- Embedding
- AI-agent
- GraphRAG
- MM-RAG
- Utvärdering och benchmark för LLM
Litteratur
- 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].
Noter
- ↑ 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