RAG patterns (RO)

From Systems analysis Wiki
Jump to navigation Jump to search

Tipare RAG (engl. RAG Patterns) — reprezintă un ansamblu de abordări arhitecturale și metodologice pentru construirea sistemelor Retrieval-Augmented Generation (RAG). Aceste tipare sunt destinate rezolvării problemelor fundamentale ale modelelor lingvistice de mari dimensiuni (LLM), precum halucinațiile, uzura cunoștințelor și lipsa specificității de domeniu, prin integrarea LLM cu surse de date externe, accesibile dinamic[1]. Evoluția RAG a parcurs drumul de la pipeline-uri liniare simple la sisteme modulare și agentice complexe[2].

Tipare RAG de bază

Odată cu dezvoltarea tehnologiei, au apărut numeroase tipare RAG, fiecare rezolvând anumite sarcini și prezentând propriile compromisuri între calitate, viteză și cost.

  • Classic RAG (RAG Clasic) — abordare de bază, în care interogarea utilizatorului este vectorizată pentru a căuta fragmente (chunk-uri) relevante într-o bază de date vectorială; chunk-urile găsite sunt furnizate LLM împreună cu întrebarea pentru generarea răspunsului[1].
  • Multi‑Query RAG (Interogări multiple) — LLM generează mai multe variante reformulate/rafinate ale interogării inițiale; căutarea se efectuează după toate variantele, rezultatele sunt reunite, ceea ce crește completitudinea (recall)[3].
  • HyDE (Hypothetical Document Expansion) — pentru depășirea „decalajului semantic" dintre o interogare scurtă și documente lungi. LLM generează mai întâi un document-răspuns „ipotetic", apoi embedding-ul acestuia este utilizat pentru căutare, îmbunătățind adesea calitatea extragerii[4].
  • Hybrid Retrieval (Căutare hibridă) — combinație de căutare semantică (vectorială) și lexicală (BM25). Schemele hibride au devenit standard pentru sistemele de producție: căutarea vectorială acoperă corespondențele semantice, iar BM25 găsește termeni exacți/ID-uri/acronime; rezultatele sunt reunite prin fuziune[5][6][7].
  • Re‑ranking (Reordonare suplimentară) — proces în două etape: un retriever rapid returnează un set de candidați (de exemplu, top‑100), după care un cross-encoder (sau alt reranker) recalculează relevanța și selectează cele mai bune rezultate (de exemplu, top‑5) pentru LLM[8][9].
  • Query Routing (Rutarea interogărilor) — în sistemele cu mai multe surse de date eterogene (indecși/baze de date/API-uri diferite), interogarea este direcționată către cea mai bună sursă cu ajutorul unui router (selector LLM sau clasificator); include strategii de fallback[10].
  • Agentic/Web RAG (RAG Agentic) — LLM acționează ca agent: descompune întrebări complexe, planifică iterații și utilizează instrumente (căutare vectorială, căutare web) cu feedback. Implementarea tipică este paradigma ReAct[11]; pentru colectare orientată spre web și citare obligatorie, vezi WebGPT[12].

Paradigme conexe și în curs de dezvoltare

  • GraphRAG (RAG Grafic) — utilizează un graf de cunoștințe ca sursă și mecanism de selecție a contextului; căutarea se realizează după structura relațiilor dintre entități și după text, sporind interpretabilitatea și calitatea pe întrebări multi-hop[13][14].
  • MM‑RAG (RAG Multimodal) — lucrul cu surse text și vizuale (scanări/scheme/tabele). Exemplu: VisRAG demonstrează retrieval și generare orientate spre VLM pe documente multimodale[15].
  • Packaging & Context Handling (Ambalarea contextului) — modalități de integrare a chunk-urilor găsite în prompt: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].

Tabel comparativ al tiparelor

