4.3 KiB
4.3 KiB
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).
Как это работает
- Скрипт выполняет поиск в Paperless по строке запроса (full-text по OCR).
- Берёт до
PAPERLESS_MAX_DOCSподходящих документов. - Собирает выдержки/полный текст и формирует промпт для модели Ollama.
- Отправляет промпт на
OLLAMA_URLи выводит ответ в stdout.
Примеры запуска
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:11434PAPERLESS_URL— адрес контейнера 104 (http://192.168.1.104:8000или домен, который проксирует NPM).
-
На другой машине (например, твой ноут):
PAPERLESS_URLиOLLAMA_URLуказывают на IP/домены Paperless и Ollama.- Учесть доступность портов и фаервол.
Безопасность и ограничение доступа
- Токен Paperless даёт доступ к документам — хранить его только в приватных местах (env, .env вне репозитория).
- Ollama обычно слушает на 11434; при пробросе наружу стоит ограничить доступ (файрвол, VPN).
- Запросы и выдержки из документов уходят в локальную модель; при использовании удалённых/облачных моделей учитывать конфиденциальность.
Связь с другими документами
- Контейнер 104 (Paperless) — где крутится Paperless-ngx и какие порты/тома используются.
- ВМ 200 (Immich) — может одновременно работать как хост для Ollama (порт 11434).