ai_prompt_eng / field guide
Полевое руководство · выпуск №1

Локальный RAG для инженерной документации

Поднимаем систему поиска по СП, ГОСТам и ТУ на собственном ПК. Без облака, без подписок, без утечки проектных данных. Сначала пять минут теории — потом руки на клавиатуре.

Шагов0
Чтение≈ 0 минут
ОЗУ от0 ГБ
Стоимость0 ₽
Команды для:
⚡ Быстрый старт — для тех, кто не читает инструкций
  1. Установить Ollama
  2. ollama pull qwen2.5:14b
  3. Поднять интерфейс: docker run -d -p 3000:8080 --name open-webui ghcr.io/open-webui/open-webui:0.6.0
  4. Открыть localhost:3000 → загрузить СП → задать вопрос
Не сработало? Читаем дальше — ниже каждый шаг разобран с подводными камнями. К шагу 05 →
⚠️ Важно для инженера

Меры безопасности при работе с ИИ-ассистентом

ИИ — это инструмент, а не замена инженерной экспертизы. Ответственность за проектные решения, расчёты и соответствие нормативам несёт квалифицированный специалист.

  • Всегда проверяйте ответы по первоисточнику (СП, ГОСТ, ТУ) перед применением в проекте
  • Не используйте ИИ для критических расчётов без ручной верификации (несущая способность, пожарная безопасность, сейсмика)
  • Конфиденциальность: не загружайте в систему коммерчески чувствительные данные без надлежащей защиты
  • Версионность: убедитесь, что загруженные нормативы актуальны — ИИ не отслеживает изменения в законодательстве
  • Документирование: при использовании ИИ-ответов в проекте фиксируйте источник и дату проверки

Это руководство носит образовательный характер. Применение описанных методов в реальных проектах требует оценки рисков и соответствия внутренним регламентам вашей организации.

Часть I

Теория за пять минут

01

Как устроен RAG

Без этого раздела можно жить, но с ним вы будете понимать, что именно настраиваете — и почему система иногда отвечает невпопад.

Большая языковая модель (LLM) — это эрудит с замороженной памятью. Она прочитала пол-интернета, но ни разу не видела ваш СП в последней редакции и вашу исполнительную документацию. Хуже того: не зная ответа, она уверенно его выдумает. Это называется галлюцинацией.

RAG резко снижает пространство для выдумки: модель получает релевантные фрагменты документа перед ответом. Но RAG не гарантирует правильность ответа — ошибиться может как поиск (не нашёл нужный пункт), так и сама LLM (неверно интерпретировала найденное).

Ваши документы Нарезка (чанкинг) Векторный индекс Ваш вопрос Поиск топ-K LLM + контекст Ответ со ссылкой
Рис. 1 — Конвейер RAG. Верхняя линия готовится один раз при загрузке документов; нижняя срабатывает на каждый вопрос.

Обратите внимание на стрелку из «Векторного индекса» в «Поиск»: вопрос и документы живут в одном «смысле-пространстве», поэтому система находит ответ даже тогда, когда слова в вопросе и в документе не совпадают.

02

Эмбеддинги: как машина понимает смысл

Ключевая идея всего RAG — текст можно превратить в координаты.

Каждый фрагмент текста специальная модель (embedding-модель) превращает в набор чисел — точку в многомерном пространстве. Тексты со схожим смыслом оказываются рядом, с разным — далеко.

Вопрос «какая толщина защитного слоя у колонн?» и пункт «…защитный слой бетона для колонн принимается не менее 20 мм» написаны разными словами, но на этой карте они соседи. Обычный поиск по ключевым словам такое совпадение пропустит — векторный найдёт.

Отсюда вывод
Embedding-модель — один из главных факторов качества поиска, но плохое извлечение текста из PDF (таблицы, колонтитулы, двухколоночный текст) способно испортить результат ещё до этапа embeddings. Для проблемных документов используйте Tika/Docling или перегоняйте PDF в Markdown с сохранением структуры.
03

Чанкинг: искусство нарезки

