Внутренняя база знаний компании на VPS с ИИ-поиском
Знания компании обычно разбросаны по десяткам мест: часть — в Google Docs, часть — в заметках в Notion или похожем инструменте, часть — в переписке в мессенджере, а часть вообще живёт только в голове у одного сотрудника, который два года назад настраивал процесс и с тех пор его никто не трогал. Новый человек в команде тратит первую неделю не на работу, а на то, чтобы понять, где искать ответ на простой вопрос: как оформить отпуск, какой у нас процесс релиза, кто отвечает за интеграцию с платёжным провайдером. Старые сотрудники тоже не выигрывают — они просто научились спрашивать в чате у коллег вместо того, чтобы искать в вики, потому что поиск по вики почти никогда не находит то, что нужно, если формулировка не совпадает дословно. Решение — не ещё одна вики, а база знаний с ИИ-поиском, которая читает все документы компании и отвечает на вопросы обычным языком, при этом стоит на собственном сервере, а не в чужом облаке.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Чем это отличается от обычной вики
Обычная вики — это хранилище: документы лежат в папках, есть строка поиска по ключевым словам, и если формулировка вопроса не совпадает с текстом документа, поиск ничего не найдёт. Сотрудник открывает пять статей, читает по диагонали, собирает ответ вручную. Чем больше компания, тем хуже становится ситуация — документов сотни, актуальность у половины сомнительная, а найти нужный абзац в тридцатистраничном регламенте почти нереально.
База знаний с ИИ-поиском работает иначе. Документы индексируются не как текст для полнотекстового поиска, а как смысловые фрагменты — система понимает, о чём вопрос, даже если он сформулирован не так, как в документе. На вопрос «как оформить отпуск, если я в командировке» инструмент не выдаст список файлов, где встречается слово «отпуск», а соберёт ответ из релевантных фрагментов регламента и напишет его обычным языком, со ссылкой на источник — конкретный документ и место в нём, чтобы можно было проверить. Это и есть RAG (retrieval-augmented generation) — подход, при котором языковая модель отвечает не по общим знаниям, а строго по загруженным документам компании. Подробнее о механике такого поиска — в статье как поднять RAG по своим документам на сервере.
Разница на практике: вместо «вот пять ссылок, разбирайся сам» сотрудник получает готовый ответ за десять секунд, и если ответ неточный — сразу видно, из какого документа он взят, и можно поправить сам документ.
Почему на своём сервере, а не в облачном SaaS
Готовых облачных сервисов для корпоративного поиска по документам с ИИ хватает, но у них есть общая проблема — все внутренние документы компании (договоры, зарплатные вилки, клиентские базы, протоколы встреч с чувствительными деталями) загружаются на серверы третьей компании. Даже если провайдер обещает шифрование и не использует данные для обучения моделей, это остаётся вопросом доверия к чужой инфраструктуре, а не техническим фактом, который можно проверить.
Второй момент — деньги. Облачные сервисы обычно берут плату за место, за число пользователей или за количество запросов, и счёт растёт вместе с базой знаний, часто нелинейно. Собственный VPS стоит фиксированную сумму в месяц независимо от того, сколько документов загружено и сколько сотрудников пользуются базой.
Третье — контроль. На своём сервере можно настроить точные права доступа по отделам, выбрать любую языковую модель (в том числе развёрнутую полностью локально, без обращений к внешним API) и не зависеть от того, что будет с чужим сервисом через год. Для компании, где документы содержат хоть что-то чувствительное — а это почти всегда так, — это не паранойя, а разумная гигиена.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Развернуть AnythingLLMВыбор инструмента: AnythingLLM или Dify
Для внутренней базы знаний с ИИ-поиском есть два реалистичных варианта с открытым кодом, и выбор между ними зависит от того, что нужно компании.
AnythingLLM — это готовый инструмент именно под задачу «загрузить документы, получить чат-поиск по ним». У него есть понятие workspace (рабочее пространство) — можно завести отдельный workspace на отдел или на проект, загрузить туда документы, и модель будет отвечать только в контексте этого набора. Интерфейс простой, разворачивается за одну команду, подходит компаниям, которым нужен именно поиск и ответы по документам, без сложной логики вокруг.
Dify — инструмент шире по возможностям: помимо базы знаний он позволяет строить сценарии с автоматизацией — например, ИИ-агента, который не просто отвечает на вопрос, а по итогам разговора создаёт задачу в трекере, отправляет уведомление в нужный чат или дергает внешний API. Если планы компании не ограничиваются простым поиском по документам, а включают более сложную автоматизацию процессов вокруг базы знаний, стоит присмотреться к Dify — сравнение и типовые сценарии есть в статье как собрать ИИ-ассистента для команды на Dify.
Для большинства компаний, которым нужна именно база знаний с поиском — HR, продуктовой команде, поддержке — AnythingLLM закрывает задачу быстрее и с меньшим количеством настроек. Дальше в статье используется именно он, а полное сравнение подходов — в материале AnythingLLM против Dify: что выгоднее и когда.
Установка на VPS
Для базы знаний на несколько отделов с умеренной нагрузкой достаточно VPS с 4 ядрами и 8 ГБ оперативной памяти — этого хватит, если языковая модель будет вызываться через внешний API (например, у крупных провайдеров). Если планируется полностью локальная модель без обращений наружу, память и видеопамять нужно подбирать под конкретную модель — это отдельный вопрос, разобранный в статье сколько RAM нужно для AnythingLLM.
Самый простой способ поднять AnythingLLM на чистом сервере с Ubuntu — через Docker:
apt update && apt install -y docker.io docker-compose-plugin
mkdir -p /opt/anythingllm/storage
docker run -d -p 3001:3001 \
--name anythingllm \
--restart unless-stopped \
-v /opt/anythingllm/storage:/app/server/storage \
-e STORAGE_DIR=/app/server/storage \
mintplexlabs/anythingllm
После запуска интерфейс доступен на порту 3001. Для рабочего использования компанией сразу стоит закрыть прямой доступ к порту и поставить обратный прокси с HTTPS и авторизацией:
apt install -y nginx certbot python3-certbot-nginx
certbot --nginx -d kb.company.example
а в конфигурации nginx проксировать запросы на localhost:3001, ограничив прямой доступ к порту файрволом (ufw deny 3001 при разрешённом только через прокси). Дальше в веб-интерфейсе указывается провайдер языковой модели — можно подключить внешний API или локальную модель — и создаётся первый workspace. Подробный пошаговый разбор установки, включая нюансы с обновлениями и бэкапами, — в статье как установить и настроить AnythingLLM на VPS, а если что-то пошло не так после запуска — в материале AnythingLLM на сервере: частые ошибки и решения.
Структура базы: workspace по отделам
Ключевое архитектурное решение — не сваливать все документы компании в одно общее пространство. У AnythingLLM для этого есть workspace: логически изолированный набор документов со своей историей переписки. Разумная структура для компании среднего размера выглядит так:
- HR — регламенты по отпускам, больничным, онбордингу новых сотрудников, кадровая политика.
- Продукт — техническая документация, гайдлайны, описания фич, роадмап.
- Поддержка — база типовых вопросов клиентов, скрипты ответов, эскалации.
- Операции/финансы — внутренние процессы, шаблоны документов, отчётность.
- Общий — то, что нужно всем: структура компании, контакты, общие правила.
Отдельный workspace даёт два преимущества. Во-первых, точность ответа: если вопрос про отпуск ищется только среди HR-документов, а не среди всей базы компании, ИИ не подмешает нерелевантный контекст из документации по продукту. Во-вторых, это естественная граница для прав доступа — рабочее пространство поддержки не должно быть видно всем подряд, если там фигурируют данные клиентов.
Если компания хранит основной объём документов в PDF (сканы договоров, инструкции, презентации), удобно сразу продумать процесс регулярной выгрузки — про это подробнее в материале про RAG по своим PDF без облака на VPS.
Права доступа: кто что видит
По умолчанию в AnythingLLM есть роли — администратор, менеджер и обычный пользователь, и доступ к workspace настраивается на уровне каждого пространства отдельно. Разумная модель для компании:
- Администратор — один-два человека (обычно ИТ или руководитель проекта внедрения), у них полный доступ ко всем workspace и настройкам.
- Менеджеры отделов получают права на управление документами в workspace своего отдела — могут загружать и удалять файлы, но не видят настройки сервера.
- Обычные сотрудники получают доступ на чтение только к тем workspace, которые относятся к их отделу и к общему пространству.
Важно не пропустить момент с чувствительными данными: если в документах поддержки или HR встречаются персональные данные клиентов или сотрудников, доступ к соответствующему workspace должен быть ограничен строго тем, кому это нужно по работе, а не открыт всей компании «на всякий случай». Это же касается истории переписки с ИИ внутри workspace — она тоже видна тем, у кого есть доступ к пространству, так что стоит заранее решить, кто может просматривать чужие запросы.
Поддержание базы в актуальном состоянии
База знаний, которую загрузили один раз и забыли, довольно быстро становится источником неправильных ответов — а неправильный ответ от ИИ, который звучит уверенно, опаснее, чем отсутствие ответа вообще. Здесь стоит сразу договориться о процессе, а не полагаться на то, что кто-то вспомнит обновить документ.
Практический подход:
- Назначить ответственного за каждый workspace — обычно это тот же человек, который отвечает за соответствующий регламент в компании.
- Завести правило: документ обновился — его перезаливают в базу в тот же день, а не «когда будет время». Устаревшая версия должна быть удалена из workspace, а не просто дополнена новой — иначе ИИ может процитировать старую формулировку, потому что технически она тоже есть в индексе.
- Раз в квартал делать ревизию — просматривать список документов в каждом workspace и убирать то, что устарело окончательно (закрытые проекты, отменённые процессы).
Отдельно стоит понимать, что происходит технически при обновлении документа: AnythingLLM переиндексирует именно изменённый файл, а не всю базу, так что процесс не требует пересборки всего workspace — но если старую версию файла не удалить явно, в индексе может остаться дублирующий фрагмент. Поэтому правильный порядок действий — сначала удалить устаревшую версию документа из workspace, затем загрузить новую, а не наоборот.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Развернуть AnythingLLMОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Нужен ли для этого дорогой сервер?
Нет, если языковая модель вызывается через внешний API — хватает среднего VPS на 4 ядра и 8 ГБ памяти. Требования растут только если разворачивать модель полностью локально.
Можно ли подключить и Google Docs, и файлы с компьютера?
Да, AnythingLLM принимает загрузку файлов напрямую и поддерживает синхронизацию с рядом внешних источников; для регулярных выгрузок из Google Docs удобнее настроить экспорт документов в PDF или текст по расписанию и загружать пакетно.
Что если сотрудник спросит то, чего нет в базе?
Инструмент настраивается так, чтобы честно отвечать «в загруженных документах ответа нет» вместо того, чтобы придумывать правдоподобный, но неверный ответ — это стандартная настройка RAG-систем, ограничивающая модель контекстом документов.
Стоит ли сразу начинать с Dify вместо AnythingLLM?
Только если помимо поиска нужна автоматизация — создание задач, интеграции с внешними системами по итогам диалога. Для чистой задачи «найти ответ в документах» AnythingLLM проще и быстрее в развёртывании.
Как быть с очень старыми документами, в которых сейчас никто не уверен?
Не загружать их в основной workspace, а либо архивировать отдельно с пометкой «требует проверки», либо сначала актуализировать с ответственным за это направление и только потом индексировать.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.