Pular para o conteúdo

Configuracoes e Parametros

Parametros configuraveis do Douto. A maioria esta atualmente hardcoded nos arquivos-fonte e precisa ser externalizada em milestones futuros.

ConfiguracaoValorLocalizacaoConfiguravel
DEFAULT_TIER"cost_effective"Linha 37Sim, via --tier (argumento CLI)
Padrao de divisao por capituloHeaders H1/H2 em markdownHardcoded em split_into_chapters()Nao
Diretorio de entrada$VAULT_PATH/Knowledge/_staging/input/HardcodedNao
Diretorio de saida$VAULT_PATH/Knowledge/_staging/processed/HardcodedNao
Diretorio de falhas$VAULT_PATH/Knowledge/_staging/failed/HardcodedNao

Tiers do LlamaParse:

TierQualidadeVelocidadeCustoQuando usar
agenticMelhorMais lentoMais altoPDFs escaneados, layouts complexos, tabelas
cost_effectiveBoa (padrao)MediaMedioPDFs de texto limpo, maioria dos livros juridicos
fastBasicaMais rapidaMais baixoDocumentos somente texto
Terminal window
python3 pipeline/process_books.py --tier agentic livro.pdf

ConfiguracaoValorLocalizacaoConfiguravel
MIN_CHUNK_CHARS1500Linha 32Sim, via --min-chars (argumento CLI)
MAX_CHUNK_CHARS15000Linha 33Nao (hardcoded)
SECTION_PATTERNS16 padroes regexLinhas 41-72Nao (hardcoded)
Limiar de running headerDeteccao baseada em frequenciaHeuristica hardcodedNao

Padroes de Deteccao de Secao (16 no total):

O rechunker reconhece os seguintes padroes estruturais em markdown juridico:

Tipo de PadraoExemploID do Regex
Headers markdown## Section Titlemd_header
Capitulos em ingles**Chapter 5:** Titlechapter_en
Capitulos em portugues**Capitulo X** Titlecapitulo_pt
CHAPTER em caixa altaCHAPTER 5 Titlechapter_caps
CAPITULO em caixa altaCAPITULO Xcapitulo_caps
Titulo (livro)TITULO VItitulo
PartePARTE GERALparte
Part em inglesPart Onepart_en
Artigo de leiArt. 481. ou ### Art. 481artigo
Secao em portuguesSecao Isecao
Section em inglesSection Xsection_en
Numerado caixa alta1. TITULO EM MAIUSCULASnumbered_caps
Numerado negrito**1.** Titlenumbered_bold
Linha caixa altaRESPONSABILIDADE CIVIL OBJETIVAallcaps_title
Titulo negrito caixa alta**SOME TITLE HERE**bold_caps_title

Regras de Chunking (hardcoded, nao configuraveis):

  • Notas de rodape sao agrupadas com o paragrafo pai
  • Artigos de lei + comentario nunca sao separados
  • Exemplos praticos permanecem com o principio que ilustram
  • Running headers (titulo/autor repetidos) sao filtrados por frequencia
  • Bibliografias sao extraidas como chunks separados com tipo "bibliografia"
  • Prefacios, agradecimentos e fichas catalograficas sao filtrados como ruido

ConfiguracaoValorLocalizacaoConfiguravel
MINIMAX_BASE_URL"https://api.minimax.io/anthropic"Linha 30Nao (hardcoded)
MINIMAX_MODEL"MiniMax-M2.5"Linha 31Nao (hardcoded)
WORKERS5Linha 34Nao (hardcoded)
DELAY_BETWEEN_REQUESTS0.5 segundosLinha 35Nao (hardcoded)
PROMPT_PATHpipeline/enrich_prompt.mdLinha 27Nao (hardcoded)

Campos de Metadados de Enriquecimento:

O LLM classifica cada chunk nos seguintes campos estruturados:

CampoTipoDescricaoValores de exemplo
categoriastringCategoria de alto nivel"doutrina", "legislacao_comentada"
institutolist[string]Institutos juridicos["boa-fe objetiva", "exceptio non adimpleti"]
tipo_conteudostringTipo de conteudo"definicao", "requisitos", "exemplo", "critica"
fasestringFase processual"formacao", "execucao", "extincao"
ramostringRamo do direito"civil", "processual_civil", "empresarial"
fontes_normativaslist[string]Referencias normativas["CC art. 476", "CPC art. 300"]

