Self‑host Khoj: личный AI‑мозг для поиска и автоматизации
Полный гайд по развертыванию Khoj — self‑hostable AI‑мозга: настройте личный ассистент для поиска по документам, вебу и LLM, контролируя данные.
Создание рабочей директории
Откройте терминал и создайте папку для Khoj.
mkdir khoj
cd khojСоздание файла docker-compose.yml
Создайте файл docker-compose.yml в папке khoj и скопируйте в него следующую конфигурацию. Замените your-secret-key-here на случайную строку (генерация: openssl rand -hex 32) и укажите параметры LLM (провайдер, ключ, модель). Для локальной модели через Ollama убедитесь, что Ollama запущен.
version: '3'
services:
khoj:
image: khojai/khoj:latest
container_name: khoj
restart: unless-stopped
environment:
- KHOJ_BACKEND_PORT=8000
- KHOJ_FRONTEND_PORT=4200
- KHOJ_DATABASE_URL=postgresql://postgres:password@db:5432/khoj
- KHOJ_DB_USER=postgres
- KHOJ_DB_PASSWORD=password
- KHOJ_DB_NAME=khoj
- KHOJ_DB_HOST=db
- KHOJ_REDIS_URL=redis://redis:6379/0
- KHOJ_SECRET_KEY=your-secret-key-here
- KHOJ_DEBUG=False
- KHOJ_LLM_PROVIDER=openai # или ollama, anthropic
- KHOJ_LLM_API_KEY=sk-... # Ваш API-ключ (если используете OpenAI)
- KHOJ_LLM_MODEL=gpt-3.5-turbo # Модель (например, gpt-3.5-turbo или llama3:8b для Ollama)
ports:
- "4200:4200" # Фронтенд
- "8000:8000" # Бэкенд (API)
volumes:
- ./khoj_data:/app/data
depends_on:
- db
- redis
networks:
- khoj_net
db:
image: postgres:15
container_name: khoj_db
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_DB=khoj
volumes:
- ./postgres_data:/var/lib/postgresql/data
networks:
- khoj_net
redis:
image: redis:7-alpine
container_name: khoj_redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- ./redis_data:/data
networks:
- khoj_net
networks:
khoj_net:
driver: bridgeЗапуск контейнеров
В терминале в папке khoj выполните команду для запуска контейнеров в фоновом режиме.
docker compose up -dПроверка статуса и логов
Убедитесь, что контейнеры запущены, и проверьте логи на наличие ошибок.
docker compose ps
docker compose logs -f khojПервичная настройка LLM
Откройте веб-интерфейс Khoj по адресу http://<ваш_адрес_сервера>:4200 (например, http://localhost:4200). Перейдите в раздел 'Settings' -> 'LLM'. Выберите провайдера (OpenAI, Ollama, Anthropic) и укажите необходимые параметры (API-ключ, URL для Ollama, модель). Для локальной модели через Ollama убедитесь, что хост доступен из контейнера (например, http://host.docker.internal:11434).
Настройка базы знаний (Data Sources)
В разделе 'Data Sources' добавьте источники данных. Для локальных файлов укажите путь внутри контейнера (например, /app/data/my_files). Сначала создайте папку на хосте: mkdir -p ./khoj_data/my_files. Для веб-страниц укажите URL. После добавления нажмите 'Save' или 'Sync' для начала индексации.
Проверка работы
Перейдите в раздел 'Chat' или 'Search' и задайте вопрос, относящийся к вашим данным (например, 'Что было в отчете за прошлый квартал?'). Khoj вернет ответ с цитатами из источников.
Безопасность и бэкап
Настройте firewall для портов 4200 и 8000, используйте HTTPS через reverse proxy. Для бэкапа создайте скрипт backup.sh и настройте cron.
#!/bin/bash
BACKUP_DIR=/path/to/backup/khoj/$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
cp -r ./khoj_data $BACKUP_DIR/
docker exec khoj_db pg_dump -U postgres khoj > $BACKUP_DIR/khoj_db.sql
echo "Backup created at $BACKUP_DIR"Как self-host'нуть Khoj — ваше второе AI-мозг, полностью под вашим контролем
Введение: Зачем вам свое AI-второе мозг
В современном цифровом мире информация разбросана по десяткам источников: документы, заметки, закладки, переписки. Традиционные поисковые системы не всегда эффективны для личных данных. AI-второе мозг — это система, которая индексирует ваши личные данные, поддерживает контекст и позволяет задавать ей естественные вопросы.
Почему self-host?
- Контроль: Ваши данные остаются на вашем сервере, вы не передаете их третьим лицам.
- Конфиденциальность: Работа с чувствительной информацией безопасна.
- Настройка под себя: Вы можете интегрировать любые источники данных, настроить модель под свои задачи.
- Стоимость: Локальное использование может быть дешевле облачных аналогов (особенно если у вас уже есть сервер).
Что такое Khoj? Функции и возможности
Khoj — это открытая платформа для создания локального AI-второго мозга. Она позволяет:
- Индексировать данные из various источников: файлы, папки, веб-страницы, заметки Obsidian, Notion, Emacs, и т.д.
- Подключать LLM (Large Language Model) — локальные модели (Llama, Mistral) через Ollama или облачные (OpenAI, Anthropic).
- Проводить поисковые запросы с возвращением фрагментов источника и ссылок.
- Генерировать ответы, используя контекст из индексированных данных.
- Работать как интеграция в браузере (расширение) или в приложениях (Obsidian, Emacs, VS Code).
Основные возможности:
- Поиск по документам (PDF, DOCX, Markdown, TXT, HTML, и т.д.)
- Автоматическая индексация при изменениях в файлах/папках.
- Веб-скрейпинг для учета контента веб-сайтов.
- Поддержка нескольких пользователей (при необходимости).
- REST API для интеграций.
- Дашборд настройки и управления.
Предварительные требования
Перед началом установки убедитесь, что у вас есть:
- Сервер или локальная машина с доступом в интернет (для первоначальной загрузки образов).
- Рекомендуемые ресурсы:
- CPU: Минимум 2 ядра, оптимально 4+ (для индексации больших объемов данных).
- RAM: Минимум 4 ГБ, оптимально 8+ (особенно при работе с LLM, если будете использовать локальные модели).
- Дисковое пространство: От 5 ГБ (минимум под систему и базу данных) до десятков ГБ под индексы и модели.
- Для локальных моделей: Если планируете использовать локальные LLM (через Ollama), учитывайте, что 13B-модели могут требовать 12+ ГБ RAM.
- Рекомендуемые ресурсы:
- Docker и Docker Compose установлены и запущены.
- Для Ubuntu/Debian:
sudo apt update && sudo apt install docker.io docker-compose-plugin - Для Windows/macOS: Установите Docker Desktop
- Для Ubuntu/Debian:
- Базовое понимание командной строки для запуска конфигурации.
- Доступ к браузеру для настройки (Khoj запустит веб-интерфейс).
Примечание: Khoj сам по себе не содержит модель. Вы подключаете LLM отдельно (локально через Ollama или облачную через API).
Развертывание Khoj с Docker Compose (пошаговая инструкция)
Шаг 1: Подготовка директории
Откройте терминал и создайте папку для Khoj:
mkdir khoj
cd khoj
Шаг 2: Создание файла docker-compose.yml
Создайте файл docker-compose.yml в папке khoj и вставьте следующий содержимое:
version: '3'
services:
khoj:
image: khojai/khoj:latest
container_name: khoj
restart: unless-stopped
environment:
- KHOJ_BACKEND_PORT=8000
- KHOJ_FRONTEND_PORT=4200
- KHOJ_DATABASE_URL=postgresql://postgres:password@db:5432/khoj
- KHOJ_DB_USER=postgres
- KHOJ_DB_PASSWORD=password
- KHOJ_DB_NAME=khoj
- KHOJ_DB_HOST=db
- KHOJ_REDIS_URL=redis://redis:6379/0
- KHOJ_SECRET_KEY=your-secret-key-here
- KHOJ_DEBUG=False
- KHOJ_LLM_PROVIDER=openai # или ollama, anthropic, azure
- KHOJ_LLM_API_KEY=sk-... # Ваш API-ключ, если используете OpenAI, иначе можно оставить пустым
- KHOJ_LLM_MODEL=gpt-3.5-turbo # Модель, если используете OpenAI
ports:
- "4200:4200" # Фронтенд
- "8000:8000" # Бэкенд (API)
volumes:
- ./khoj_data:/app/data # Папка для индексов и конфигурации
depends_on:
- db
- redis
networks:
- khoj_net
db:
image: postgres:15
container_name: khoj_db
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_DB=khoj
volumes:
- ./postgres_data:/var/lib/postgresql/data
networks:
- khoj_net
redis:
image: redis:7-alpine
container_name: khoj_redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- ./redis_data:/data
networks:
- khoj_net
networks:
khoj_net:
driver: bridge
Объяснение переменных окружения:
KHOJ_LLM_PROVIDER: Укажите провайдера LLM. Возможные значения:openai,ollama,anthropic,azure.KHOJ_LLM_API_KEY: Ваш API-ключ для выбранного провайдера. Если используете локальную модель через Ollama, оставьте пустым или не указывайте.KHOJ_LLM_MODEL: Имя модели (например,gpt-3.5-turbo,gpt-4,llama3:8bдля Ollama).KHOJ_SECRET_KEY: Случайная строка, используемая для шифрования данных. Сгенерируйте свою (openssl rand -hex 32).- Для локальной модели через Ollama, убедитесь, что Ollama запущен (например, в отдельном контейнере или на хосте). Khoj будет подключаться к API Ollama (обычно
http://host.docker.internal:11434на хост-машине). Пример для Ollama:environment: - KHOJ_LLM_PROVIDER=ollama - KHOJ_LLM_API_URL=http://host.docker.internal:11434 # или ip вашего сервера - KHOJ_LLM_MODEL=llama3:8b
Шаг 3: Запуск контейнеров
В терминале в папке khoj выполните:
docker compose up -d
Контейнеры запустятся в фоне. Проверьте статус:
docker compose ps
Если все работает, вы увидите три контейнера: khoj, khoj_db, khoj_redis.
Шаг 4: Проверка логов (опционально)
Если есть ошибки, посмотрите логи:
docker compose logs -f khoj
Вы должны увидеть сообщение, что сервер запущен (обычно Uvicorn running on http://0.0.0.0:8000 для бэкенда и Application listening on http://0.0.0.0:4200 для фронтенда).
Первичная настройка: подключение LLM (локальный или облачный), база знаний
Теперь откройте в браузере http://<ваш_адрес_сервера>:4200 (например, http://localhost:4200 если запускаете локально). Вы увидите веб-интерфейс Khoj.
Шаг 1: Настройка LLM
На главной странице нажмите "Settings" (Настройки) → "LLM".
- Выберите провайдера:
- OpenAI: Укажите API-ключ и модель (например,
gpt-3.5-turbo). Проверьте баланс в аккаунте OpenAI. - Ollama: Убедитесь, что Ollama работает (на хосте или в другом контейнере). Укажите адрес API (например,
http://host.docker.internal:11434). Загрузите модель в Ollama:ollama pull llama3:8b. Укажите имя модели (например,llama3:8b). - Anthropic (Claude): Требуется API-ключ от Anthropic.
- OpenAI: Укажите API-ключ и модель (например,
Важно: Для локальной модели убедитесь, что хост-машина доступна из контейнера. На Linux это обычно
http://<IP_хоста>:11434. Для Docker Desktop можно использоватьhttp://host.docker.internal:11434.
Шаг 2: Настройка базы знаний (Data Sources)
В разделе "Data Sources" добавьте источники данных:
-
Локальные файлы и папки:
- Выберите тип "Files & Folders".
- Укажите путь внутри контейнера (он должен быть смонтирован в том
./khoj_data). Пример:/app/data/my_files. Сначала создайте папку на хосте:mkdir -p ./khoj_data/my_files. Тогда путь в контейнере будет/app/data/my_files. - Или используйте volume для монтирования конкретных папок с хоста в
docker-compose.yml(измените./khoj_dataна конкретные пути).
-
Веб-страницы:
- Выберите "Web Pages".
- Укажите URL (например,
https://example.com/page). Можно указать фильтры для сканирования внутренних ссылок.
-
Примечания Obsidian, Notion, Emacs:
- Выберите соответствующий тип. Для Obsidian, например, укажите путь к папке заметок.
После добавления источника нажмите "Save" или "Sync". Khoj начнет индексацию. Время зависит от объема данных.
Шаг 3: Первый поиск
В разделе "Chat" или "Search" введите вопрос, относящийся к вашим данным. Например, "Что было в отчете за прошлый квартал?". Khoj найдет релевантные фрагменты и сгенерирует ответ с цитатами.
Как использовать: поиск по документам, автоматизация, работа с веб-содержимым
Поиск по документам
- Через веб-интерфейс: Задавайте вопросы в чате. Khoj будет возвращать ответы с источниками.
- Через браузерное расширение: Установите расширение Khoj для Chrome/Brave/Firefox из официального репозитория. Оно позволяет индексировать текущую веб-страницу и запрашивать информацию из ваших данных.
Автоматизация
- Автоматическое обновление: В настройках источника данных можно включить периодическую индексацию (например, каждый час) для файловых папок или веб-страниц.
- Через API: Используйте REST API Khoj для интеграции с другими приложениями.
- Пример запроса на поиск через curl:
curl -X POST http://localhost:8000/api/search -H "Content-Type: application/json" -d '{"q": "ваш запрос", "n": 5}'
- Пример запроса на поиск через curl:
Работа с веб-содержимым
- Индексация: Добавьте веб-страницу в данные. Khoj скачивает и парсит HTML, извлекает текст.
- Использование: При вопросе о содержимом сайта, Khoj найдет相关信息.
- Расширение браузера: Позволяет добавлять страницы к себе в индекс в один клик.
Безопасность и резервное копирование
Безопасность
- Сетевой доступ: Ограничьте доступ к портам 4200 и 8000. В
docker-compose.ymlне перенаправляйте порты на внешний интерфейс, если только нужно. Или используйте firewall (ufw) для ограничения IP. - HTTPS: Для доступа через интернет настройте reverse proxy (Nginx, Traefik) с SSL сертификатом (например, от Let's Encrypt).
- Пароли: Используйте сложные пароли для базы данных и сгенерированный
KHOJ_SECRET_KEY. - Данные: Убедитесь, что тома хранятся в безопасном месте. Используйте шифрование диска на уровне ОС при необходимости.
- Обновления: Регулярно обновляйте образы Docker:
docker compose pull docker compose up -d
Резервное копирование
- Регулярные бэкапы: Создайте скрипт для копирования данных и резервных копий баз. Пример скрипта
backup.sh:Выполните его периодически через cron:#!/bin/bash BACKUP_DIR=/path/to/backup/khoj/$(date +%Y%m%d) mkdir -p $BACKUP_DIR cp -r ./khoj_data $BACKUP_DIR/ docker exec khoj_db pg_dump -U postgres khoj > $BACKUP_DIR/khoj_db.sql echo "Backup created at $BACKUP_DIR"0 2 * * * /path/to/backup.sh. - Восстановление:
- Остановите контейнеры:
docker compose down. - Восстановите данные:
cp -r /backup/khoj_data ./. - Восстановите базу:
cat /backup/khoj_db.sql | docker exec -i khoj_db psql -U postgres khoj. - Запустите контейнеры:
docker compose up -d.
- Остановите контейнеры:
Заключение и полезные ссылки
Вы успешно развернули Khoj как свой личный AI-второй мозг. Теперь вы можете индексировать свои данные и задавать вопросы, оставаясь полностью владель своих информации.
Полезные ссылки:
- Официальный сайт Khoj
- Документация Khoj
- GitHub репозиторий (для issue и обновлений)
- Сообщество в Discord
- Ollama (для локальных моделей)
- Docker Compose документация
Советы по расширению:
- Для больших объемов данных рассмотрите использование более мощного сервера или облачного хостинга (например, Hetzner, AWS).
- Экспериментируйте с разными моделями для баланса между качеством ответов и скоростью.
- Интегрируйте Khoj с вашими рабочими инструментами через API для автоматизации задач.
Если у вас возникнут вопросы, обратитесь к документации или сообществу. Удачи в использовании вашего нового AI-второго мозга!