Документ нельзя скормить модели целиком — её контекстное окно ограничено. Поэтому текст нарезают на куски — чанки.

Тут прячется главный компромисс RAG:

НарезкаЧто происходитСимптом
Слишком мелко (~300 симв.)Цифра найдена, но заголовок раздела потерян«20 мм» без понимания, о чём речь
Слишком крупно (~4000 симв.)В куске пять разных тем сразуПоиск тянет мусор, модель путается
Оптимально (1000–2000)Один чанк = одна законченная мысльТочный ответ с полным контекстом

Главный принцип: Сначала режем по структуре документа — раздел/пункт/подпункт. Численный размер чанка (1000–2000 символов) является ограничителем второго уровня, чтобы не было слишком крупных кусков.

Open WebUI поддерживает Markdown Header Splitting — используйте его для нормативки. Это позволяет резать по заголовкам, а не по фиксированному числу символов.

04

Почему локально, а не в облаке

Три причины, по которым инженерный RAG не должен покидать периметр вашего ПК.

Конфиденциальность. При полностью локальной конфигурации запросы и документы не требуется отправлять облачному LLM. Для гарантированной изоляции нужно дополнительно запретить системе внешний сетевой доступ (firewall, отключить проверки обновлений, использовать OFFLINE_MODE).

Автономность. На объекте часто нет стабильного интернета. Локальный RAG работает офлайн — хоть в бытовке, хоть в подвале.

Экономика. Разовая покупка железа против ежемесячных токенов. При регулярной работе с документацией локальная окупается за пару месяцев.

Теории достаточно
Дальше — только руки и клавиатура. Отмечайте пройденные шаги галочками в заголовках — прогресс сохранится.
Нравится формат?В канале @ai_prompt_eng такие разборы выходят регулярно — только практика, без ажиотажа и воды.
Подписаться
Часть II

Практика: собираем систему

05

Ставим Ollama

Ollama — локальный рантайм для нейросетей. Думайте о нём как о Docker, но заточенном под LLM. Команды ниже меняются в зависимости от выбранной ОС (переключатель в шапке страницы).

Windows

1

Скачиваем установщик

Заходим на ollama.com, жмём Download for Windows. Получаем OllamaSetup.exe.

2

Устанавливаем

Двойной клик → Install → Finish. В трее появится иконка ламы.

3

Или одной командой

В PowerShell (Win + X → Terminal):

powershell
# установка одной командой (альтернатива установщику) > winget install Ollama.Ollama # проверка > ollama --version ollama version is 0.4.1
winget install Ollama.Ollama
ollama --version

macOS / Linux

terminal
# установка одной строкой $ curl -fsSL https://ollama.com/install.sh | sh # Linux: включаем службу $ sudo systemctl enable ollama $ sudo systemctl start ollama # проверка $ ollama --version ollama version is 0.4.1
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable ollama
sudo systemctl start ollama
ollama --version
Готово
ollama --version вернул номер версии — первый шаг пройден.
06

Грузим модель

Конкретные модели быстро устаревают. На сентябрь 2026 проверенный baseline — Qwen 2.5 14B. Актуальные модели (Qwen 3.5, Llama 3.3) имеет смысл сравнить на тестовом наборе документов.

Подбор модели под ваше железо
terminal — одинаково во всех ОС
# качаем модель (5–20 минут) $ ollama pull qwen2.5:14b # убеждаемся, что скачалась $ ollama list NAME SIZE MODIFIED qwen2.5:14b 9.0 GB Just now
ollama pull qwen2.5:14b
ollama list

Проверка: модель крутится на GPU или на CPU?

terminal — во время запроса
$ ollama ps NAME ID SIZE PROCESSOR qwen2.5:14b 8f2b41c9 9.2 GB 100% GPU ← отлично qwen2.5:14b 8f2b41c9 9.2 GB 45%/55% CPU/GPU ← памяти не хватает
ollama ps
Если видите большую долю CPU
Модель не влезла в видеопамять. Возьмите версию поменьше или закройте приложения, съедающие VRAM (браузер с кучей вкладок — главный враг).
07

