Pular para o conteúdo

Instalacao

Este guia cobre o setup completo para executar todos os estagios do pipeline do Douto, da extracao de PDF ate a busca. Se voce so precisa pesquisar no corpus existente, veja o Quickstart.

RequisitoMinimoRecomendado
Python3.10+3.11+
RAM4 GB8 GB+
Disco2 GB (modelos + corpus)10 GB (com todos os livros)
GPUNao necessariaCompativel com CUDA (acelera geracao de embeddings)
SOLinux, macOS, WSL2Linux ou macOS
Terminal window
git clone https://github.com/sensdiego/douto.git
cd douto
Terminal window
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r pipeline/requirements.txt

Dependencias atuais:

PacoteFinalidadeTamanho
sentence-transformersGeracao de embeddings (Legal-BERTimbau)~200 MB
torchBackend de ML para sentence-transformers~800 MB
numpyOperacoes vetoriais (similaridade cosseno, etc.)~30 MB
anthropicSDK para API MiniMax M2.5 (via custom base_url)~5 MB
llama-parseExtracao de PDF via LlamaIndex~10 MB
Terminal window
# Necessario para todos os estagios do pipeline
export VAULT_PATH="/caminho/para/sua/vault"
# Necessario para extracao de PDF (process_books.py)
export LLAMA_CLOUD_API_KEY="sua-chave-llamaparse"
# Necessario para enriquecimento de chunks (enrich_chunks.py)
export MINIMAX_API_KEY="sua-chave-minimax"
# Opcional: personalizar caminhos de saida
export OUTPUT_PATH="/caminho/para/output" # padrao: ~/.openclaw/workspace/juca/data
export DATA_PATH="/caminho/para/search/data" # padrao: mesmo que OUTPUT_PATH

O diretorio VAULT_PATH deve ser uma vault Obsidian com a seguinte estrutura:

$VAULT_PATH/
└── Knowledge/
└── _staging/
├── input/ # Coloque os PDFs aqui
├── processed/ # Saida do process_books.py e rechunk_v3.py
└── failed/ # PDFs que falharam na extracao

Para a referencia completa de variaveis de ambiente, veja Variaveis de Ambiente.

A biblioteca sentence-transformers baixa automaticamente o rufimelo/Legal-BERTimbau-sts-base (~500 MB) na primeira execucao. Para baixar antecipadamente:

Terminal window
python3 -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('rufimelo/Legal-BERTimbau-sts-base')"
Terminal window
# Verificar versao do Python
python3 --version # Deve ser 3.10+
# Verificar dependencias principais
python3 -c "from sentence_transformers import SentenceTransformer; print('sentence-transformers OK')"
python3 -c "import torch; print(f'torch OK, CUDA: {torch.cuda.is_available()}')"
python3 -c "import numpy; print(f'numpy OK, version: {numpy.__version__}')"
python3 -c "import anthropic; print('anthropic OK')"
# Verificar CLI de busca
python3 pipeline/search_doutrina_v2.py --help

Cada estagio depende da saida do anterior. Execute-os em ordem:

Terminal window
# Coloque os PDFs em $VAULT_PATH/Knowledge/_staging/input/
python3 pipeline/process_books.py --dry-run # Pre-visualizar o que sera processado
python3 pipeline/process_books.py # Executar a extracao
python3 pipeline/process_books.py --tier fast # Usar tier mais barato do LlamaParse

Requer: LLAMA_CLOUD_API_KEY. Veja Extracao de PDF.

Terminal window
python3 pipeline/rechunk_v3.py --dry-run # Pre-visualizar
python3 pipeline/rechunk_v3.py # Processar todos os livros
python3 pipeline/rechunk_v3.py contratos-gomes # Processar um livro
python3 pipeline/rechunk_v3.py --min-chars 1500 # Tamanho minimo de chunk personalizado

Nao requer API keys. Veja Chunking Inteligente.

Terminal window
python3 pipeline/enrich_chunks.py --dry-run # Pre-visualizar
python3 pipeline/enrich_chunks.py all # Enriquecer todos os chunks
python3 pipeline/enrich_chunks.py contratos # Enriquecer uma area

Requer: MINIMAX_API_KEY. Veja Enriquecimento.

Terminal window
python3 pipeline/embed_doutrina.py --dry-run # Pre-visualizar
python3 pipeline/embed_doutrina.py # Gerar embeddings

Nao requer API keys (o modelo e baixado do HuggingFace). Veja Embeddings.

Terminal window
python3 pipeline/search_doutrina_v2.py --interativo # Modo interativo
python3 pipeline/search_doutrina_v2.py "query" --area all

Veja Busca Hibrida.

Dois scripts possuem caminhos hardcoded. Edite-os diretamente ou aguarde a F22:

# process_books.py linha 27 — altere para:
VAULT_PATH = Path(os.environ.get("VAULT_PATH", "/seu/caminho"))
# rechunk_v3.py linha 29 — altere para:
VAULT_PATH = Path(os.environ.get("VAULT_PATH", "/seu/caminho"))

Se sua GPU nao for compativel, force o modo CPU:

Terminal window
export CUDA_VISIBLE_DEVICES=""

O arquivo de prompt de enriquecimento esta ausente do repositorio. Este e um problema critico conhecido (RT01 no PREMORTEM.md). Ate que seja recuperado, o enriquecimento de novos chunks vai falhar.

Para mais solucoes, veja Troubleshooting.