Este projeto implementa um sistema de Chatbot de Perguntas e Respostas baseado em documentos (PDFs) utilizando a arquitetura RAG (Retrieval-Augmented Generation).
Ele usa a biblioteca LangChain para orquestração, HuggingFace Embeddings (Sentence Transformers) para vetorização local, ChromaDB como Vector Store e a AIMLAPI para o Large Language Model (LLM).
- RAG com Documentos Locais: Carrega PDFs da pasta
./basee utiliza o conteúdo para gerar respostas informadas. - Embeddings Locais: Utiliza o modelo
sentence-transformers/all-MiniLM-L6-v2para criar a base vetorial localmente, sem depender de APIs para embeddings. - Vector Store Persistente: Armazena os vetores no banco de dados local ChromaDB (pasta
./db_google) para reuso. - Integração com AIMLAPI: Utiliza a AIMLAPI e o modelo
mistralai/Mistral-7B-Instruct-v0.2para o processamento da linguagem e geração da resposta.
| Componente | Tecnologia | Uso Específico |
|---|---|---|
| Orquestração | LangChain |
Criação da cadeia RAG (RetrievalQA). |
| Embeddings | HuggingFaceEmbeddings (Local) |
Modelo all-MiniLM-L6-v2 para criar vetores de documentos. |
| Vector Store | ChromaDB |
Armazenamento persistente dos vetores de documentos. |
| LLM | ChatOpenAI (via AIMLAPI) |
Geração de respostas baseadas no contexto recuperado (mistralai/Mistral-7B-Instruct-v0.2). |
| Processamento PDF | PyPDFDirectoryLoader |
Carregamento dos documentos PDF. |
| Splitter | RecursiveCharacterTextSplitter |
Divisão dos documentos em chunks para vetorização. |
Siga estas instruções para configurar e rodar o projeto em sua máquina local.
Certifique-se de ter o Python (3.x) e o pip instalados.
git clone https://github.com/wittcher1/ChatBootCriaDdos.git
cd ChatBootCriaDdosCrie um ambiente virtual (recomendado) e instale as dependências:
# Cria e ativa o ambiente virtual (Exemplo com venv)
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# Instala as dependências (Assumindo que você tem um requirements.txt ou irá criá-lo)
# Caso não tenha o requirements.txt, instale as libs usadas nos scripts:
pip install langchain-community langchain-chroma langchain-openai langchain-huggingface pypdf python-dotenvCrie um arquivo chamado .env na raiz do projeto para armazenar sua chave da AIMLAPI:
AIMLAPI_KEY = "SUA_CHAVE_SECRETA_AIMLAPI"
.env para o GitHub. Certifique-se de que ele está no seu .gitignore.
Coloque todos os seus arquivos PDF na pasta ./base.
Execute o script com o argumento --create-db para carregar os PDFs, criar os embeddings locais e persistir o banco de dados no diretório ./db_google.
python main.py --create-db(Se um banco de dados existente estiver presente em ./db_google, ele será removido e recriado.)
Após a criação do banco de dados, inicie o chat interativo com o argumento --chat:
python main.py --chatO sistema irá carregar a base vetorial, conectar-se à AIMLAPI e você poderá começar a fazer perguntas sobre o conteúdo dos seus PDFs. Digite sair para encerrar.
.
├── base/ # Pasta para os documentos PDF de entrada
│ └── documento.pdf
├── db_google/ # Pasta persistente do ChromaDB (gerada após --create-db)
├── bancodb.py # Lógica para carregar, dividir e vetorizar documentos, e iniciar o chat.
├── main.py # Ponto de entrada que gerencia a execução (--create-db ou --chat).
├── .env # Variáveis de ambiente (chave da AIMLAPI)
└── README.md # Este arquivo.
Sinta-se à vontade para sugerir melhorias, reportar bugs ou contribuir com o código.
- Faça um Fork do projeto.
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature). - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'). - Faça o Push para a branch (
git push origin feature/AmazingFeature). - Abra um Pull Request.
Este projeto está sob a licença MIT.