# Paperless + Ollama: поиск по документам Paperless-ngx Скрипт **paperless-ollama-ask.py** позволяет задавать вопросы по документам из Paperless-ngx (контейнер 104) и получать ответы от модели Ollama (обычно на ВМ 200). Работает так: ищет документы по тексту (OCR), собирает выдержки и подставляет их в промпт для локальной LLM. --- ## Требования - Python 3.9+ - Запущенный **Paperless-ngx** (см. `container-104.md`) с доступным API - Запущенный **Ollama** (обычно на ВМ 200, см. `container-200.md`) Скрипт хранится в репозитории в `homelab/paperless-ollama-ask.py`, документация — в этом файле. --- ## Переменные окружения | Переменная | Обязательная | По умолчанию | Пример | |----------------------|--------------|------------------------|----------------------------------| | `PAPERLESS_URL` | да | — | `http://192.168.1.104:8000` | | `PAPERLESS_TOKEN` | да | — | токен API из Paperless | | `OLLAMA_URL` | нет | `http://localhost:11434` | `http://192.168.1.200:11434` | | `OLLAMA_MODEL` | нет | `saiga` | имя модели в Ollama | | `PAPERLESS_MAX_DOCS` | нет | `5` | максимум документов в промпте | **PAPERLESS_TOKEN:** берётся в веб-интерфейсе Paperless: профиль пользователя → токен API (см. документацию Paperless-ngx). --- ## Как это работает 1. Скрипт выполняет поиск в Paperless по строке запроса (full-text по OCR). 2. Берёт до `PAPERLESS_MAX_DOCS` подходящих документов. 3. Собирает выдержки/полный текст и формирует промпт для модели Ollama. 4. Отправляет промпт на `OLLAMA_URL` и выводит ответ в stdout. --- ## Примеры запуска ```bash cd homelab export PAPERLESS_URL="http://192.168.1.104:8000" # контейнер 104 export PAPERLESS_TOKEN="твой_токен_из_Paperless" # Если Ollama на ВМ 200: export OLLAMA_URL="http://192.168.1.200:11434" # Вопросы по документам python3 paperless-ollama-ask.py "номер паспорта?" python3 paperless-ollama-ask.py "когда истекает договор?" ``` --- ## Где запускать - **На ВМ с Ollama (обычно ВМ 200):** - `OLLAMA_URL=http://localhost:11434` - `PAPERLESS_URL` — адрес контейнера 104 (`http://192.168.1.104:8000` или домен, который проксирует NPM). - **На другой машине (например, твой ноут):** - `PAPERLESS_URL` и `OLLAMA_URL` указывают на IP/домены Paperless и Ollama. - Учесть доступность портов и фаервол. --- ## Безопасность и ограничение доступа - **Токен Paperless** даёт доступ к документам — хранить его только в приватных местах (env, .env вне репозитория). - **Ollama** обычно слушает на 11434; при пробросе наружу стоит ограничить доступ (файрвол, VPN). - Запросы и выдержки из документов уходят в локальную модель; при использовании удалённых/облачных моделей учитывать конфиденциальность. --- ## Связь с другими документами - [Контейнер 104 (Paperless)](container-104.md) — где крутится Paperless-ngx и какие порты/тома используются. - [ВМ 200 (Immich)](container-200.md) — может одновременно работать как хост для Ollama (порт 11434).