Отметим: когда 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 с).
Процесс работы
- Аналитика — изучение источников, типов запросов, ожидаемой нагрузки (RPS).
- Проектирование — выбор стека (векторная БД, embedding-модель, чанкинг).
- Реализация — построение ingestion pipeline, retrieval pipeline, integration с LLM.
- Тестирование — evaluation на кастомном датасете, A/B-тестирование разных конфигураций.
- Деплой и мониторинг — развёртывание с помощью 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 недели.







