RAG patterns (BG)
RAG-паттерни (англ. RAG Patterns) — това е набор от архитектурни и методологични подходи за изграждане на системи Retrieval-Augmented Generation (RAG). Тези паттерни са предназначени за решаване на фундаментални проблеми на големите езикови модели (LLM), като халюцинации, остаряване на знанията и липса на домейн-специфика, чрез интегриране на LLM с външни, динамично достъпни източници на данни[1]. Еволюцията на RAG е извървяла пътя от прости линейни конвейери до сложни модулни и агентни системи[2].
Основни паттерни на RAG
С развитието на технологията се появиха множество RAG‑паттерни, всеки от които решава определени задачи и има свои компромиси между качество, скорост и цена.
- Classic RAG (Класически RAG) — базов подход, при който заявката на потребителя се векторизира за търсене на релевантни фрагменти (чанкове) във векторна БД; намерените чанкове се подават на LLM заедно с въпроса за генериране на отговор[1].
- Multi‑Query RAG (Множествени заявки) — LLM генерира няколко перефразирани/уточнени варианта на изходната заявка; търсенето се извършва по всички варианти, резултатите се обединяват, което повишава пълнотата (recall)[3].
- HyDE (Hypothetical Document Expansion) — за преодоляване на „семантичната пропаст" между кратка заявка и дълги документи. LLM първо генерира „хипотетичен" документ-отговор, след което неговият embedding се използва за търсене, което често подобрява качеството на извличане[4].
- Hybrid Retrieval (Хибридно търсене) — комбинация от семантично (векторно) и лексикално (BM25) търсене. Хибридните схеми са се превърнали в стандарт за продакшън‑системи: векторното търсене покрива смислови съответствия, а BM25 открива точни термини/ID/акроними; резултатите се обединяват чрез fusion[5][6][7].
- Re‑ranking (Допълнително класиране) — двуетапен процес: бърз ретривер връща набор от кандидати (например топ‑100), след което кросс‑енкодер (или друг реранкер) преизчислява релевантността и отбира най-добрите (например топ‑5) за LLM[8][9].
- Query Routing (Маршрутизиране на заявки) — в системи с няколко разнородни източници на данни (различни индекси/БД/API) заявката се насочва към най-подходящия източник с помощта на router (LLM‑селектор или класификатор); включва fallback‑стратегии[10].
- Agentic/Web RAG (Агентен RAG) — LLM действа като агент: декомпозира сложни въпроси, планира итерации и използва инструменти (векторно търсене, уеб‑търсене) с обратна връзка. Типична реализация — парадигмата ReAct[11]; за уеб‑ориентирано събиране и задължително цитиране вж. WebGPT[12].
Свързани и развиващи се парадигми
- GraphRAG (Графов RAG) — използва граф на знанията като източник и механизъм за избор на контекст; търсенето се извършва по структурата на връзките между същностите и по текст, повишавайки интерпретируемостта и качеството при multi‑hop въпроси[13][14].
- MM‑RAG (Мултимодален RAG) — работа с текстови и визуални източници (сканове/схеми/таблици). Пример: VisRAG демонстрира VLM‑ориентиран ретрив и генерация върху мултимодални документи[15].
- Packaging & Context Handling (Опаковане на контекста) — начини за интегриране на намерените чанкове в prompt: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].
Сравнителна таблица на паттерните
| Паттерн | Кога да се прилага | Влияние върху качеството | Цена / Латентност | Рискове и ограничения |
|---|---|---|---|---|
| Classic RAG | PoC и прости Q&A върху хомогенна база | Базово ниво; силно зависи от embeddings[1] | Ниска | Чувствителност към формулировки; риск от нерелевантен контекст |
| Hybrid Retrieval | В повечето продакшън‑сценарии; много кодове/акроними/ID | Повишава пълнотата; покрива точни термини[5][6][7] | Ниска/Средна | Настройка на теглата при fusion; два индекса |
| Re‑ranking | Критично, когато е важна висока точност | Съществен ръст на precision при топ‑k[8][9] | Средна/Висока | Допълнителна латентност/цена |
| Multi‑Query | Кратки/многоаспектни заявки | Повишава recall[3] | Средна | Излишни/шумни перефрази |
| HyDE | Кратки/неясни заявки с голяма „семантична пропаст" | Подобрява качеството на ретрива zero‑shot[4] | Средна | Зависи от качеството на „хипотетичния" текст |
| Query Routing | Няколко източника (документна база, SQL, API, уеб) | Повишава релевантността чрез правилния източник[10] | Средна | Грешен маршрут = неуспешно търсене |
| Agentic/Web RAG | Сложни, изследователски, многоетапни заявки | Решава задачи извън линейния конвейер[11][12] | Висока | Сложност, риск от зацикляне; необходими са guardrails |
Практическа реализация и архитектура
Етапи на внедряване
- Proof of Concept (PoC): Започнете с Classic RAG върху ограничен, но представителен набор от данни, за да проверите качеството на embeddings и базовия ретрив[1].
- Minimum Viable Product (MVP): Внедрете Hybrid Retrieval и Re‑ranking като най-добро съотношение „усилие/ефект"[5][8].
- Продакшън: Добавете трансформации на заявките (HyDE, Multi‑Query) и при необходимост Query Routing; настройте observability (логване на ретрива/реранка/отговорите) и A/B‑тестване[3][10].
Ключови компоненти
- Чанкинг (Chunking): Един от най-критичните фактори за качество. Наивният фиксиран размер често разкъсва смислови единици. Препоръчват се структурно‑ориентирани (по маркиране) или рекурсивни сплитери (параграф → изречение → дума)[17][18].
- Embeddings и метаданни: Съхранявайте с всеки чанк document_id, страница/секция, заглавие, дати; това е необходимо за филтриране и коректно цитиране на източници.
- Хибриден ретрив и реранк: Използвайте BM25+вектор с fusion (или RRF), след това кросс‑енкодер за преранжиране върху малък пул от кандидати[5][6][8].
- Опаковане на контекста: Избирайте Map‑Reduce, Refine или Tree‑of‑Chunks за дълги корпуси[16][18].
Чести грешки (антипаттерни)
- Само векторно търсене без BM25 → провали при кодове/ID/акроними[5][7].
- Прекалено голям/малък чанк → загуба на контекст или „размиване" на embedding[17].
- Липса на реранк в продакшъна → LLM получава шумен контекст[8].
- Няма observability и трейсване на източници → невъзможно е да се анализират причините за грешки (вж. оценка на RAG).
Оценка на качеството и метрики
Оценката се провежда на ниво ретривер (офлайн) и end‑to‑end (генерация).
Метрики на ретривера
- Hit Rate, Recall@k, MRR — покритие и позиция на релевантните документи.
- Context Precision & Recall — доколко извлеченият контекст е без „шум" и покрива всичко необходимо (реализирано в RAGAS)[19].
Метрики на генератора (end‑to‑end)
- Faithfulness / Groundedness — съответствие на отговора с предоставения контекст.
- Answer Relevancy (Релевантност на отговора) — съответствие с изходния въпрос.
За автоматизиране на метриките се използват open‑source фреймворки: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].
Вижте също
- Retrieval-Augmented Generation (RAG)
- Векторни бази данни
- Embedding
- AI-агент
- GraphRAG
- MM-RAG
- Оценка и benchmark-ове на LLM
Литература
- 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].
Бележки
- ↑ 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