Compararea tiparelor RAG cheie
Tipar Când se aplică Impactul asupra calității Cost / Latență Riscuri și limitări
Classic RAG PoC și Q&A simple pe o bază omogenă Nivel de bază; depinde puternic de embedding-uri[1] Scăzut Sensibilitate la formulări; risc de context irelevant
Hybrid Retrieval În majoritatea scenariilor de producție; multe coduri/acronime/ID-uri Crește completitudinea; acoperă termeni exacți[5][6][7] Scăzut/Mediu Ajustarea ponderilor de fuziune; doi indecși
Re‑ranking Critic atunci când precizia ridicată este importantă Câștig substanțial de precizie la top‑k[8][9] Mediu/Ridicat Latență/cost suplimentar
Multi‑Query Interogări scurte/cu multiple aspecte Crește recall-ul[3] Mediu Reformulări redundante/zgomotoase
HyDE Interogări scurte/ambigue cu un „decalaj semantic" mare Îmbunătățește calitatea retrieval-ului zero‑shot[4] Mediu Depinde de calitatea textului „ipotetic"
Query Routing Mai multe surse (baze documentare, SQL, API, web) Crește relevanța prin alegerea sursei corecte[10] Mediu Eroare de rutare = eșecul căutării
Agentic/Web RAG Interogări complexe, de cercetare, cu mai mulți pași Rezolvă sarcini dincolo de pipeline-ul liniar[11][12] Ridicat Complexitate, risc de buclare infinită; necesită garduri de siguranță

Implementare practică și arhitectură

Etapele implementării

  1. Proof of Concept (PoC): Începeți cu Classic RAG pe un set de date limitat, dar reprezentativ, pentru a verifica calitatea embedding-urilor și retrieval-ul de bază[1].
  2. Minimum Viable Product (MVP): Implementați Hybrid Retrieval și Re‑ranking ca cel mai bun raport „efort/efect\"[5][8].
  3. Producție: Adăugați transformări ale interogărilor (HyDE, Multi‑Query) și, dacă este necesar, Query Routing; configurați observabilitatea (logarea retrieval-ului/rerank-ului/răspunsurilor) și testarea A/B[3][10].

Componente cheie

  • Chunking (Segmentare): Unul dintre cei mai critici factori de calitate. Dimensiunea fixă naivă fragmentează adesea unitățile semantice. Se recomandă splitter-e orientate structural (după marcaj) sau recursive (paragraf → propoziție → cuvânt)[17][18].
  • Embedding-uri și metadate: Stocați împreună cu fiecare chunk: document_id, pagina/secțiunea, titlul, datele; aceasta este necesar pentru filtrare și citarea corectă a surselor.
  • Retrieval hibrid și rerank: Utilizați BM25+vector cu fuziune (sau RRF), apoi cross-encoder pentru reordonare pe un pool mic de candidați[5][6][8].
  • Ambalarea contextului: Alegeți Map‑Reduce, Refine sau Tree‑of‑Chunks pentru corpus-uri lungi[16][18].

Greșeli frecvente (anti-tipare)

  • Doar căutare vectorială fără BM25 → eșecuri pe coduri/ID-uri/acronime[5][7].
  • Chunk prea mare/mic → pierderea contextului sau „diluarea" embedding-ului[17].
  • Absența rerank-ului în producție → LLM primește context zgomotos[8].
  • Fără observabilitate și trasabilitatea surselor → imposibilitatea analizării cauzelor erorilor (vezi evaluarea RAG).

Evaluarea calității și metrici

Evaluarea se efectuează la nivelul retrieval-ului (offline) și end‑to‑end (generare).

Metrici ale retriever-ului

  • Hit Rate, Recall@k, MRR — acoperirea și poziția documentelor relevante.
  • Context Precision & Recall — în ce măsură contextul extras este lipsit de „zgomot" și acoperă tot ce este necesar (implementat în RAGAS)[19].

Metrici ale generatorului (end‑to‑end)

  • Faithfulness / Groundedness — corespondența răspunsului cu contextul furnizat.
  • Answer Relevancy (Relevanța răspunsului) — corespondența cu întrebarea inițială.

Pentru automatizarea metricilor se utilizează framework-uri open‑source: RAGAS, TruLens (RAG triad: relevanța contextului, groundedness, relevanța răspunsului), DeepEval[20][21].

Vezi și

  • Retrieval-Augmented Generation (RAG)
  • Baze de date vectoriale
  • Embedding
  • Agent AI
  • GraphRAG
  • MM-RAG
  • Evaluarea și benchmark-urile LLM

Literatură

  • 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].

Note

  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