Instalacao
Instalacao
Seção intitulada “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.
Requisitos de Sistema
Seção intitulada “Requisitos de Sistema”| Requisito | Minimo | Recomendado |
|---|---|---|
| Python | 3.10+ | 3.11+ |
| RAM | 4 GB | 8 GB+ |
| Disco | 2 GB (modelos + corpus) | 10 GB (com todos os livros) |
| GPU | Nao necessaria | Compativel com CUDA (acelera geracao de embeddings) |
| SO | Linux, macOS, WSL2 | Linux ou macOS |
Passo 1: Clone o Repositorio
Seção intitulada “Passo 1: Clone o Repositorio”git clone https://github.com/sensdiego/douto.gitcd doutoPasso 2: Crie um Ambiente Virtual
Seção intitulada “Passo 2: Crie um Ambiente Virtual”python3 -m venv .venvsource .venv/bin/activate # Linux/macOS# .venv\Scripts\activate # Windowspip install -r pipeline/requirements.txtDependencias atuais:
| Pacote | Finalidade | Tamanho |
|---|---|---|
sentence-transformers | Geracao de embeddings (Legal-BERTimbau) | ~200 MB |
torch | Backend de ML para sentence-transformers | ~800 MB |
numpy | Operacoes vetoriais (similaridade cosseno, etc.) | ~30 MB |
anthropic | SDK para API MiniMax M2.5 (via custom base_url) | ~5 MB |
llama-parse | Extracao de PDF via LlamaIndex | ~10 MB |
Passo 3: Configure as Variaveis de Ambiente
Seção intitulada “Passo 3: Configure as Variaveis de Ambiente”# Necessario para todos os estagios do pipelineexport 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 saidaexport OUTPUT_PATH="/caminho/para/output" # padrao: ~/.openclaw/workspace/juca/dataexport DATA_PATH="/caminho/para/search/data" # padrao: mesmo que OUTPUT_PATHO 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 extracaoPara a referencia completa de variaveis de ambiente, veja Variaveis de Ambiente.
Passo 4: Baixe o Modelo de Embedding
Seção intitulada “Passo 4: Baixe o Modelo de Embedding”A biblioteca sentence-transformers baixa automaticamente o rufimelo/Legal-BERTimbau-sts-base (~500 MB) na primeira execucao. Para baixar antecipadamente:
python3 -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('rufimelo/Legal-BERTimbau-sts-base')"Passo 5: Verifique a Instalacao
Seção intitulada “Passo 5: Verifique a Instalacao”# Verificar versao do Pythonpython3 --version # Deve ser 3.10+
# Verificar dependencias principaispython3 -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 buscapython3 pipeline/search_doutrina_v2.py --helpExecutando o Pipeline Completo
Seção intitulada “Executando o Pipeline Completo”Cada estagio depende da saida do anterior. Execute-os em ordem:
Estagio 1: Extracao de PDF
Seção intitulada “Estagio 1: Extracao de PDF”# Coloque os PDFs em $VAULT_PATH/Knowledge/_staging/input/python3 pipeline/process_books.py --dry-run # Pre-visualizar o que sera processadopython3 pipeline/process_books.py # Executar a extracaopython3 pipeline/process_books.py --tier fast # Usar tier mais barato do LlamaParseRequer: LLAMA_CLOUD_API_KEY. Veja Extracao de PDF.
Estagio 2: Chunking Inteligente
Seção intitulada “Estagio 2: Chunking Inteligente”python3 pipeline/rechunk_v3.py --dry-run # Pre-visualizarpython3 pipeline/rechunk_v3.py # Processar todos os livrospython3 pipeline/rechunk_v3.py contratos-gomes # Processar um livropython3 pipeline/rechunk_v3.py --min-chars 1500 # Tamanho minimo de chunk personalizadoNao requer API keys. Veja Chunking Inteligente.
Estagio 3: Enriquecimento de Chunks
Seção intitulada “Estagio 3: Enriquecimento de Chunks”python3 pipeline/enrich_chunks.py --dry-run # Pre-visualizarpython3 pipeline/enrich_chunks.py all # Enriquecer todos os chunkspython3 pipeline/enrich_chunks.py contratos # Enriquecer uma areaRequer: MINIMAX_API_KEY. Veja Enriquecimento.
Estagio 4: Geracao de Embeddings
Seção intitulada “Estagio 4: Geracao de Embeddings”python3 pipeline/embed_doutrina.py --dry-run # Pre-visualizarpython3 pipeline/embed_doutrina.py # Gerar embeddingsNao requer API keys (o modelo e baixado do HuggingFace). Veja Embeddings.
Estagio 5: Busca
Seção intitulada “Estagio 5: Busca”python3 pipeline/search_doutrina_v2.py --interativo # Modo interativopython3 pipeline/search_doutrina_v2.py "query" --area allVeja Busca Hibrida.
Troubleshooting
Seção intitulada “Troubleshooting”FileNotFoundError em caminhos hardcoded
Seção intitulada “FileNotFoundError em caminhos hardcoded”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"))Erros de CUDA no PyTorch
Seção intitulada “Erros de CUDA no PyTorch”Se sua GPU nao for compativel, force o modo CPU:
export CUDA_VISIBLE_DEVICES=""enrich_prompt.md nao encontrado
Seção intitulada “enrich_prompt.md nao encontrado”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.