Projeto para responder perguntas com base no conteúdo de arquivos PDF usando:
- Extração de texto de PDFs
- Quebra em trechos (chunks)
- Geração de embeddings
- Indexação e busca vetorial (FAISS)
- Interface de chat (Streamlit)
inputs/: sentenças exigidas pela DIOpdfs/: PDFs para indexaçãosrc/: scripts de indexação e app do chatbotvectorstore/: índice FAISS + metadados (gerado)
Neste exemplo 5 pdfs de artigos sobre o Algoritmo de Djikstra foram utilizados: 3 deles em português e 2 em espanhol.
Outros PDFs podem ser utilizados no lugar dos que foram consumidos neste exemplo.
Rodei todo o processo no meu computador, em localhost. É a primeira vez que faço RAG. O streamlit run conseguiu abrir o localhost mesmo sem vectorstore, mas o app parava de rodar quando tentava carregar vectorstore/index.faiss e vectorstore/chunks.json. Desconfiei da versão de Python utilizada, mas mantive a mais atual disponível, não troquei. O vectorstore/ ficava vazio porque a indexação não terminava (o VS Code sugeria MemoryError). Pesquisei como solucionar. A causa mais comum é: PDFs grandes + chunking ingênuo + embeddings em lote grande. Então substituí meu "src/indexar_pdfs.py" por uma versão incremental:
- para limitar chunks por PDF,
- limitar tamanho total de texto por PDF,
- e adicionar FAISS em lotes e salvar o chunks.json no final sem estourar RAM. Depois indexei PDFs e conferi o Vectorstore. Rodei o Streamlit. Deu certo.
- Criar ambiente e instalar dependências
python -m venv .venv
source .venv/Scripts/activate
pip install -r requirements.txt









