Корпоративное использование облачных языковых моделей упирается в два барьера: разграничение доступа между сотрудниками и запрет на передачу чувствительных данных внешним сервисам. Подписка на ChatGPT или Claude решает первую задачу лишь частично и не закрывает вторую. Альтернатива — развернуть собственную RAG-систему, где документы остаются внутри инфраструктуры компании.

RAG (Retrieval-Augmented Generation) — подход, при котором языковая модель отвечает на вопросы не только на основе своих обучающих данных, но и опираясь на загруженные пользователем документы. Система разбивает файлы на фрагменты, превращает их в векторные представления (эмбеддинги) и при каждом запросе подтягивает релевантные куски в контекст модели. Это позволяет работать с внутренними регламентами, договорами и отчётами без дообучения модели.

КомпонентРольПример
AnythingLLMВеб-интерфейс и управление воркспейсамиmintplexlabs/anythingllm (Docker)
OllamaИнференс языковых моделейДомашний ПК, RTX 4060 Ti 16 ГБ
qwen2.5:9bГенерация текстовых ответовМодель от Alibaba
nomic-embed-textПостроение эмбеддингов документовКомпактная embedding-модель
MikroTik 4011VPN-сервер и DDNSL2TP/IPsec, гигабитный канал
VPS (Ubuntu)Точка входа, Nginx + SSLПубличный IP, Docker Compose

Автор туториала выбрал AnythingLLM — open-source платформу от Mintplex Labs, которая предоставляет веб-интерфейс, управление воркспейсами и многопользовательский режим. В качестве бэкенда для инференса используется Ollama — инструмент для локального запуска LLM, который берёт на себя загрузку весов и обслуживание API-запросов. Связка работает следующим образом: AnythingLLM принимает запросы пользователей через браузер, отправляет документы и промпты в Ollama, та возвращает ответ модели.

Вычислительное ядро — Ollama на домашнем ПК с GPU 16 ГБ; связь с VPS идёт через зашифрованный туннель L2TP/IPsec.

Архитектура решения разделена на два узла. Первый — арендованный VPS (Ubuntu), на котором работает контейнер AnythingLLM и терминируется HTTPS-трафик через Nginx с сертификатом от Let's Encrypt. Второй — домашний сервер с видеокартой NVIDIA RTX 4060 Ti на 16 ГБ видеопамяти, где запущена Ollama с набором моделей. Узлы соединены зашифрованным туннелем L2TP/IPsec: VPS выступает клиентом, роутер MikroTik 4011 на домашней стороне — сервером. Через туннель пробрасывается единственный порт 11434 — стандартный порт Ollama API.

Для генерации текстовых ответов автор рекомендует модель qwen2.5:9b от Alibaba — она укладывается в 16 ГБ видеопамяти и показывает приемлемое качество на русскоязычных запросах. Для построения эмбеддингов документов используется nomic-embed-text — компактная модель, оптимизированная именно под векторизацию текста, а не генерацию. Разделение ролей между моделями снижает нагрузку и повышает точность поиска по документам.

Отдельного внимания заслуживает сетевая часть. Домашний роутер работает с динамическим белым IP, что типично для большинства российских провайдеров. Проблему решает встроенная функция DDNS в MikroTik: роутер сам обновляет DNS-запись при смене адреса. Дополнительно автор описывает скрипт-сторож (watchdog), который на стороне VPS отслеживает актуальность IP-адреса и переподнимает туннель при необходимости. На стороне MikroTik в цепочке forward стоит правило drop для всех входящих соединений из туннеля, кроме явно разрешённого порта Ollama — так VPS не получает доступа в домашнюю локальную сеть.

Подобная схема актуальна для небольших компаний, которым нужно оценить практическую пользу от внедрения LLM до выделения бюджета на выделенный сервер с GPU. Стоимость VPS минимальна, вычислительные мощности берутся из уже имеющегося оборудования. Ограничение подхода очевидно: домашний сервер не обеспечивает гарантированного аптайма и не масштабируется под высокую нагрузку. Для продакшн-развёртывания потребуется либо выделенный сервер с GPU в дата-центре, либо on-premise решение внутри корпоративной сети.