Um sistema de Inteligência Artificial (RAG - Retrieval-Augmented Generation) focado em atuar como um Engenheiro de Dados Sênior especialista em Apache Airflow. O agente é capaz de ler a documentação oficial, buscar contextos técnicos específicos usando um banco de dados vetorial e responder perguntas complexas com fontes rastreáveis.
O projeto foi construído seguindo as melhores práticas de Engenharia de Dados e separação de responsabilidades (Separation of Concerns), dividido em duas fases principais:
- WebDiscovery & DocsExtractor: Crawlers customizados usando
BeautifulSouppara navegar e extrair o conteúdo da documentação oficial do Apache Airflow em formato Markdown limpo. - Semantic Chunking: Processamento de texto usando
langchain-text-splitters(MarkdownHeaderTextSplitter), garantindo que blocos de código e hierarquia de títulos sejam preservados como metadados. - Vector Indexing: Geração de embeddings localmente (zero-cost) usando a biblioteca
FastEmbed(modeloBAAI/bge-small-en-v1.5) e armazenamento no banco de dados vetorial Qdrant rodando embedded/local.
- Ferramentas (Tools): Uma classe de busca construída sobre o Qdrant que formata os blocos de texto mais relevantes e inclui a URL de origem.
- Orquestração (Core): Integração com a API do OpenRouter para utilizar modelos como cérebro do agente.
- Observabilidade: Sistema de logs estruturados implementado para monitorar os contextos exatos recuperados do banco vetorial antes de serem enviados ao LLM, permitindo auditoria de "alucinações" e falhas de recuperação.
├── data/
│ ├── raw/ # Páginas originais em Markdown
│ ├── processed/ # Chunks semânticos em JSON
│ └── qdrant_db/ # Banco de dados vetorial local (RocksDB/SQLite)
├── src/
│ ├── ingestion/ # Módulos de extração, chunking e indexação
│ └── agent/ # Lógica do LLM e ferramentas de busca
├── rag_agent.log # Logs de execução e monitoramento do agente
├── run_extraction_pipeline.py # Script de execução do pipeline
├── run_chunking.py # Script de execução do chunking
├── main.py # Interface interativa de chat no terminal
├── requirements.txt # Dependências do projeto
└── .env # Variáveis de ambiente (ex: OPENROUTER_API_KEY)
Clone o repositório e instale as dependências:
pip install -r requirements.txtCrie um arquivo .env na raiz do projeto e insira sua chave do OpenRouter (ou da OpenAI, bastando alterar a base_url no código):
OPENROUTER_API_KEY=sua_chave_aqui(Nota: Pule esta etapa se o banco de dados data/qdrant_db já estiver populado)
Para baixar a documentação, fatiar e gerar os embeddings localmente:
python run_extraction_pipeline.pypython run_chunking.pypython src/ingestion/indexer.pyPara abrir a interface de chat no terminal e conversar com o especialista em Airflow:
python main.py