Este repositório foi criado nesse vídeo e rodando 100% local, com foco em arquitetura, dados e decisões de design, não apenas em frameworks.
A ideia é mostrar como uma aplicação RAG funciona de ponta a ponta:
- Ingestão de documentos
- Busca semântica
- Uso de contexto
- Geração de respostas com LLM local
A documentação de referência pode ser encontrada aqui.
No vídeo, a construção da aplicação segue esta ordem:
- Arquitetura e componentes
- Fluxo de dados
- Implementação prática
- Discussão dos modos de funcionamento do RAG (restrito vs híbrido)
O código aqui serve como apoio ao raciocínio arquitetural apresentado.
O repositório possui duas versões principais:
Versão inicial para acompanhar o vídeo passo a passo, contendo:
- Estrutura de pastas
- Arquivos Python vazios ou com TODOs
- Dependências definidas
👉 Ideal para quem quer construir junto.
Versão final com a aplicação totalmente funcional, contendo:
- Ingestão de documentos
- Banco vetorial
- API de perguntas
- Exemplos de documentos
👉 Ideal como referência ou para quem quer testar direto.
rag-local/
├── app/
│ ├── main.py # API (FastAPI)
│ ├── ingest.py # Ingestão e indexação
│ └── rag.py # Lógica de RAG
├── data/
│ └── docs/ # Documentos de exemplo (PDF, txt, md)
├── chroma/ # Banco vetorial (gerado localmente)
├── requirements.txt
└── README.md
- Python 3.10+
- Git
- Ollama instalado e rodando localmente:
# Instruções para MAC
brew install ollama
ollama serve- Modelos instalados
ollama pull mistral
ollama pull nomic-embed-text- LLM local: mistral
- Embeddings: nomic-embed-text
Os modelos são gerenciados pelo Ollama.
- Clonar o repositório na branch initial
git clone https://github.com/ -b initial
cd rag-local-demo
- Criar ambiente virtual
python3 -m venv .venv
source .venv/bin/activate
- Instalar dependências
pip install -r requirements.txt
- Rodar a ingestão
python app/ingest.py
- Subir a API
uvicorn app.main:app --reload
- Fazer uma pergunta
curl -X POST http://localhost:8000/pergunta \
-H "Content-Type: application/json" \
-d '{"question": "O que é arquitetura de dados?"}'
- O LLM não acessa dados diretamente
- Todo acesso a documentos passa pelo banco vetorial
- O comportamento do RAG depende das decisões arquiteturais
- Frameworks são substituíveis, o raciocínio não
Este projeto não é um produto pronto, mas um exemplo didático para discutir:
- Arquitetura de IA
- Governança
- Trade-offs de uso de LLMs
- RAG em ambientes controlados
Uso educacional e demonstrativo.