Este projeto implementa um sistema de Retrieval-Augmented Generation (RAG) usando ChromaDB para armazenamento de embeddings e um modelo de linguagem para geração de respostas.
- Ingestão de documentos nos formatos CSV e PDF para extração de informações e criação de uma base de conhecimento local, privada e segura.
- Chat com documento, permitindo que o usuário faça perguntas sobre o conteúdo dos documentos inseridos e obtenha respostas contextuais e relevantes em uma interface de chat ágil e intuitiva.
- Geração de respostas usando um modelo de linguagem integrado ao RAG para fornecer respostas precisas e contextuais com base nas informações armazenadas.
- Suporte para execução local do modelo de linguagem usando Ollama para otimizar o desempenho e reduzir a latência.
- Utilização de CUDA Toolkit 12.4 para acelerar a execução do modelo de linguagem e melhorar o desempenho geral do sistema.
- Administração do banco de dados ChromaDB, permitindo adicionar, remover e atualizar documentos conforme necessário.
- Python 3.11+
- pip (gerenciador de pacotes do Python)
- Ollama (para execução local dos modelos de linguagem)
- CUDA Toolkit 12.4
-
Clone o repositório:
git clone https://github.com/felipeverones/Local-RAG.git cd Local-RAG -
Crie um ambiente virtual:
python -m venv venv -
Ative o ambiente virtual:
- Windows:
venv\Scripts\activate - macOS/Linux:
source venv/bin/activate
- Windows:
-
Instale as dependências:
pip install -r requirements.txt pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 -
Baixe o modelo (Por padrão, o modelo utilizado é o Llama 3.1):
ollama pull llama3.1:latest
app.py: Interface Streamlit principal para interação com o usuário.rag_main.py: Implementação do RAG com integração LLM.ingest.py: Script para ingestão de documentos CSV e PDF.delete_db.py: Utilitário para limpar o banco de dados.config.py: Configurações do projeto, como caminhos de arquivos e parâmetros do modelo LLM.chroma_setup.py: Configuração do ChromaDB para inicialização do cliente persistente e armazenamento de embeddings e metadados dos documentos.
-
Ingestão de Documentos (3 formas):
1.1 Coloque seus arquivos CSV e PDF na pasta
docs/e execute:python ingest.pyOu, se preferir, utilize a interface Streamlit (Passo 2) para fazer o upload dos arquivos, navegando até a página de
admine clicando no botãoAtualizar banco de dados.1.2 Utilize a interface Streamlit (Passo 2) para fazer o upload de cada documento na página de
admin, clicando no botãoInserir Documentose selecionando o arquivo desejado.1.3 Utilize a interface Streamlit (Passo 2) para fazer upload do documento através da página de
chatinicial, clicando no botãoCarregar Documentoe selecionando o arquivo desejado. -
Executar a Interface Web:
streamlit run app.py -
Executar no Terminal (opcional): Descomente a função
main()emrag_main.pye execute:python rag_main.py -
Limpar o Banco de Dados (se necessário):
python delete_db.py
-
No Windows, execute o arquivo
Iniciar.bat, este irá executar os comandos descritos acima -
No Linux, abra o terminal no diretório do projeto e conceda permissões de execução do script com:
chmod +x Iniciar.shDepois, execute o script com o comando abaixo:
./Iniciar.sh
- O sistema usa, por padrão, o modelo de processamento de linguagem natural (NLP)
all-mpnet-base-v2para gerar embeddings. - O LLM utilizado é o Llama 3.1, executado localmente via Ollama.
- Os documentos são armazenados e indexados usando ChromaDB.
- O modelo deve ser instalado localmente.