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

83 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).