Executando verificação de segurança...
3

SQLite + JSON + Agentes de IA: Transformando propostas de engenharia em dados estruturados

Fala, devs e devas!
Trago mais uma experiência daquelas de "quem precisa resolver o problema da empresa com o que tem na mão". Dessa vez, misturei SQLite, C# e Agentes de IA.

O Problema

Há muito tempo venho matutando como facilitar a vida dos engenheiros aqui da empresa. Propostas técnicas de plantas industriais são documentos semiestruturados em Word. A dor é antiga: o conhecimento fica "preso" na cabeça de quem fez a proposta. Se um engenheiro novo chega ou alguém precisa de uma referência de um projeto que nunca fez, tem que sair perguntando para todo mundo.
Sempre me questionei: como transformar esse monte de Word em uma base de dados consultável?

A Solução que montei

Criei um fluxo de agentes que funciona mais ou menos assim:
Extração: Um agente lê o conteúdo da proposta (hoje converto o Word para .txt manualmente) e gera um JSON estruturado.
Armazenamento: Insiro esse JSON direto em uma coluna TEXT do SQLite. Foi aqui que descobri o poder das funções json_extract, json_each e json_tree. Dá para fazer consultas complexas dentro do JSON sem precisar de um banco NoSQL dedicado.
Query Builder: Um agente recebe o schema do JSON e a intenção do usuário (ex: "Quero propostas com motores de 150 a 200kW"). Ele monta a query SQL.
Executor: O agente "Execute Query" tem uma tool que conecta no banco, roda a query e devolve o resultado formatado para o usuário, com número da proposta, cliente e detalhes técnicos.

A Stack

No backend, estou usando C# com o Microsoft Agent Framework (MAF). Comecei com o Semantic Kernel, mas o MAF me ganhou porque lembra muito a lógica de nós do n8n para criar o fluxo sequencial dos agentes e também é uma evolucao do Semantic Kernel e do AutoGen. Para o banco, sigo no padrão Repository com Dapper.
No frontend, usei Vue. Foi minha primeira experiência integrando o ASP.NET Core com um framework JS moderno, e a experiência foi bem fluida.

Próximos Passos e Dúvidas

Nessa jornada, descobri que o SQLite tem extensões incríveis, como a de Full Text Search (FTS) e até para busca vetorial (RAG).
Minha ideia agora é automatizar a conversão Word -> TXT, mas queria ouvir de vocês:
Alguém aqui já usou o Full Text Search do SQLite em produção? Vale a pena?
Para esse cenário de documentos técnicos, vocês acham que o RAG (Busca Vetorial) performaria melhor do que essa extração de JSON que estou fazendo?
Em breve: Repositório e Guia de Estruturação
Vou preparar um repositório no GitHub com a estrutura dos códigos e, principalmente, os system prompts que usei nos agentes.
Como usei dados reais da empresa e não quero ser pego pelo TI por compartilhar informação sensível 😬😬😬, vou subir o repo com arquivos de exemplo genéricos. Vai servir como um guia de como estruturar esse fluxo, até porque usei bastante vibecoding para chegar nessa solução e o resultado ficou bem interessante.
Qualquer feedback, crítica ou sugestão é ouro. Valeu demais quem leu até aqui!

Carregando publicação patrocinada...
2
1

Para essa questão de RAG eu precisaria colocar um novo componente na minha aplicação que faria os chunck com os embedings e salvaria no banco é isso??
E na hora da resposta o agente faria o embeding da pergunta e encontraria o chunck que mais se aproxima?? Fazendo assim não precisaria estruturar a proposta em JSON deixaria o texto completo da proposta??? Não fiz nada com RAG ainda.

Não conhecia o DuckDB vou dar uma estudada e testar já que também é um banco de dados embedded, assim como o SQLite eu conseguria rodar aqui sem precisar de infra do TI.

1
2

Cara não sei quantos arquivos word vc tem mas eu sugiro vc migrar do SQLite para o MySQL que tem uma ótima cobertura para JSON ou ir para o PostgreSQL logo, assim vc consegue uma performance gigantesca para trabalhar com JSON e fazer relacionamentos. Na minha empresa atual trabalho com um comportamento semelhante a este que vc tem e o SQLite tem muita limitação até o MySQL tem mas vc só vai sofrer caso tem mais de 4 milhões de registros

1

Por enquanto não tenho tantos registros, comecei com o SQLite por ser mais facil executar e não precisar de um servidor, pois, para isso o TI pede até assinatura do Papa. Se eu conseguir convencer meu diretor que o projeto é bom, ai ele consegue com o TI depois 😬.

0

Eu criei o repositorio com um README.md explicando o fluxo e os system prompts que usei, alterei o produto para motor eletrico para não expor coisas aqui da empresa.
com isso eu entendi que o prompt é muito importante quando usamos agentes, inclusive system prompts "dinamicos" onde o prompt é complementado com algo bem especifico de acordo com uma condição.
segue o repo:
https://github.com/edsonlcandido/sqlite-json-agentes