Files
homelab-docs/docs/containers/paperless-ollama.md

4.3 KiB
Raw Blame History

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.

Примеры запуска

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) — где крутится Paperless-ngx и какие порты/тома используются.
  • ВМ 200 (Immich) — может одновременно работать как хост для Ollama (порт 11434).