Metodologia · discursos

Discursos & IA

O corpus de discursos do plenário, a busca por sentido, a classificação por tema e o assistente de IA.

O que você vê na busca de discursos

O plenário é também um microfone. O Cadeira Vazia ingere os discursos proferidos na Câmara e os torna pesquisáveis por sentido — não só por palavra exata, mas por ideia. Isso aparece em:

Esta página explica como o corpus é montado, como a busca encontra por sentido, e como os temas são classificados.

O corpus: só os discursos substantivos

Nem todo discurso é conteúdo. Boa parte do que a API entrega é processual — “Sr. Presidente, peço a palavra pela ordem…”, “encaminho o voto do meu partido…”. Esse ruído atrapalha uma busca por sentido.

Por isso o corpus indexável é filtrado aos discursos substantivos — os ligados ao debate e à decisão legislativa (Discussão, Encaminhamento de Votação, Como Líder, etc.). São cerca de 7,3 mil discursos de conteúdo real, separados das dezenas de milhares de falas processuais. A unidade é honesta: 1 documento = uma fala coesa de um orador, com seu autor, partido e data.

Como a busca encontra por sentido

A busca combina dois mecanismos, porque cada um acha o que o outro perde:

Os dois resultados são fundidos por Reciprocal Rank Fusion — cada documento ganha pontos pelo inverso da sua posição em cada ranking (1/(k + posição), com k=60), e a soma define o ranking final. É o método padrão da área para combinar rankings heterogêneos sem precisar calibrar pesos arbitrários. O resultado é mais robusto do que qualquer um isolado.

Detalhes que importam para a qualidade da busca por palavra-chave: removemos stopwords (de, a, o, que…) só no BM25 (no vetorial não — o modelo lida com elas); buscar entre aspas trata a frase como bloco exato; e o grifo dos termos no resultado é insensível a acento (você digita “saude”, ele grifa “saúde”).

Onde o cálculo roda

A busca é soberana: o índice é servido como arquivo do nosso object storage (R2), e a comparação roda no seu próprio navegador — nada é enviado a um servidor de busca de terceiros. O índice é enxuto por desenho: os vetores são guardados em meia-precisão (float16), com 512 dimensões (suficiente para busca; metade do tamanho de 1.024), e o texto completo não vai no índice — só um trecho, recortado ao redor do termo casado.

A única exceção técnica: transformar a sua pergunta em vetor exige um modelo de linguagem, então a consulta passa por uma função de borda leve (a chave da API fica no servidor, nunca exposta no navegador). Essa função também tem um reranker opcional — um segundo modelo que relê os melhores candidatos junto com a pergunta e refina a ordem (precisão fina sobre o recall rápido do embedding). Se a função falhar, a busca degrada graciosamente para o modo palavra-chave (que roda 100% no navegador, custo zero) — continua funcionando.

A classificação por tema

Cada discurso recebe um ou mais temas do vocabulário oficial do CEDI (Centro de Documentação e Informação da Câmara) — saúde, segurança, meio ambiente, etc. É a mesma taxonomia que a Câmara usa para indexar proposições, agora aplicada às falas.

A classificação usa um método deliberado, e vale explicar por que ele é melhor que a alternativa ingênua:

A primeira ideia seria comparar o vetor do discurso com o vetor de cada tema (similaridade de cosseno). Isso foi testado e reprovado — o cosseno tropeçava no ruído processual e errava o tema. A solução: pedir a um modelo de linguagem (Qwen-Plus) que leia o discurso e responda qual tema, devolvendo uma única letra (cada um dos 30 temas = uma letra). E aproveitamos os logprobs do modelo — a probabilidade real que ele atribui a cada tema candidato (os 5 mais prováveis), não um palpite inventado. O LLM lê através do ruído (“encaminhou a votação do requerimento…”) até o tema da proposição, que o cosseno não conseguia alcançar.

O resultado é uma distribuição honesta de temas por discurso, com a probabilidade calibrada de cada um. O painel de temas usa o tema dominante de cada fala (o mais provável) — intuitivo para “N discursos sobre X” — enquanto a distribuição completa fica disponível para análises que precisam de nuance.

O assistente de IA — com a sua própria chave

A busca tem um assistente de IA: você pergunta em linguagem natural (“o que falaram sobre reforma tributária?”) e ele lê os discursos relevantes e responde citando as fontes — cada afirmação ligada à fala que a sustenta.

A decisão de desenho importa: o assistente usa a sua própria chave de API (bring your own key). Você cola a chave uma vez (do seu provedor de IA), ela fica só no seu navegador, e o custo da conversa é seu — não nosso, e não de mais ninguém. Isso mantém o recurso gratuito e sustentável para o projeto, e dá a você controle total. A conversa é efêmera (não guardamos nada).

Limites honestos

Linkagem