RAG-паттерны

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

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 сначала генерирует «гипотетический» документ-ответ, затем его эмбеддинг используется для поиска, что часто улучшает качество извлечения[4].
  • Hybrid Retrieval (Гибридный поиск) — комбинация семантического (векторного) и лексического (BM25) поиска. Гибридные схемы стали стандартом для продакшен‑систем: векторный поиск покрывает смысловые соответствия, а BM25 находит точные термины/ID/акронимы; результаты объединяются фьюжном[5][6][7].
  • Re‑ranking (Дополнительное ранжирование) — двухэтапный процесс: быстрый ретривер отдаёт набор кандидатов (например, топ‑100), далее кросс‑энкодер (или иной реранкер) пересчитывает релевантность и отбирает лучшие (например, топ‑5) для LLM[8][9].
  • Query Routing (Маршрутизация запросов) — в системах с несколькими разнородными источниками данных (разные индексы/БД/API) запрос направляется к наилучшему источнику с помощью роутера (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 (Упаковка контекста) — способы интеграции найденных чанков в промпт: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].

Сравнительная таблица паттернов

Сравнение ключевых RAG-паттернов
Паттерн Когда применять Влияние на качество Стоимость / Задержка Риски и ограничения
Classic RAG PoC и простые Q&A над гомогенной базой Базовый уровень; сильно зависит от эмбеддингов[1] Низкая Чувствительность к формулировкам; риск нерелевантного контекста
Hybrid Retrieval В большинстве прод‑сценариев; много кодов/акронимов/ID Повышает полноту; покрывает точные термины[5][6][7] Низкая/Средняя Настройка весов фьюжна; два индекса
Re‑ranking Критичен, когда важна высокая точность Существенный прирост precision на топ‑k[8][9] Средняя/Высокая Доп. задержка/стоимость
Multi‑Query Короткие/многоаспектные запросы Повышает recall[3] Средняя Избыточные/шумные перефразы
HyDE Короткие/неоднозначные запросы с большим «семантическим разрывом» Улучшает качество ретрива zero‑shot[4] Средняя Зависит от качества «гипотетического» текста
Query Routing Несколько источников (док‑база, SQL, API, веб) Повышает релевантность за счёт правильного источника[10] Средняя Ошибка маршрута = провал поиска
Agentic/Web RAG Сложные, исследовательские, многоэтапные запросы Решает задачи за пределами линейного конвейера[11][12] Высокая Сложность, риск зацикливания; нужны гардрейлы

Практическая реализация и архитектура

Этапы внедрения

  1. Proof of Concept (PoC): Начните с Classic RAG на ограниченном, но репрезентативном наборе данных, чтобы проверить качество эмбеддингов и базовый ретрив[1].
  2. Minimum Viable Product (MVP): Внедрите Hybrid Retrieval и Re‑ranking как наилучшее соотношение «усилие/эффект»[5][8].
  3. Production: Добавьте трансформации запросов (HyDE, Multi‑Query) и при необходимости Query Routing; настройте observability (логирование ретрива/реранка/ответов) и A/B‑тестирование[3][10].

Ключевые компоненты

  • Чанкинг (Chunking): Один из самых критичных факторов качества. Наивный фиксированный размер часто разрывает смысловые единицы. Рекомендуются структурно‑ориентированные (по разметке) или рекурсивные сплиттеры (параграф → предложение → слово)[17][18].
  • Эмбеддинги и метаданные: Храните с каждым чанком document_id, страницу/секцию, заголовок, даты; это необходимо для фильтрации и корректного цитирования источников.
  • Гибридный ретрив и реранк: Используйте BM25+вектор с фьюжном (или RRF), затем кросс‑энкодер для переранжирования на небольшом пуле кандидатов[5][6][8].
  • Упаковка контекста: Выбирайте Map‑Reduce, Refine или Tree‑of‑Chunks для длинных корпусов[16][18].

Распространённые ошибки (антипаттерны)

  • Только векторный поиск без BM25 → провалы на кодах/ID/акронимах[5][7].
  • Слишком крупный/мелкий чанк → потеря контекста или «размывание» эмбеддинга[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].

См. также

Литература

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