ConfiguracaoValorLocalizacaoConfiguravel
MODEL_NAME"rufimelo/Legal-BERTimbau-sts-base"Linha 24Nao (hardcoded)
Dimensoes do embedding768Determinado pelo modeloNao
BATCH_SIZE32Linha 25Nao (hardcoded)
MAX_TOKENS512Linha 26Nao (hardcoded, limite do BERTimbau)
NormalizacaoTrueHardcodedNao

Template de Composicao de Texto:

Embeddings sao gerados a partir de um texto composto, nao do corpo bruto do chunk:

[categoria | instituto_1, instituto_2 | tipo_conteudo | titulo | corpo_truncado_at_512_tokens]

Arquivos de Saida:

ArquivoConteudo
embeddings_{area}.jsonVetores de 768 dimensoes por chunk, normalizados
search_corpus_{area}.jsonTexto do chunk + metadados para exibicao
bm25_index_{area}.jsonTermos pre-tokenizados para ranking BM25

ConfiguracaoValorLocalizacaoConfiguravel
semantic_weight0.7Linha 163 (padrao da funcao)Sim, via /weight no modo interativo
BM25 k11.5Linha 126Nao (hardcoded)
BM25 b0.75Linha 126Nao (hardcoded)
top_k padrao5Linha 263Sim, via --top (argumento CLI) ou /top

Modos de Busca (interativo):

ComandoModoDescricao
/hybridHibrido (padrao)semantic_weight * cosine + (1 - semantic_weight) * BM25
/semApenas semanticoSimilaridade cosseno pura nos embeddings
/bm25Apenas BM25Ranking puro por palavras-chave
/area contratosFiltro por areaRestringir busca a uma area juridica especifica
/filtro instituto=XFiltro por metadadoFiltrar por campo de metadado de enriquecimento
/verboseSaida detalhadaMostrar texto completo do chunk nos resultados
/top NTop-KAlterar numero de resultados retornados

Parametros do BM25 Explicados:

  • k1 = 1.5 — Controla a saturacao de frequencia de termos. Valores mais altos dao mais peso a termos repetidos. Faixa padrao: 1.2-2.0.
  • b = 0.75 — Controla a normalizacao por comprimento do documento. b = 1.0 significa normalizacao total; b = 0.0 significa sem normalizacao. Valor padrao para texto geral.

Estas convencoes sao definidas no CLAUDE.md e aplicadas manualmente:

Arquivos MOC requerem:

---
type: moc
domain: civil # legal domain
description: "..." # brief description
---

Arquivos de chunk requerem:

---
knowledge_id: "contratos-orlando-gomes-cap05-001"
tipo: chunk
titulo: "Exceptio non adimpleti contractus"
livro_titulo: "Contratos"
autor: "Orlando Gomes"
area_direito: civil
status_enriquecimento: completo # or "pendente" or "lixo"
instituto: ["exceptio non adimpleti contractus"]
tipo_conteudo: definicao
ramo: civil
---
TipoPadraoExemplo
MOCMOC_{DOMAIN}.mdMOC_CIVIL.md
Diretorio do livro{author}-{title} (slugificado)contratos-orlando-gomes/
Arquivo de chunkchunk_{NNN}.mdchunk_001.md

Sempre use wikilinks no estilo Obsidian para referencias internas:

[[MOC_CIVIL]] # correct
[MOC Civil](mocs/MOC_CIVIL.md) # incorrect — never use relative markdown links

As configuracoes atuais estao espalhadas por 5 scripts como constantes hardcoded. O roadmap inclui varios passos rumo a uma configuracao centralizada:

MilestoneFeatureO que muda
v0.2F22Todos os caminhos usam os.environ.get() com fallbacks consistentes
v0.2F23Configuracoes compartilhadas extraidas para pipeline/utils.py
v0.3F31Makefile com targets configuraveis (make pipeline, make test)
v0.3F32Configuracao do linter ruff

Feature Planejada — Um config.yaml ou pyproject.toml centralizado para todas as configuracoes do pipeline esta em consideracao, mas ainda nao esta no roadmap. Atualmente, editar os arquivos-fonte e a unica forma de alterar a maioria dos parametros.