Esta página tem como objetivo apresentar a arquitetura utilizada na aplicação por meio de um diagrama e explicação das decisões tomadas durante o desenvolvimento. A arquitetura foi projetada utilizando apenas técnicas ensinadas na disciplina, sem recorrer a modelos que abstraem todo o processamento de linguagem natural.
A aplicação é dividida em duas partes principais: o cliente, responsável pela interação com o usuário, e o servidor, que gerencia a lógica e a comunicação com a base de dados.
A decisão foi tomada para que o reconhecimento de voz ocorra no lado do cliente, minimizando o tráfego de dados para o servidor. A comunicação entre cliente e servidor é feita via requisições HTTP utilizando JSON.
O banco de dados foi populado previamente com leis e regulamentos por meio de um processo de seeding. Isso inclui a vetorização dos dados e seu armazenamento em um banco de dados vetorial, permitindo buscas eficientes por similaridade.
Esse modelo de armazenamento evita a necessidade de processamento intenso a cada requisição, tornando as consultas mais ágeis e eficientes.
O servidor é responsável pelo processamento e manipulação dos dados. O fluxo de execução inclui: