Pular para o conteúdo
Todos os artigos
  • IA
  • NLP
  • Busca

Por que a busca por palavras-chave falha em decisões de tribunal, e o que a busca semântica muda

Como o ChatDoc permite que a equipe de um tribunal de contas busque decisões e normas em linguagem natural, e o que a busca semântica precisa para ser confiável.

AL

Por

3 min de leitura

Read in English
Mãos enluvadas manuseando um livro histórico manuscrito sobre uma mesa branca
Capa: Livro Histórico de Posse Presidencial, Agência Senado, CC BY 2.0, via Wikimedia Commons

O problema: você não sabe as palavras que o documento usa

O Tribunal de Contas dos Municípios de Goiás (TCM-GO) guarda um grande acervo de decisões, acórdãos e normas internas. Quem já buscou em um acervo assim conhece o problema. Você sabe o que procura, mas o documento diz de outro jeito, então a busca por palavras-chave não retorna nada, ou retorna centenas de resultados na ordem errada.

O ChatDoc é a ferramenta em que trabalhei para resolver isso. Ele permite que a equipe da instituição faça buscas semânticas em decisões e normas usando linguagem natural. Atuei em um time em parceria com o CEIA/UFG, passando por frontend, backend, arquitetura, machine learning e ciência de dados, e o projeto foi apresentado publicamente no AI.Brasil Experience.

Busca por palavras-chave versus busca semântica

A busca por palavras-chave pergunta: quais documentos contêm estes termos? A busca semântica pergunta: quais trechos significam algo próximo desta pergunta?

O jeito usual de fazer a segunda é com embeddings. Um modelo transforma cada trecho em um vetor de números, de modo que trechos de significado parecido fiquem próximos. A pergunta vira um vetor da mesma forma, e o sistema devolve os trechos mais próximos.

import numpy as np
 
def cosine_similarity(a: np.ndarray, b: np.ndarray) -> float:
    return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))
 
def top_passages(question_vec, passage_vecs, k=5):
    scores = [cosine_similarity(question_vec, p) for p in passage_vecs]
    return sorted(range(len(scores)), key=scores.__getitem__, reverse=True)[:k]

O trecho é ilustrativo. Um sistema real adiciona um índice para ganhar velocidade, divide documentos longos em trechos e filtra por metadados como tipo de documento ou data. A ideia por baixo é a mesma.

Torná-lo confiável, não só rápido

Para uma instituição pública, uma resposta que não pode ser conferida é um risco. Alguns princípios que eu aplicaria a qualquer ferramenta de busca sobre documentos oficiais:

  • Mostre sempre a fonte. Devolva o trecho e o documento de onde veio, para que a pessoa leia o texto original em vez de confiar em uma paráfrase.
  • Divida os documentos pela estrutura natural. Decisões e normas têm artigos, seções e itens numerados. Cortar os trechos por essa estrutura mantém cada resultado autocontido.
  • Combine significado com termos exatos. Texto jurídico é cheio de identificadores: números de processo, de artigo, nomes. Quem busca isso quer correspondência exata, então os melhores sistemas mantêm a busca por termos ao lado da semântica.
  • Avalie com perguntas reais. Reúna as perguntas que a equipe de fato faz, registre qual trecho responde a cada uma e meça se o sistema o encontra. É a única forma honesta de comparar mudanças.

O que muda para quem usa

A mudança é sutil, mas real. Em vez de adivinhar o vocabulário do documento, a pessoa pode perguntar do jeito que perguntaria a um colega. Para o tribunal, isso significa menos tempo perdido caçando o trecho certo e uma barreira menor para quem não é especialista em como os documentos são redigidos.

Também explorei o ChatDoc junto com o GAIA, um modelo de linguagem em português brasileiro, como registrado no estudo de caso.

Referências

Compartilhar
AL

Escrito por Adriano Leão

Sou engenheiro de software em Goiânia e construo sistemas de backend e IA. Estas notas vêm dos sistemas que entreguei: coarquitetar o GuaIA, escalar o Como Votam e levar o MusicPlayce Hub do zero a usuários reais.

Vamos conversar

O projeto por trás deste artigo

ChatDoc

Continue lendo

Slide de apresentação perguntando se o vídeo de dois homens uniformizados é real ou falso
IAArquiteturaBackend

Quatro tipos de conteúdo, uma resposta: como desenhar um detector multimodal de desinformação

Princípios de design para um sistema que analisa texto, imagem, vídeo e áudio sob um orçamento de latência: contratos, paralelismo, evidências e revisão humana.

3 min de leitura
Mascote da urna eletrônica brasileira ao lado de uma urna e de um slide projetado
IADesinformaçãoArquitetura

GuaIA: como uma IA multimodal enfrentou a desinformação eleitoral no Brasil

Como o GuaIA, plataforma do TRE-GO e da UFG que levou o 1º lugar no FastLabs 2025 do CNJ, analisa texto, imagem, vídeo e áudio em menos de 4 segundos.

3 min de leitura