Skip to content

BruRdgz/llm

Repository files navigation

🧠 Modelo de IA Generativa baseada em Markov Chaining + Word Embedding

"Um Markov meio burrinho, mas inteligente?."

Este projeto nasceu como uma brincadeira para gerar textos em uma comunidade digital da qual participo — mas acabou crescendo, ganhando corpo, e agora virou também um experimento acadêmico (e talvez até um TCC 🧪). A ideia aqui é simples: combinar a simplicidade das cadeias de Markov com a inteligência dos embeddings para gerar frases com um toque mais natural e coerente.


⚠️ Aviso

🚧 Este projeto está em desenvolvimento.

  • Este projeto foi criado ao longo de cinco dias, com o intuito de desenvolver um modelo de geração textual baseado em Markov para uma comunidade digital da qual faço parte — puramente por diversão.
  • O código definitivamente não está otimizado, pode conter erros conceituais gravíssimos ou bugs silenciosos que eu não percebi ainda.
  • Provavelmente contém escolhas questionáveis, fruto da minha inexperiência com IA / ML / NLP.
  • Use por sua conta e risco — e se encontrar algo quebrado, abre uma issue ou só manda um salve.

🛠️ Sobre o Projeto

Esse modelo tenta gerar frases de forma mais "inteligente" do que uma Markov tradicional: ele combina a estatística da cadeia de transições com similaridade semântica baseada em embeddings (word2vec).

A geração acontece palavra por palavra, priorizando tokens que:

  1. Têm alta probabilidade na cadeia de Markov, e
  2. Estão semanticamente próximos do vetor acumulado da frase até o momento.

Em outras palavras: ele escolhe palavras que fazem sentido estatisticamente, mas também soam certas de acordo com o contexto construído.

🔍 O que tem aqui:

  • Cadeia de Markov com controle de n-gramas
  • Vetorização de tokens via pgvector + modelo de embeddings
  • Algoritmo de geração híbrido: frequência + semântica
  • Visualização passo a passo (debug log estilo test.py)
  • Banco de dados via SQLAlchemy + Alembic
  • Estrutura pronta pra extensões e benchmarks

🔧 Instalação manual (modo dev)

# Clone o repositório
git clone https://github.com/BruRdgz/llm.git
cd llm

# Instale as dependências
pdm install

🗄️ Setup do banco

Você pode usar Docker ou configurar localmente.

Usando Docker:

docker-compose up -d

Banco local (PostgreSQL + pgvector):

Crie um banco com a extensão pgvector e atualize o .env (ou hardcode se preferir). Depois:

alembic upgrade head

🧪 Treinar e testar

Para treinar com seu próprio dataset:

python train.py

Para gerar uma frase:

python test.py

A geração vai printar o processo passo a passo, mostrando scores e decisões do modelo. Útil pra entender como ele pensa.


📁 Estrutura do projeto

.
├── model/              # Lógica principal do modelo
│   ├── tokenization.py
│   ├── vectorization.py
│   ├── interface/      # Geração e inserção
│   └── database/       # ORM e sessão
├── train.py            # Script para treinar o modelo
├── test.py             # Script para gerar texto (com debug)
├── alembic/            # Migrações de banco
├── docker-compose.yml  # Banco local via Docker
├── Makefile
├── pyproject.toml      # Config do projeto (via PDM)
└── README.md

📌 Status atual

  • Protótipo funcional
  • Geração com logs interpretáveis
  • Banco estruturado com ORM
  • Interface web / API (futuramente?)
  • Testes unitários formais
  • Benchmarking com datasets maiores

🙋‍♂️ Por que isso existe?

Porque eu queria ver até onde dava pra ir com um modelo simples, interpretável, e que ainda assim gerasse linguagem natural com um toque de "sentido".

E porque é divertido ver um Markov começar a fazer frases tipo:

"10 centímetros de espessura fabricado e polido nos Estados Unidos o percentual de investimentos em inovação variam segundo o porte da empresa e setor de atividade"

Sim. Isso saiu do modelo. Do jeitinho que tá. 😄


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published