Ставим интерфейс

Open WebUI — веб-интерфейс с поддержкой RAG и загрузки документов. Два пути: Docker или Python.

Важно: версионность
Это руководство проверено на Open WebUI v0.6.0 (сентябрь 2026). Интерфейс быстро меняется — если у вас другая версия, названия пунктов меню могут отличаться. Актуальная структура: Workspace → Knowledge вместо Documents, настройки в Settings → Admin.

Через Docker (надёжнее)

1

Ставим Docker Desktop

docker.com → Download → Install → перезагружаем ПК. После перезагрузки открываем и ждём статус «Running».

2

Поднимаем контейнер

Одна команда — интерфейс поднят (одинаково во всех ОС):

terminal
$ docker run -d -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:0.6.0
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:0.6.0

Через Python (проще)

terminal
# нужен Python 3.11+ $ pip install open-webui==0.6.0 $ open-webui serve
pip install open-webui==0.6.0
open-webui serve

Первый вход

Открываем браузер:

http://localhost:3000

Видим форму регистрации. Вводим любой email и пароль — данные никуда не уходят. Жмём Sign Up.

08

Подключаем RAG

Ключевой шаг: без него система будет просто чатиться, а не искать в ваших файлах.

Связка с Ollama

Аватарка → Settings → Connections
1

Указываем адрес

В поле Ollama API URL: http://host.docker.internal:11434

2

Проверяем

Verify Connection → зелёная галочка → Save.

Если не подключается
Попробуйте http://localhost:11434 вместо host.docker.internal.

Параметры поиска

Settings → Documents
ПараметрЗначениеЗачем
Embedding Modelqwen3-embedding:0.6bМультиязычная модель (100+ языков), хорошо работает с русским техническим текстом. Лёгкая (0.6B параметров).
Chunk Size1500баланс точности и контекста (см. раздел 03)
Chunk Overlap200не терять смысл на стыках кусков
Top K5сколько фрагментов видит модель; потом можно 8
Альтернативы для русского языка
  • embeddinggemma — лёгкий вариант от Google
  • qwen3-embedding:1.7b — если качество важнее ресурсов
  • Модели с суффиксом -ru (например, cointegrated/rut5-base) — специализированные русские

Важно: Сравните 2-3 модели на своих 20-50 контрольных вопросах из реальных СП/ГОСТ. Универсального «лучшего» embedding не существует — зависит от вашей документации.

09

Проверяем контекст модели

Контекстное окно LLM ограничено. Это один из самых частых источников плохого RAG.

Формула:

formula
Top K × Chunk Size + System Prompt + История диалога + Ответ < Context Window

По умолчанию Ollama выделяет 4K токенов контекста (при VRAM < 24 GiB). Для RAG этого может не хватить — можно идеально проиндексировать ГОСТ, найти пять хороших чанков, и затем банально не вместить их вместе с историей диалога.

Как увеличить контекст

powershell
# Создаём Modelfile в Блокноте > notepad Modelfile # вставляем две строки, сохраняем: # FROM qwen2.5:14b # PARAMETER num_ctx 8192 # Собираем кастомную модель > ollama create qwen2.5:14b-8k -f Modelfile
notepad Modelfile
ollama create qwen2.5:14b-8k -f Modelfile
terminal
# Создаём Modelfile $ cat > Modelfile << EOF FROM qwen2.5:14b PARAMETER num_ctx 8192 EOF # Собираем кастомную модель $ ollama create qwen2.5:14b-8k -f Modelfile
cat > Modelfile << EOF
FROM qwen2.5:14b
PARAMETER num_ctx 8192
EOF
ollama create qwen2.5:14b-8k -f Modelfile

Проверка

terminal
$ ollama show qwen2.5:14b-8k --modelfile # Должно быть: PARAMETER num_ctx 8192
ollama show qwen2.5:14b-8k --modelfile
Компромисс
Больший контекст = больше VRAM. Если модель уезжает на CPU (проверяйте ollama ps), уменьшите контекст или возьмите модель поменьше.
10

Загружаем документацию

Создаём коллекцию знаний и загружаем в неё СП, ГОСТы и ТУ.

1

Создаём коллекцию

Левое меню → Documents → Create Collection → имя «СП и ГОСТы» → Create.

2

Перетаскиваем файлы

Открываем коллекцию и перетаскиваем PDF прямо в окно браузера.

3

Ждём индексации

Статус каждого файла должен стать Indexed. PDF на 500 страниц — 5–15 минут.

Форматы
PDF, DOCX, TXT, Markdown — из коробки. PDF-скан сначала прогоните через OCR.
11

RAG Acceptance Test

Тестируйте систему на этих вопросах, считая метрики. Критерий приёмки: ≥80% правильных ответов по всем 4 метрикам.

МетрикаЧто считаем
Нашёл правильный источник✓
Правильное значение✓
Правильный пункт✓
Не выдумал ответ✓

Тестовые вопросы

1

Простая фактическая величина

«Минимальная толщина защитного слоя для колонн?»

2

Величина из таблицы

«Какие классы бетона указаны в таблице 5.1?»

3

Исключение из правила

«Когда допускается уменьшение защитного слоя?»

4

Примечание

«Что сказано в примечании к пункту 10.3.2?»

5

Переформулировка

«Какой минимальный слой арматуры от поверхности?»

6

Точный шифр

«Что сказано про бетон B25 W4 F100?»

7

Два раздела

«Сравни требования для колонн и плит перекрытий»

8

Противоречащие редакции

«Какие требования в СП X ред. 2018 vs ред. 2022?»

9

Вне базы (отрицательный)

«Требования к аэродромным покрытиям?»

10

Похожее значение

«Какая толщина для фундаментов?» (если спрашивали про колонны)

Добавьте ещё 5-10 вопросов из вашей предметной области. Прогоните через систему и посчитайте метрики.

12

Системный промпт

Жёсткие правила поведения, чтобы модель не «творила».

Настройки чата → System Prompt
system prompt
Ты — инженерный ассистент. Работаешь строго по предоставленным документам. Правила: 1. Отвечай ТОЛЬКО на основе контекста из загруженных файлов. 2. Если информации нет в полученном контексте — пиши: «В полученном контексте подтверждение не найдено. Документ может содержать эту информацию в других разделах.» 3. Не утверждай, что информация отсутствует во всём документе, если документ не был проверен полностью. 4. Всегда указывай источник: документ, раздел, пункт. 5. Числовые значения — с единицами измерения. 6. Не добавляй неподтверждённые факты. Если делаешь вывод из нескольких пунктов, явно пометь его как вывод. 7. При противоречии источников — укажи оба варианта.
Ты — инженерный ассистент. Работаешь строго по предоставленным документам.

Правила:
1. Отвечай ТОЛЬКО на основе контекста из загруженных файлов.
2. Если информации нет в полученном контексте — пиши: «В полученном контексте подтверждение не найдено. Документ может содержать эту информацию в других разделах.»
3. Не утверждай, что информация отсутствует во всём документе, если документ не был проверен полностью.
4. Всегда указывай источник: документ, раздел, пункт.
5. Числовые значения — с единицами измерения.
6. Не добавляй неподтверждённые факты. Если делаешь вывод из нескольких пунктов, явно пометь его как вывод.
7. При противоречии источников — укажи оба варианта.
13

Если что-то сломалось

Четыре типовые проблемы. В 90% случаев дело в одном из этих пунктов.

СимптомПричинаЛечение
Ollama не отвечаетслужба не запущенаWindows: перезапустить из трея; Linux: sudo systemctl start ollama
Модель зависаетне хватает ОЗУмодель поменьше: ollama rm qwen2.5:14b → ollama pull qwen2.5:7b
Документ не индексируетсяпароль или сканснять пароль / OCR / в .txt
Ответы без ссылокколлекция не подключенапроверить скрепку в чате
14

Шпаргалка

Команды на каждый день. Работают одинаково в PowerShell, Terminal и bash. Сохраните в заметки.

