Проектирование архитектуры RAG-пайплайна

Отметим: когда RAG-пайплайн выдаёт нерелевантные результаты, проблема чаще всего в архитектуре retrieval'а. Базовый RAG «работает» за день, но production-ready система с надёжным retrieval, мониторингом и управляемой стоимостью требует тщательного проектирования. Мы спроектировали и внедрили более 3

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Отметим: когда RAG-пайплайн выдаёт нерелевантные результаты, проблема чаще всего в архитектуре retrieval'а. Базовый RAG «работает» за день, но production-ready система с надёжным retrieval, мониторингом и управляемой стоимостью требует тщательного проектирования. Мы спроектировали и внедрили более 30 RAG-систем для разных индустрий — от юридических документов до техподдержки. Наш опыт говорит: 70% успеха — в архитектуре pipeline'а. Например, один клиент из FinTech использовал dense-only поиск и получал recall 0.65. После внедрения гибридного поиска с reranker'ом recall вырос до 0.92, а latency p99 остался под 200 мс — это существенно сократило затраты на перезапросы к LLM. Retrieval-Augmented Generation — это не просто модный термин, а зрелая техника, которая требует грамотной инженерной реализации.

Компоненты современного RAG-пайплайна

┌─────────────────────────────────────────────────────┐ │ INGESTION PIPELINE │ │ Sources → Loaders → Parsers → Chunkers → Embedder │ │ → Metadata Extractor → Vector Store │ └─────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────┐ │ RETRIEVAL PIPELINE │ │ Query → Query Transformer → Multi-Index Search │ │ → Reranker → Context Assembler │ └─────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────┐ │ GENERATION PIPELINE │ │ Context + Query → Prompt Builder → LLM │ │ → Response Validator → User │ └─────────────────────────────────────────────────────┘ 

Как выбрать стратегию чанкинга?

Чанкинг определяет качество retrieval. Фиксированный размер 256-512 токенов прост, но теряет контекст. Структурный чанкинг по заголовкам разделов даёт лучшие результаты для документов с чёткой иерархией. Сравнение:

Стратегия Когда использовать Recall@10 Latency
Фиксированный 256 токенов Short texts, FAQ 0.78 2 ms
Рекурсивный с overlap 15% General documents 0.85 5 ms
Семантический сплиттер Длинные нарративы 0.88 12 ms
Структурный (по заголовкам) Юридические, технические 0.92 8 ms

Мы используем семантический сплиттер на основе границ предложений с перекрытием 10%. Это даёт баланс качества и скорости. Для каждого документа нужны метаданные (источник, дата, тип).

Почему гибридный поиск (sparse + dense) необходим?

Dense embedding отлично находит семантические дубли, но плохо справляется с редкими терминами или аббревиатурами. Sparse (BM25) — наоборот. Согласно документации Qdrant, гибридный поиск с Reciprocal Rank Fusion (RRF) повышает метрики релевантности на 20-30%. Гибридный поиск комбинирует оба подхода.

from qdrant_client import QdrantClient from qdrant_client.models import SparseVector def hybrid_search(query, top_k=10): dense_vector = embedder.embed_query(query) sparse_vector = sparse_encoder.encode(query) results = client.query_points( collection_name="docs", prefetch=[ {"query": dense_vector, "using": "dense", "limit": 30}, {"query": SparseVector(indices=sparse_vector.indices, values=sparse_vector.values), "using": "sparse", "limit": 30}, ], query=rrf_fusion, # Reciprocal Rank Fusion limit=top_k, ) return results 

В наших проектах гибридный поиск повышает Recall@10 на 25-30% по сравнению с dense-only — в 1.25-1.3 раза. Дополнительно используем reranker на базе cross-encoder (например, ms-marco-MiniLM-L-12-v2), который переупорядочивает top-30 результатов до top-5. Это улучшает точность в 1.5-2 раза.

Оценка качества retrieval

Для production нужно закладывать evaluation framework с набором метрик: Recall@k, MRR, NDCG. Мы используем кастомный датасет из 500+ запросов с разметкой релевантности. Нагрузочное тестирование проверяет latency p99 — обычно target < 500 мс. Мониторинг в проде фиксирует дрифт данных и деградацию метрик.

Сравнение embedding-моделей

Модель Размерность Recall@10 (ours) Применение
text-embedding-ada-002 (OpenAI) 1536 0.85 Облачное, простота
embed-english-v3.0 (Cohere) 1024 0.87 Мультиязычность
intfloat/e5-large-v2 (open-source) 1024 0.84 Self-hosting, экономия

Для production мы рекомендуем open-source модели (E5, BGE) с self-hosting — это снижает операционные расходы в несколько раз при сопоставимом качестве.

Типичные ошибки при проектировании RAG
  • Недостаточное количество чанков: если чанк слишком длинный (>1024 токенов), LLM теряет контекст.
  • Отсутствие гибридного поиска: dense-only пропускает термины с низкой частотой.
  • Невыполнение оценки (evaluation): без валидации на репрезентативном датасете вы не знаете реальное качество.
  • Игнорирование латентности: pipeline должен укладываться в SLA (обычно p99 < 1 с).

Процесс работы

  1. Аналитика — изучение источников, типов запросов, ожидаемой нагрузки (RPS).
  2. Проектирование — выбор стека (векторная БД, embedding-модель, чанкинг).
  3. Реализация — построение ingestion pipeline, retrieval pipeline, integration с LLM.
  4. Тестирование — evaluation на кастомном датасете, A/B-тестирование разных конфигураций.
  5. Деплой и мониторинг — развёртывание с помощью Docker/Kubernetes, настройка оповещений по latency и recall.

Что входит в работу

  • Документация архитектуры (диаграммы, спецификация компонентов)
  • Выбор стека и обоснование (векторная БД, embedding, LLM)
  • Прототип пайплайна с гибридным поиском и reranker'ом
  • Evaluation framework с набором метрик
  • Интеграция с существующей инфраструктурой
  • Обучение команды заказчика и код-ревью
  • Поддержка на этапе внедрения (до 1 месяца)

Сроки ориентировочно

  • Проектирование: 1 неделя
  • Ingestion pipeline: 1–2 недели
  • Retrieval pipeline с reranker'ом: 2–3 недели
  • Evaluation и оптимизация: 1–2 недели
  • Production hardening: 1–2 недели
  • Итого: 6–10 недель в зависимости от сложности

Стоимость рассчитывается индивидуально — свяжитесь с нами, получите консультацию по архитектуре RAG для вашего проекта. Гарантируем, что результат будет соответствовать best practices MLOps и вашим SLA. Гибридный поиск снижает затраты на LLM-инференс на 30-50%, что особенно заметно при высоких нагрузках. Закажите проектирование RAG-пайплайна и получите working prototype уже через 3 недели.