- Установить Ollama
ollama pull qwen2.5:14b- Поднять интерфейс:
docker run -d -p 3000:8080 --name open-webui ghcr.io/open-webui/open-webui:0.6.0 - Открыть
localhost:3000→ загрузить СП → задать вопрос
Меры безопасности при работе с ИИ-ассистентом
ИИ — это инструмент, а не замена инженерной экспертизы. Ответственность за проектные решения, расчёты и соответствие нормативам несёт квалифицированный специалист.
- Всегда проверяйте ответы по первоисточнику (СП, ГОСТ, ТУ) перед применением в проекте
- Не используйте ИИ для критических расчётов без ручной верификации (несущая способность, пожарная безопасность, сейсмика)
- Конфиденциальность: не загружайте в систему коммерчески чувствительные данные без надлежащей защиты
- Версионность: убедитесь, что загруженные нормативы актуальны — ИИ не отслеживает изменения в законодательстве
- Документирование: при использовании ИИ-ответов в проекте фиксируйте источник и дату проверки
Это руководство носит образовательный характер. Применение описанных методов в реальных проектах требует оценки рисков и соответствия внутренним регламентам вашей организации.
Теория за пять минут
Как устроен RAG
Без этого раздела можно жить, но с ним вы будете понимать, что именно настраиваете — и почему система иногда отвечает невпопад.
Большая языковая модель (LLM) — это эрудит с замороженной памятью. Она прочитала пол-интернета, но ни разу не видела ваш СП в последней редакции и вашу исполнительную документацию. Хуже того: не зная ответа, она уверенно его выдумает. Это называется галлюцинацией.
RAG резко снижает пространство для выдумки: модель получает релевантные фрагменты документа перед ответом. Но RAG не гарантирует правильность ответа — ошибиться может как поиск (не нашёл нужный пункт), так и сама LLM (неверно интерпретировала найденное).
Обратите внимание на стрелку из «Векторного индекса» в «Поиск»: вопрос и документы живут в одном «смысле-пространстве», поэтому система находит ответ даже тогда, когда слова в вопросе и в документе не совпадают.
Эмбеддинги: как машина понимает смысл
Ключевая идея всего RAG — текст можно превратить в координаты.
Каждый фрагмент текста специальная модель (embedding-модель) превращает в набор чисел — точку в многомерном пространстве. Тексты со схожим смыслом оказываются рядом, с разным — далеко.
Вопрос «какая толщина защитного слоя у колонн?» и пункт «…защитный слой бетона для колонн принимается не менее 20 мм» написаны разными словами, но на этой карте они соседи. Обычный поиск по ключевым словам такое совпадение пропустит — векторный найдёт.
Чанкинг: искусство нарезки
Документ нельзя скормить модели целиком — её контекстное окно ограничено. Поэтому текст нарезают на куски — чанки.
Тут прячется главный компромисс RAG:
| Нарезка | Что происходит | Симптом |
|---|---|---|
| Слишком мелко (~300 симв.) | Цифра найдена, но заголовок раздела потерян | «20 мм» без понимания, о чём речь |
| Слишком крупно (~4000 симв.) | В куске пять разных тем сразу | Поиск тянет мусор, модель путается |
| Оптимально (1000–2000) | Один чанк = одна законченная мысль | Точный ответ с полным контекстом |
Главный принцип: Сначала режем по структуре документа — раздел/пункт/подпункт. Численный размер чанка (1000–2000 символов) является ограничителем второго уровня, чтобы не было слишком крупных кусков.
Open WebUI поддерживает Markdown Header Splitting — используйте его для нормативки. Это позволяет резать по заголовкам, а не по фиксированному числу символов.
Почему локально, а не в облаке
Три причины, по которым инженерный RAG не должен покидать периметр вашего ПК.
Конфиденциальность. При полностью локальной конфигурации запросы и документы не требуется отправлять облачному LLM. Для гарантированной изоляции нужно дополнительно запретить системе внешний сетевой доступ (firewall, отключить проверки обновлений, использовать OFFLINE_MODE).
Автономность. На объекте часто нет стабильного интернета. Локальный RAG работает офлайн — хоть в бытовке, хоть в подвале.
Экономика. Разовая покупка железа против ежемесячных токенов. При регулярной работе с документацией локальная окупается за пару месяцев.
Практика: собираем систему
Ставим Ollama
Ollama — локальный рантайм для нейросетей. Думайте о нём как о Docker, но заточенном под LLM. Команды ниже меняются в зависимости от выбранной ОС (переключатель в шапке страницы).
Windows
Скачиваем установщик
Заходим на ollama.com, жмём Download for Windows. Получаем OllamaSetup.exe.
Устанавливаем
Двойной клик → Install → Finish. В трее появится иконка ламы.
Или одной командой
В PowerShell (Win + X → Terminal):
# установка одной командой (альтернатива установщику)
> winget install Ollama.Ollama
# проверка
> ollama --version
ollama version is 0.4.1winget install Ollama.Ollama ollama --version
macOS / Linux
# установка одной строкой
$ curl -fsSL https://ollama.com/install.sh | sh
# Linux: включаем службу
$ sudo systemctl enable ollama
$ sudo systemctl start ollama
# проверка
$ ollama --version
ollama version is 0.4.1curl -fsSL https://ollama.com/install.sh | sh sudo systemctl enable ollama sudo systemctl start ollama ollama --version
ollama --version вернул номер версии — первый шаг пройден.Грузим модель
Конкретные модели быстро устаревают. На сентябрь 2026 проверенный baseline — Qwen 2.5 14B. Актуальные модели (Qwen 3.5, Llama 3.3) имеет смысл сравнить на тестовом наборе документов.
# качаем модель (5–20 минут)
$ ollama pull qwen2.5:14b
# убеждаемся, что скачалась
$ ollama list
NAME SIZE MODIFIED
qwen2.5:14b 9.0 GB Just nowollama pull qwen2.5:14b ollama list
Проверка: модель крутится на GPU или на CPU?
$ 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
Ставим интерфейс
Open WebUI — веб-интерфейс с поддержкой RAG и загрузки документов. Два пути: Docker или Python.
Workspace → Knowledge вместо Documents, настройки в Settings → Admin.Через Docker (надёжнее)
Ставим Docker Desktop
docker.com → Download → Install → перезагружаем ПК. После перезагрузки открываем и ждём статус «Running».
Поднимаем контейнер
Одна команда — интерфейс поднят (одинаково во всех ОС):
$ 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.0docker 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 (проще)
# нужен Python 3.11+
$ pip install open-webui==0.6.0
$ open-webui servepip install open-webui==0.6.0 open-webui serve
Первый вход
Открываем браузер:
Видим форму регистрации. Вводим любой email и пароль — данные никуда не уходят. Жмём Sign Up.
Подключаем RAG
Ключевой шаг: без него система будет просто чатиться, а не искать в ваших файлах.
Связка с Ollama
Указываем адрес
В поле Ollama API URL: http://host.docker.internal:11434
Проверяем
Verify Connection → зелёная галочка → Save.
http://localhost:11434 вместо host.docker.internal.Параметры поиска
| Параметр | Значение | Зачем |
|---|---|---|
| Embedding Model | qwen3-embedding:0.6b | Мультиязычная модель (100+ языков), хорошо работает с русским техническим текстом. Лёгкая (0.6B параметров). |
| Chunk Size | 1500 | баланс точности и контекста (см. раздел 03) |
| Chunk Overlap | 200 | не терять смысл на стыках кусков |
| Top K | 5 | сколько фрагментов видит модель; потом можно 8 |
embeddinggemma— лёгкий вариант от Googleqwen3-embedding:1.7b— если качество важнее ресурсов- Модели с суффиксом
-ru(например,cointegrated/rut5-base) — специализированные русские
Важно: Сравните 2-3 модели на своих 20-50 контрольных вопросах из реальных СП/ГОСТ. Универсального «лучшего» embedding не существует — зависит от вашей документации.
Проверяем контекст модели
Контекстное окно LLM ограничено. Это один из самых частых источников плохого RAG.
Формула:
Top K × Chunk Size + System Prompt + История диалога + Ответ < Context WindowПо умолчанию Ollama выделяет 4K токенов контекста (при VRAM < 24 GiB). Для RAG этого может не хватить — можно идеально проиндексировать ГОСТ, найти пять хороших чанков, и затем банально не вместить их вместе с историей диалога.
Как увеличить контекст
# Создаём Modelfile в Блокноте
> notepad Modelfile
# вставляем две строки, сохраняем:
# FROM qwen2.5:14b
# PARAMETER num_ctx 8192
# Собираем кастомную модель
> ollama create qwen2.5:14b-8k -f Modelfilenotepad Modelfile ollama create qwen2.5:14b-8k -f Modelfile
# Создаём Modelfile
$ cat > Modelfile << EOF
FROM qwen2.5:14b
PARAMETER num_ctx 8192
EOF
# Собираем кастомную модель
$ ollama create qwen2.5:14b-8k -f Modelfilecat > Modelfile << EOF FROM qwen2.5:14b PARAMETER num_ctx 8192 EOF ollama create qwen2.5:14b-8k -f Modelfile
Проверка
$ ollama show qwen2.5:14b-8k --modelfile
# Должно быть: PARAMETER num_ctx 8192ollama show qwen2.5:14b-8k --modelfile
ollama ps), уменьшите контекст или возьмите модель поменьше.Загружаем документацию
Создаём коллекцию знаний и загружаем в неё СП, ГОСТы и ТУ.
Создаём коллекцию
Левое меню → Documents → Create Collection → имя «СП и ГОСТы» → Create.
Перетаскиваем файлы
Открываем коллекцию и перетаскиваем PDF прямо в окно браузера.
Ждём индексации
Статус каждого файла должен стать Indexed. PDF на 500 страниц — 5–15 минут.
RAG Acceptance Test
Тестируйте систему на этих вопросах, считая метрики. Критерий приёмки: ≥80% правильных ответов по всем 4 метрикам.
| Метрика | Что считаем |
|---|---|
| Нашёл правильный источник | ✓ |
| Правильное значение | ✓ |
| Правильный пункт | ✓ |
| Не выдумал ответ | ✓ |
Тестовые вопросы
Простая фактическая величина
«Минимальная толщина защитного слоя для колонн?»
Величина из таблицы
«Какие классы бетона указаны в таблице 5.1?»
Исключение из правила
«Когда допускается уменьшение защитного слоя?»
Примечание
«Что сказано в примечании к пункту 10.3.2?»
Переформулировка
«Какой минимальный слой арматуры от поверхности?»
Точный шифр
«Что сказано про бетон B25 W4 F100?»
Два раздела
«Сравни требования для колонн и плит перекрытий»
Противоречащие редакции
«Какие требования в СП X ред. 2018 vs ред. 2022?»
Вне базы (отрицательный)
«Требования к аэродромным покрытиям?»
Похожее значение
«Какая толщина для фундаментов?» (если спрашивали про колонны)
Добавьте ещё 5-10 вопросов из вашей предметной области. Прогоните через систему и посчитайте метрики.
Системный промпт
Жёсткие правила поведения, чтобы модель не «творила».
Ты — инженерный ассистент. Работаешь строго по предоставленным документам.
Правила:
1. Отвечай ТОЛЬКО на основе контекста из загруженных файлов.
2. Если информации нет в полученном контексте — пиши: «В полученном контексте подтверждение не найдено. Документ может содержать эту информацию в других разделах.»
3. Не утверждай, что информация отсутствует во всём документе, если документ не был проверен полностью.
4. Всегда указывай источник: документ, раздел, пункт.
5. Числовые значения — с единицами измерения.
6. Не добавляй неподтверждённые факты. Если делаешь вывод из нескольких пунктов, явно пометь его как вывод.
7. При противоречии источников — укажи оба варианта.Ты — инженерный ассистент. Работаешь строго по предоставленным документам. Правила: 1. Отвечай ТОЛЬКО на основе контекста из загруженных файлов. 2. Если информации нет в полученном контексте — пиши: «В полученном контексте подтверждение не найдено. Документ может содержать эту информацию в других разделах.» 3. Не утверждай, что информация отсутствует во всём документе, если документ не был проверен полностью. 4. Всегда указывай источник: документ, раздел, пункт. 5. Числовые значения — с единицами измерения. 6. Не добавляй неподтверждённые факты. Если делаешь вывод из нескольких пунктов, явно пометь его как вывод. 7. При противоречии источников — укажи оба варианта.
Если что-то сломалось
Четыре типовые проблемы. В 90% случаев дело в одном из этих пунктов.
| Симптом | Причина | Лечение |
|---|---|---|
| Ollama не отвечает | служба не запущена | Windows: перезапустить из трея; Linux: sudo systemctl start ollama |
| Модель зависает | не хватает ОЗУ | модель поменьше: ollama rm qwen2.5:14b → ollama pull qwen2.5:7b |
| Документ не индексируется | пароль или скан | снять пароль / OCR / в .txt |
| Ответы без ссылок | коллекция не подключена | проверить скрепку в чате |
Шпаргалка
Команды на каждый день. Работают одинаково в PowerShell, Terminal и bash. Сохраните в заметки.
# ─── 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
Вопросы, которые задают все
FAQ
Ответы на вопросы, которые обычно прилетают в личку после публикации таких гайдов.
Потянет ли мой ПК без видеокарты?
Сколько ресурсов ест система в простое?
Можно ли загрузить чертежи в DWG?
Вышла новая редакция СП. Как обновить базу?
Для нормативки критично хранить метаданные:
- Точное обозначение (СП 63.13330.2018)
- Редакцию и дату введения
- Номер изменения
- Статус документа (действующий/отменён)
- Источник и дату скачивания
Иначе в индексе окажутся противоречащие редакции, и RAG честно выдаст три несовместимых требования. Правило «при противоречии покажи оба» полезно, но лучше не создавать неконтролируемые противоречия в knowledge base.
Практика: Ведите папку Актуальные_редакции/ с метаданными в README.md. Обновляйте коллекцию раз в квартал, удаляя устаревшие документы.
Как раздать систему коллегам по офисной сети?
Для одного ПК: localhost:3000 достаточно.
Для локальной сети: Если открываете Open WebUI коллегам:
- Ограничьте доступ firewall'ом (только доверенные IP)
- Используйте HTTPS через reverse proxy (nginx/traefik + Let's Encrypt)
- Или защищённую VPN/LAN
Без HTTPS логины, чаты и загружаемые документы ходят по обычному HTTP — это риск для коммерческой документации.
Модель отвечает медленно. Что делать?
ollama ps (не уехала ли модель на CPU) → закрыть браузер и тяжёлые приложения → взять модель поменьше или квантование q4 → убедиться, что диск не забит под завязку.Что дальше: лестница уровней
Базовый RAG — это уровень 1. Вот куда имеет смысл двигаться, когда система уже работает.
Базовый локальный RAG ✓ вы здесь
Поиск по вашим документам с ответами по источникам. Всё, что описано в этом руководстве.
Гибридный поиск (векторы + ключевые слова)
Точное нахождение шифров, марок и осей, с которыми чисто векторный поиск промахивается.
Реранкинг
Лёгкая модель-фильтр отсекает нерелевантные фрагменты до того, как они попадут в LLM. Галлюцинации падают кратно.
Граф знаний (GraphRAG)
Связи между пунктами, документами и сущностями. Система отвечает не «что написано», а «как это связано».
Такие разборы выходят в канале регулярно
Практические ИИ-сценарии для строительства и проектирования: без воды, без ажиотажа, только то, что проверено руками на реальном железе и реальных документах.
Подписаться на @ai_prompt_eng бесплатно · без спама · отписка в один клик