Skip to content

keila-k/chatbot-pdf-rag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chatbot baseado em PDFs (RAG) — Embeddings + Busca Vetorial

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)

Estrutura

  • inputs/: sentenças exigidas pela DIO
  • pdfs/: PDFs para indexação
  • src/: scripts de indexação e app do chatbot
  • vectorstore/: índice FAISS + metadados (gerado)

Prints do Projeto

Indexação dos PDFs

VS Code terminal showing PDF indexing initialization with project folder structure and Python virtual environment activated Streamlit Run Criação do ReadMe

Chat (Streamlit)

Indexar PDF Streamlit Run

Localhost

Abriu o Localhost com erro Abriu o Localhost corretamente

Evidências adicionais

A pergunta do Exemplo Parte da Resposta Zoom out na Resposta

Explicação dos Prints

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.

Mini-Relatório. Meus cometários específicos [em 2026-02-18].

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.

Como rodar

  1. Criar ambiente e instalar dependências
python -m venv .venv
source .venv/Scripts/activate
pip install -r requirements.txt

About

Chatbot baseado em PDFs usando RAG (embeddings + busca vetorial). Pipeline reprodutível: extração de texto (pypdf) → chunking → embeddings (sentence-transformers/all-MiniLM-L6-v2) → indexação e busca top‑k com FAISS → interface interativa em Streamlit para perguntas e respostas fundamentadas nos documentos. Inclui README c/prints+5 exemplos(PT/ES).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages