RAG-minták
RAG-minták (ang. RAG Patterns) — az Retrieval-Augmented Generation (RAG) rendszerek felépítéséhez alkalmazott architekturális és módszertani megközelítések összessége. Ezek a minták a nagy nyelvi modellek (LLM) alapvető problémáinak — mint a hallucináció, az elavult tudás és a domainspecifikusság hiánya — megoldására szolgálnak azáltal, hogy az LLM-eket külső, dinamikusan elérhető adatforrásokkal integrálják[1]. A RAG fejlődése az egyszerű lineáris pipeline-októl az összetett moduláris és ágens alapú rendszerekig ívelt[2].
RAG-minták - A RAG főbb mintái
A technológia fejlődésével számos RAG-minta jelent meg, amelyek mindegyike meghatározott feladatokat old meg, és saját kompromisszumokat rejt a minőség, a sebesség és a költség között.
- Classic RAG (Klasszikus RAG) — az alapmegközelítés, amelyben a felhasználói kérést vektorizálják, hogy releváns szövegrészleteket (chunk-okat) keressenek a vektoros adatbázisban; a megtalált chunk-okat a kérdéssel együtt adják át az LLM-nek a válasz generálásához[1].
- Multi‑Query RAG (Többszörös lekérdezés) — az LLM több átfogalmazott/finomított változatot generál az eredeti lekérdezésből; a keresés az összes változaton fut le, az eredmények összevonásra kerülnek, ami növeli a teljességet (recall)[3].
- HyDE (Hypothetical Document Expansion) — a rövid lekérdezés és a hosszú dokumentumok közötti „szemantikai szakadék" áthidalására szolgál. Az LLM először egy „hipotetikus" válaszdokumentumot generál, majd annak embedding-je kerül felhasználásra a kereséshez, ami gyakran javítja a visszakeresés minőségét[4].
- Hybrid Retrieval (Hibrid keresés) — a szemantikai (vektoros) és a lexikális (BM25) keresés kombinációja. A hibrid sémák az éles rendszerek standardjává váltak: a vektoros keresés a szemantikai egyezéseket fedezi, a BM25 pedig pontos kifejezéseket/azonosítókat/mozaikszavakat talál; az eredményeket fusion módszerrel egyesítik[5][6][7].
- Re‑ranking (Újrarangsorolás) — kétlépéses folyamat: egy gyors retriever jelöltkészletet ad vissza (pl. top‑100), majd egy cross-encoder (vagy más reranker) újraszámítja a relevanciát, és kiválasztja a legjobbakat (pl. top‑5) az LLM számára[8][9].
- Query Routing (Lekérdezés-útválasztás) — több heterogén adatforrást (különböző indexek/adatbázisok/API-k) tartalmazó rendszerekben a lekérdezést egy router (LLM-szelektor vagy osztályozó) irányítja a legjobb forráshoz; tartalmaz fallback-stratégiákat[10].
- Agentic/Web RAG (Ágens alapú RAG) — az LLM ágensként viselkedik: összetett kérdéseket bont le, iterációkat tervez, és visszacsatolással használja az eszközöket (vektoros keresés, webkeresés). Tipikus megvalósítás a ReAct paradigma[11]; weborientált adatgyűjtéshez és kötelező forrásmegjelöléshez lásd a WebGPT-t[12].
Kapcsolódó és fejlődő paradigmák
- GraphRAG (Gráf alapú RAG) — tudásgráfot használ forrásként és kontextusskiválasztási mechanizmusként; a keresés az entitások közötti kapcsolatok struktúráján és a szövegen keresztül történik, ami javítja az értelmezhetőséget és a minőséget a többugrású (multi‑hop) kérdéseknél[13][14].
- MM‑RAG (Multimodális RAG) — szöveges és vizuális forrásokkal (szkennelt dokumentumok/ábrák/táblázatok) dolgozik. Példa: a VisRAG VLM-orientált visszakeresést és generálást mutat be multimodális dokumentumokon[15].
- Packaging & Context Handling (Kontextuscsomagolás) — a megtalált chunk-ok prompt-ba integrálásának módjai: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].
A minták összehasonlító táblázata
| Minta | Mikor alkalmazzuk | Hatás a minőségre | Költség / Késleltetés | Kockázatok és korlátok |
|---|---|---|---|---|
| Classic RAG | PoC és egyszerű Q&A homogén adatbázis felett | Alapszint; erősen függ az embedding-ektől[1] | Alacsony | Érzékenység a megfogalmazásra; irreleváns kontextus kockázata |
| Hybrid Retrieval | A legtöbb éles forgatókönyvben; sok kód/mozaikszó/azonosító esetén | Növeli a teljességet; fedezi a pontos kifejezéseket[5][6][7] | Alacsony/Közepes | Fusion-súlyok beállítása; két index |
| Re‑ranking | Kritikus, ha magas pontosság szükséges | Jelentős precision-növekedés a top‑k esetén[8][9] | Közepes/Magas | Plusz késleltetés/költség |
| Multi‑Query | Rövid/többszempontú lekérdezések | Növeli a recall értékét[3] | Közepes | Redundáns/zajos átfogalmazások |
| HyDE | Rövid/kétértelmű lekérdezések nagy „szemantikai szakadékkal\" | Javítja a zero‑shot visszakeresés minőségét[4] | Közepes | Függ a „hipotetikus" szöveg minőségétől |
| Query Routing | Több forrás (dokumentumadatbázis, SQL, API, web) | Növeli a relevanciát a megfelelő forrás kiválasztásával[10] | Közepes | Hibás útvonal = sikertelen keresés |
| Agentic/Web RAG | Összetett, kutatási jellegű, többlépéses lekérdezések | Lineáris pipeline határain túlmutató feladatok megoldása[11][12] | Magas | Összetettség, végtelen ciklus kockázata; guardrail-ek szükségesek |
Gyakorlati megvalósítás és architektúra
Bevezetési lépések
- Proof of Concept (PoC): Kezdje a Classic RAG-gel egy korlátozott, de reprezentatív adatkészleten, hogy ellenőrizze az embedding-ek minőségét és az alapvető visszakeresést[1].
- Minimum Viable Product (MVP): Vezesse be a Hybrid Retrieval és a Re‑ranking megközelítést a legjobb „ráfordítás/hatás" arányként[5][8].
- Éles üzem (Production): Adjon hozzá lekérdezés-transzformációkat (HyDE, Multi‑Query) és szükség esetén Query Routing-ot; állítsa be az observability-t (visszakeresés/reranking/válaszok naplózása) és az A/B-tesztelést[3][10].
Főbb komponensek
- Darabolás (Chunking): A minőség egyik legkritikusabb tényezője. A naiv, rögzített méretű darabolás gyakran szétszakítja a szemantikai egységeket. Struktúra-orientált (jelölés alapú) vagy rekurzív felosztók ajánlottak (bekezdés → mondat → szó)[17][18].
- Embedding-ek és metaadatok: Minden chunk-hoz tárolja a document_id-t, az oldal-/szekciószámot, a címet és a dátumokat; ez szükséges a szűréshez és a helyes forrásmegjelöléshez.
- Hibrid visszakeresés és reranking: Használja a BM25+vektor kombinációt fusion módszerrel (vagy RRF-fel), majd cross-encodert az újrarangsoroláshoz egy kisebb jelöltkészleten[5][6][8].
- Kontextuscsomagolás: Válassza a Map‑Reduce, Refine vagy Tree‑of‑Chunks megközelítést hosszú korpuszokhoz[16][18].
Gyakori hibák (antiminták)
- Csak vektoros keresés BM25 nélkül → kudarcok kódok/azonosítók/mozaikszavak esetén[5][7].
- Túl nagy/kis chunk-méret → kontextusvesztés vagy az embedding „elmosódása"[17].
- Reranking hiánya éles üzemben → az LLM zajos kontextust kap[8].
- Nincs observability és forrásnaplózás → a hibák okait lehetetlen feltárni (lásd a RAG kiértékelését).
Minőségértékelés és metrikák
Az értékelés a visszakeresés szintjén (offline) és végpontok közötti (generálás) szinten történik.
A retriever metrikái
- Hit Rate, Recall@k, MRR — a releváns dokumentumok lefedettsége és pozíciója.
- Context Precision & Recall — mennyire mentes a kinyert kontextus a „zajtól", és mennyire fedi le a szükséges információt (a RAGAS-ban implementálva)[19].
A generátor metrikái (végpontok közötti)
- Faithfulness / Groundedness — a válasz megfelelése a megadott kontextusnak.
- Answer Relevancy (Válasz-relevancia) — az eredeti kérdésnek való megfelelés.
A metrikák automatizálásához nyílt forráskódú keretrendszerek állnak rendelkezésre: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].
Lásd még
- Retrieval-Augmented Generation (RAG)
- Vektoros adatbázisok
- Embedding
- AI-ágens
- GraphRAG
- MM-RAG
- LLM kiértékelés és benchmark-ok
Irodalom
- 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].
Megjegyzések
- ↑ 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