Fragmentação documental
Informações relevantes ficam distribuídas entre documentos extensos, versões, páginas digitalizadas e diferentes fases processuais.
Sistema experimental que transforma autos, peças, decisões, imagens e normas em uma base semântica pesquisável. A inteligência artificial não responde baseada em conhecimento genérico prévio: o algoritmo de RAGRetrieval-Augmented Generation: Técnica que busca o documento exato na base e o injeta como contexto para o modelo gerar a resposta.[1] localiza os trechos mais relevantes do conjunto documental e os utiliza para ancorar (GroundingRestringir as respostas da IA exclusivamente às informações e evidências extraídas dos documentos fornecidos.[7]) uma análise jurídica estritamente supervisionada.
O JurisRAG é uma solução independente de pesquisa e desenvolvimento. As respostas dependem da qualidade dos documentos, da recuperação dos trechos e do modelo utilizado. Todo resultado deve ser conferido por profissional habilitado (Supervisão HumanaConferência obrigatória do resultado sugerido pelo algoritmo antes da tomada de decisão.[10]); o sistema não decide processos, não emite parecer institucional e não substitui leitura técnica, contraditório ou julgamento humano.
A migração do papel para sistemas eletrônicos ampliou o acesso e a circulação dos documentos jurídicos. Entretanto, um processo continua sendo composto por dezenas ou centenas de peças produzidas em momentos diferentes, por partes diferentes e com finalidades distintas. Petição inicial, contestação, provas, decisões interlocutórias, sentença, recursos, acórdãos e certidões convivem no mesmo conjunto documental.
Para compreender a situação atual de um caso, não basta localizar palavras. É necessário reconhecer a ordem dos acontecimentos, distinguir alegação de decisão, identificar qual documento é posterior, verificar se uma tese foi superada e relacionar fatos, pedidos, fundamentos e provas. Uma certidão de trânsito em julgado, por exemplo, altera completamente a interpretação dos pedidos formulados no início da ação.
Os modelos de linguagem conseguem redigir e resumir textos, mas uma pergunta enviada sem contexto suficiente pode produzir resposta genérica, desatualizada em relação aos próprios autos ou apoiada em inferências não documentadas. O desafio central, portanto, não é apenas “usar IA no Direito”. É construir uma cadeia capaz de selecionar evidências pertinentes, preservar sua origem e entregar ao modelo somente o contexto necessário para responder.
O JurisRAG nasceu dessa necessidade: organizar documentos de um processo, extrair seu conteúdo mesmo quando digitalizado como imagem via OCROptical Character Recognition: Reconhecimento óptico utilizado para converter imagens de texto em conteúdo pesquisável.[5], transformar o texto em representações vetoriais e recuperar semanticamente os trechos mais relacionados à pergunta. A resposta permanece generativa, mas passa a ser condicionada pelo conteúdo efetivamente cadastrado e acompanhada das evidências recuperadas.
Informações relevantes ficam distribuídas entre documentos extensos, versões, páginas digitalizadas e diferentes fases processuais.
O significado jurídico de uma peça depende do que aconteceu antes e, principalmente, das decisões e certidões produzidas depois.
Sem algoritmos de recuperação e ancoragem (GroundingCondicionamento da resposta às evidências e provas físicas fornecidas ao modelo, bloqueando respostas inventadas.[9]), fluência textual pode ser confundida com correção jurídica.
O JurisRAG não surgiu como uma aplicação genérica concebida apenas em laboratório. Seu desenvolvimento começou diante de um problema jurídico concreto: organizar um conjunto heterogêneo de documentos relacionados a um procedimento extrajudicial, no qual certidões, matrículas, documentos tributários, contratos e anexos precisavam ser localizados, classificados e analisados conjuntamente.
A primeira implementação concentrava-se na preparação do acervo. O sistema identificava PDFs com texto insuficiente, acionava OCR, corrigia rotação e inclinação, classificava tipos documentais e extraía campos conforme regras específicas. Os resultados eram convertidos em Markdown estruturado e vinculados ao documento original por hash SHA-256, reduzindo duplicidades e preservando a origem da informação.
Com o crescimento do conjunto documental, a organização por arquivos deixou de ser suficiente. Tornou-se necessário formular perguntas sobre todo o caso, encontrar informações distribuídas entre documentos e impedir que a IA respondesse com conhecimento externo ou suposições. Foram incorporados segmentação com sobreposição, EmbeddingsRepresentação vetorial que aproxima textos por significado, e não apenas por palavras-chave idênticas.[2], busca por similaridade, limiar mínimo de relevância e respostas restritas às evidências recuperadas.
Essa experiência mostrou que o problema não pertencia apenas a um procedimento específico. A mesma necessidade aparece em processos judiciais, dossiês administrativos, auditorias e acervos jurídicos: primeiro é preciso tornar o documento legível e confiável; depois, recuperar as evidências certas; somente então utilizar um modelo generativo.
A solução inicial foi, assim, generalizada em duas frentes complementares. O ConverseDoc passou a concentrar a inteligência documental — extração multimétodo, reconciliação e qualidade — enquanto o JurisRAG evoluiu para organização de processos, indexação semântica, recuperação de evidências e análise jurídica supervisionada.
flowchart TB N["Necessidade jurídica concreta"] --> O["Organização documental"] O --> OCR["OCR, classificação e extração"] OCR --> MD["Documentos estruturados em Markdown"] MD --> SEM["Embeddings e busca semântica"] SEM --> QA["Perguntas restritas ao acervo"] QA --> GEN["Generalização da arquitetura"] GEN --> CD["ConverseDoc: inteligência documental"] GEN --> JR["JurisRAG: análise jurídica com evidências"]
Organizar, classificar e tornar pesquisáveis documentos jurídicos heterogêneos.
Reconhecer que extração, rastreabilidade e recuperação são problemas recorrentes em diferentes acervos.
Separar inteligência documental e análise jurídica em componentes reutilizáveis e avaliáveis.
O que essa trajetória demonstra
A inovação não consistiu em acrescentar IA a uma interface pronta. Ela surgiu da modelagem progressiva de um problema jurídico real, da observação dos limites da primeira solução e da transformação desse aprendizado em uma arquitetura mais ampla, modular e reutilizável.
A arquitetura separa preparação documental, indexação, recuperação e geração. Essa separação permite revisar o texto antes de indexá-lo, trocar estratégias de OCR, reconstruir o índice vetorial e avaliar isoladamente cada etapa.
flowchart TB
subgraph I["1. Ingestão documental"]
ARQ["PDF, DOCX,
imagens e textos"]
URL["Normas e páginas
por URL"]
end
subgraph P["2. Preparação supervisionada"]
EXT["Extração nativa
ou OCR"]
REV["Revisão e
correção humana"]
end
subgraph X["3. Indexação semântica"]
CH["Chunks com
sobreposição"]
EM["Geração de
Embeddings"]
FI["Índice FAISS
por processo"]
end
subgraph Q["4. Consulta jurídica"]
BUS["Recuperação e
reordenação"]
LLM["Modelo Generativo
com contexto restrito"]
end
subgraph R["5. Resultado verificável"]
RESP["Análise ou
resposta gerada"]
EVI["Documento, trecho,
página e score exibidos"]
end
ARQ --> EXT
URL --> EXT
EXT --> REV --> CH --> EM --> FI
FI --> BUS --> LLM --> RESP
BUS --> EVI
O diagrama pode ser ampliado em tela inteira pelo botão no canto superior direito.
Flask, templates HTML, organização de processos, documentos, chat e análises.
SQLAlchemy para processos, documentos, chunks, conversas, feedback e histórico.
Embeddings, similaridade de cosseno, FAISSFacebook AI Similarity Search: biblioteca para busca ultra veloz de vetores semelhantes.[4] e modelo de linguagem com contexto.
pypdf, python-docx, OCR local, OCR por visão e importação de conteúdo web.
RAGRetrieval-Augmented Generation: arquitetura que recupera informações externas e as fornece como contexto para um modelo generativo.[1] combina recuperação de informação e geração de linguagem. No JurisRAG, a pergunta é convertida em vetor, comparada aos vetores dos trechos do processo e usada para selecionar o contexto que será enviado ao modelo.
Extrair e limpar o texto, mantendo números, datas, nomes e estrutura jurídica.
Dividir documentos em chunks ordenados, com sobreposição (*overlap*) para reduzir perda de contexto.
Gerar embeddings para aproximar semanticamente perguntas e trechos, mesmo sem coincidência literal.
Buscar no FAISS ou calcular similaridade de cossenoMedida trigonométrica de proximidade espacial entre vetores.[7] diretamente quando existe filtro por documentos.
Gerar a análise usando o contexto selecionado e exibir os trechos que sustentaram a resposta.
def chunk_text(texto, limite=4000, overlap=400): paragrafos = normalizar(texto) chunks, atual = [], [] for paragrafo in paragrafos: if tamanho(atual, paragrafo) <= limite: atual.append(paragrafo) else: # Salva o chunk e preserva o rastro para o próximo chunks.append(" ".join(atual)) cauda = atual[-1] if overlap else "" atual = [cauda, paragrafo] return chunks
# Converte pergunta em vetor matemático vetor_pergunta = embedding(pergunta) vetor_pergunta = normalizar(vetor_pergunta) # Busca os IDs dos chunks mais próximos na base de evidências scores, ids = indice_faiss.search( vetor_pergunta.reshape(1, -1), quantidade_de_candidatos_top_k ) contexto = recuperar_chunks(ids) # Gera a resposta limitada apenas ao contexto recuperado resposta = modelo.chat( pergunta=pergunta, contexto=contexto, temperatura=0 )
A implementação alterna entre índice FAISS, adequado à consulta global, e cálculo exato no banco quando o usuário limita o escopo a documentos específicos. Depois da similaridade semântica, aplica regras de reordenaçãoAjuste algorítmico da posição dos resultados após a busca inicial para refletir regras de prioridade.[8] para priorizar textos revisados manualmente, documentos do processo e trechos associados a eventos decisivos. Também inclui o início e o final dos documentos para preservar identificação, datas e decisões finais. Essa estratégia melhora a cobertura, mas deve ser avaliada experimentalmente para verificar se os pesos introduzem vieses indesejados.
Processos contêm PDFs digitais, digitalizações, fotografias, documentos editáveis e textos obtidos na web. O JurisRAG mantém uma área de preparação na qual o conteúdo pode ser extraído, revisado e corrigido antes de entrar na base restrita do processo.
Acomoda estruturalmente PDF, DOCX, TXT, Markdown, CSV, imagens nativas e conteúdo raspado diretamente por URL.
Extração nativa veloz e *fallbacks* locais com Tesseract/EasyOCR, suportando ainda opções profundas de visão computacional em caso de rasuras.
Módulo editor em interface permite corrigir o texto extraído visualmente da imagem antes de adicionar e indexar o documento nos vetores do processo.
Aferição de integridade via *Hash* do conteúdo auxilia na identificação rápida de documentos repetidos no acervo.
Documentos podem ser classificados por origem ou posição processual para apoiar filtragens e análises cruzadas posteriores no RAG.
Alterações no corpo do texto podem gerar proativamente novos *chunks*, recálculo de *embeddings* e reconstrução silenciosa do índice vetorial afetado.
O sistema utiliza a mesma base documental para responder perguntas sobre o processo e para confrontar um rascunho jurídico com as peças e evidências selecionadas.
O profissional formula uma pergunta, define quantos trechos (Top KQuantidade de trechos mais relevantes a serem selecionados da base para compor o contexto da IA.[6]) deseja recuperar e pode restringir o escopo a determinados documentos. O histórico é preservado para manter continuidade.
O usuário informa sua posição — autor, réu, ministério público ou juízo — e submete um rascunho de defesa ou fundamentação. A IA confronta o texto com documentos classificados no processo e produz uma leitura estratégica.
| Camada Sistêmica | Tipo de Entrada | Lógica de Processamento | Saída Controlada e Verificável |
|---|---|---|---|
| Documental | Arquivos mistos e URLs públicas | Extração direta, varredura OCR e revisão nativa | Corpus de texto limpo e plenamente rastreável |
| Semântica | Texto limpo e geometricamente segmentado | Aproximação de Embeddings e cálculos no índice FAISS | Trechos (Chunks) ordenados cirurgicamente por relevância |
| Generativa | Pergunta humana + pacote de contexto enxuto | Processamento em modelo de linguagem (LLMs) | Resposta coerente e intimamente vinculada às evidências |
| Supervisão | Leitura analítica e feedback na interface | Revisão estrita feita pelo profissional jurista humano | Aceitação do parecer, edição corretiva ou rejeição frontal |
O modelo relacional separa e vincula o arquivo original, os trechos textuais utilizados na busca vetorial, o histórico conversacional da sessão e as análises de peças ativas. Isso permite relacionar fisicamente e juridicamente qualquer resposta às suas exatas unidades documentais originárias.
erDiagram
PROCESSO ||--o{ DOCUMENTO : possui
PROCESSO ||--o{ CHUNK : indexa
DOCUMENTO ||--o{ CHUNK : origina
PROCESSO ||--o{ CHAT_TURN : registra
PROCESSO ||--o{ ANALISE_PECA : produz
PROCESSO ||--o{ PARTE : relaciona
ACERVO_DOCUMENTO ||--o{ PROCESSO_ACERVO : reutiliza
PROCESSO ||--o{ PROCESSO_ACERVO : seleciona
PROCESSO {
int id PK
string numero_processo
string nome_processo
text bloco_inicial
}
DOCUMENTO {
int id PK
int processo_id FK
string origem
string classificacao
string conteudo_hash
}
CHUNK {
int id PK
int documento_id FK
int chunk_ordem
int page_num
text embedding
}
CHAT_TURN {
int id PK
string role
int feedback
text citations
}
ANALISE_PECA {
int id PK
string user_role
text peca_texto
text analise_resultado
}
O JurisRAG situa-se na complexa interseção entre Inteligência Artificial, Recuperação de Informação, Processamento de Linguagem Natural, Engenharia de Software e a Ciência do Direito.
O problema científico não se resume a avaliar metodologicamente se um modelo “responde bem e com eloquência”. É imperativo auditar e investigar toda a cadeia analítica: qualidade crua da malha de OCR, estratégia métrica de segmentação espacial, precisão de desempenho da recuperação no FAISS, fidelidade da resposta final atrelada à evidência extraída, efeito prático da ordem cronológica e a capacidade psicológica e de interface de o profissional detectar os inevitáveis erros do sistema.
Por ser um sistema arquitetural funcional isolado, ele detém tração para atuar como plataforma de laboratório experimental para comparar *LLMs*, geração de embeddings de terceira geração, mensuração dos impactos por variação de tamanhos de *chunks*, atestar a validade de métodos agressivos de reordenação (Reranking) e formatar rígidos protocolos de supervisão humana em bases de documentos jurídicos reais devidamente protegidos, sanitizados ou anonimizados na origem.
A fixação sistemática do modelo via recuperação de RAG impõe um rebaixamento estatístico direto no *output* de respostas alucinadas e de formulações jurídicas vagas provindas dos parâmetros soltos do LLM original (Zero-Shot base).
A inserção formal de marcações heurísticas, metadados cronológicos, ordenação alfanumérica e categorização de tipagem documental elevam consideravelmente a resolução final do contexto fornecido na estruturação jurídica e identificação estrita de fases supervenientes.
A apresentação nativa contígua interligando as evidências, metadados com as referências, score semântico de similaridade e a leitura de trechos subverte o ceticismo inicial perante a máquina, reduzindo empiricamente as iterações e a contagem cronométrica de dupla conferência na supervisão procedimental do perito jurídico encarregado.
O mapeamento honesto de restrições algorítmicas, sistêmicas e procedimentais blinda a robustez metodológica do pipeline. O entendimento do estágio experimental pavimenta organicamente a pauta evolutiva.
Na práxis judiciária e normativa civil, uma conclusão artificial tecnicamente irrepreensível, gramaticalmente eloquente e sistemicamente coerente com o arcabouço isolado do modelo processado pode transmutar-se fatalmente em um veredito juridicamente corrompido, superado ou fatal para o constituinte em questão de dias. A implantação proba de tecnologias RAG em despachos, sentenças ou recursos de alto impacto veta peremptoriamente o acionamento unilateral cego dos *outputs* da máquina. A arquitetura condiciona sua finalidade instrumental subsidiária ao acesso contínuo às matrizes originárias nativas por parte do perito humano da corporação legal. Prescreve inquestionavelmente a contraposição metodológica perante os achados parciais recuperados contra a integridade estrita das vigências dogmáticas, legais e preceitos jurisprudenciais atuais do Superior Tribunal competente, com transferência irredutível e inexorável da imputabilidade legal, decisória e deontológica para os ombros da assinatura profissional habilitada que manuseia o sistema laboratorial.
A fundamentação analítica e o fluxo estrito processual legal atrelado, a infraestrutura sistêmica relacional persistida, a implementação primária de rotinas heterogêneas pesadas de captura digital (Engine *OCR* Multi-Camadas), assim como a concepção profunda e a tessitura de todo arcabouço computacional vetorial (Indexador FAISS, Extração em Similaridade e Injeção Contextual via *Prompt Engineering*) integram um projeto singular erigido exaustivamente por Wilmar Borges Leal Junior em arquitetura própria. O modelo tangível no *JurisRAG* ratifica pragmaticamente a sua expertise simbiótica transversal calcada profundamente nas fronteiras do Direito Público Administrativo, nos contornos práticos em Ciência da Computação, Engenharia Robusta de Dados e nos ecossistemas pragmáticos atrelados às subjacências da modelagem baseada em algoritmos matemáticos gerativos voltados a uma efetiva e comprovável legalidade procedimental (*State-of-the-Art* Aplicada à LegalTech e à Gestão Governamental).
Mestre em Modelagem Computacional de Sistemas
Professor do IFTO
Advogado — OAB/TO 11.673
Tecnologia e Inovação — AGU