Приватный RAG на 100 000 документов: архитектура и железо
Сто тысяч документов — это не «RAG побольше», а другой класс системы. При среднем документе в 25–40 страниц корпус даёт 1–1,5 млрд токенов и 2–3 млн чанков, и...
Сто тысяч документов — это не «RAG побольше», а другой класс системы. При среднем документе в 25–40 страниц корпус даёт 1–1,5 млрд токенов и 2–3 млн чанков, и на таких числах ломается наивная схема «один векторный индекс плюс одна модель». Ниже — рабочая архитектура и конфигурация железа, проверенная на корпоративных контурах.
Разделяйте offline- и online-конвейеры
Индексация и ответ на запрос — разные подсистемы с разными требованиями к ресурсам. Offline: OCR сканов, нормализация, дедупликация, чанкинг, расчёт эмбеддингов батчами, запись в индекс. Online: гибридный поиск, реранк, сборка контекста, генерация с цитатами. Смешивание этих потоков на одном узле — типовая причина, почему поиск «тормозит» во время ночной переиндексации.
Индексация: чанки, эмбеддинги, версии
Резать по структуре, а не по 1000 символов: заголовки, пункты, таблицы как отдельные сущности. Практичный размер — 400–600 токенов с перекрытием 15%, эмбеддинги — bge-m3 или multilingual-e5-large (1024 измерения). Для 2,5 млн векторов float32 это ~10 ГБ, после int8-квантизации — 2,5 ГБ, бинарная квантизация даёт ещё 32-кратную экономию на этапе чернового поиска с доотбором в полной точности. Обязательны метаданные: источник, дата, версия, гриф, ACL-группы. Инкрементальная переиндексация по updated_at экономит недели GPU-времени на повторных прогонах.
Гибридный поиск и реранк — не опция
BM25 плюс плотный поиск с объединением через RRF дают устойчивость на аббревиатурах, номерах ГОСТов и артикулах, где чистые эмбеддинги проваливаются. Далее топ-50 кандидатов проходит кросс-энкодер (bge-reranker-v2-m3, Qwen3-Reranker), в контекст уходят 6–8 фрагментов. На юридических и технических корпусах отказ от реранка снижает recall@5 в 1,5–2 раза — это видно на первом же golden set.
Железо: где реально упираешься
Векторная БД (Qdrant, Milvus, pgvector) живёт на CPU-узле: 128–256 ГБ RAM под HNSW-граф, NVMe 2–4 ТБ под снапшоты и сырые файлы. Эмбеддинги и реранк — одна карта уровня L40S или A100 40 ГБ, этого хватает на поток в 20–30 запросов в секунду. Генерация — самое дорогое: Qwen3-32B в AWQ/GPTQ разворачивается на 2×A100 80 ГБ или на 4×RTX 6000 Ada 48 ГБ, модель класса 70B требует уже 4×A100/H100. Ориентир по latency в закрытом контуре: 3–6 секунд на ответ при контексте 8k и 20–40 параллельных сессиях.
Российская специфика
Контур обычно полностью изолирован: Astra Linux, локальное зеркало пакетов, отсутствие исходящего трафика, модели с открытыми весами (Qwen, DeepSeek, GigaChat Lite) вместо API. Если в корпусе персональные данные, до индексации нужна обезличка по 152-ФЗ, а ACL-фильтры должны применяться внутри векторного поиска, а не после генерации — иначе утечка через цитату. Отдельная головная боль — сканы низкого качества и таблицы: без нормального OCR (PaddleOCR, ABBYY) чанк превращается в мусор и портит выдачу.
Практические шаги
Начните с аудита корпуса: сколько сканов, сколько дублей, какие форматы. Соберите golden set из 200–300 реальных вопросов сотрудников с эталонными фрагментами — без него вы будете улучшать систему вслепую. Дальше фиксируйте метрики recall@k, faithfulness и долю обоснованных отказов, логируйте выданные цитаты. И только после этого масштабируйте железо: сначала качество поиска, потом токены в секунду.
Как мы можем помочь
Мы проектируем и разворачиваем приватные RAG-контуры под ключ: аудит корпуса, OCR и чанкинг, гибридный поиск с реранком, подбор GPU-конфигурации под ваш объём и нагрузку, интеграция с 1С и CRM, оценка качества на golden set. Обсудить проект — посчитаем архитектуру и железо под ваши 100 000 документов.
Внедрить это в вашей компании
Приватный ИИ, RAG-поиск и агенты на вашем сервере — пилот за пару недель покажет эффект до полного бюджета.
Обсудить проектКомментарии (0)
Пока нет комментариев — будьте первым.