cheatsheet
# ─── Ollama ─── $ ollama list # что установлено $ ollama pull qwen2.5:14b # скачать $ ollama rm qwen2.5:7b # удалить $ ollama ps # GPU или CPU # ─── Docker / Open WebUI ─── $ docker ps # что запущено $ docker stop open-webui # стоп $ docker start open-webui # старт $ docker logs open-webui # логи
ollama list
ollama pull qwen2.5:14b
ollama rm qwen2.5:7b
ollama ps
docker ps
docker stop open-webui
docker start open-webui
docker logs open-webui
Бонус

Вопросы, которые задают все

15

FAQ

Ответы на вопросы, которые обычно прилетают в личку после публикации таких гайдов.

Потянет ли мой ПК без видеокарты? +
Да, но медленнее. На CPU модель 7b даёт примерно 5–15 токенов в секунду — для работы с документами терпимо. Видеокарта ускоряет в 5–10 раз, но не является обязательной.
Сколько ресурсов ест система в простое? +
Почти нисколько. Ollama автоматически выгружает модель из памяти через 5 минут бездействия (настраивается переменной OLLAMA_KEEP_ALIVE). Контейнер интерфейса в простое потребляет меньше 100 МБ ОЗУ.
Можно ли загрузить чертежи в DWG? +
Напрямую нет — текстовый RAG работает с текстом. Рабочий обходной путь: выгружать из CAD спецификации и ведомости в PDF/CSV и грузить их. Полноценный разбор графических форматов — отдельная большая тема.
Вышла новая редакция СП. Как обновить базу? +

Для нормативки критично хранить метаданные:

  • Точное обозначение (СП 63.13330.2018)
  • Редакцию и дату введения
  • Номер изменения
  • Статус документа (действующий/отменён)
  • Источник и дату скачивания

Иначе в индексе окажутся противоречащие редакции, и RAG честно выдаст три несовместимых требования. Правило «при противоречии покажи оба» полезно, но лучше не создавать неконтролируемые противоречия в knowledge base.

Практика: Ведите папку Актуальные_редакции/ с метаданными в README.md. Обновляйте коллекцию раз в квартал, удаляя устаревшие документы.

Как раздать систему коллегам по офисной сети? +

Для одного ПК: localhost:3000 достаточно.

Для локальной сети: Если открываете Open WebUI коллегам:

  1. Ограничьте доступ firewall'ом (только доверенные IP)
  2. Используйте HTTPS через reverse proxy (nginx/traefik + Let's Encrypt)
  3. Или защищённую VPN/LAN

Без HTTPS логины, чаты и загружаемые документы ходят по обычному HTTP — это риск для коммерческой документации.

Модель отвечает медленно. Что делать? +
По порядку: проверить ollama ps (не уехала ли модель на CPU) → закрыть браузер и тяжёлые приложения → взять модель поменьше или квантование q4 → убедиться, что диск не забит под завязку.
16

Что дальше: лестница уровней

Базовый RAG — это уровень 1. Вот куда имеет смысл двигаться, когда система уже работает.

1

Базовый локальный RAG ✓ вы здесь

Поиск по вашим документам с ответами по источникам. Всё, что описано в этом руководстве.

2

Гибридный поиск (векторы + ключевые слова)

Точное нахождение шифров, марок и осей, с которыми чисто векторный поиск промахивается.

3

Реранкинг

Лёгкая модель-фильтр отсекает нерелевантные фрагменты до того, как они попадут в LLM. Галлюцинации падают кратно.

4

Граф знаний (GraphRAG)

Связи между пунктами, документами и сущностями. Система отвечает не «что написано», а «как это связано».

Кстати
Каждый уровень — это отдельный разбор. Когда выходит продолжение серии, оно публикуется в канале — чтобы не пропустить, подпишитесь ниже.
ai · песочница · инженера
Если руководство пригодилось

Такие разборы выходят в канале регулярно

Практические ИИ-сценарии для строительства и проектирования: без воды, без ажиотажа, только то, что проверено руками на реальном железе и реальных документах.

Подписаться на @ai_prompt_eng бесплатно · без спама · отписка в один клик