O ChatRAG é um sistema de Inteligência Artificial baseado na arquitetura RAG (Retrieval-Augmented Generation). Ele permite que os usuários façam perguntas sobre documentos em PDF e obtenham respostas precisas, geradas localmente por uma LLM, utilizando estritamente o contexto extraído do documento original.
Este projeto foi desenvolvido como objeto de estudo para aprofundar conhecimentos em orquestração de Agentes Inteligentes, Bancos de Dados Vetoriais e Modelos de Linguagem de Grande Escala (LLMs).
- Linguagem: Python
- Framework de Orquestração: LangChain
- LLM Local: Ollama (Modelo:
llama3com temperature0.1) - Banco de Dados Vetorial: Weaviate (Conteinerizado via Docker)
- Embeddings: HuggingFace (
all-MiniLM-L6-v2) - Processamento de Documentos:
PyPDFLoadereRecursiveCharacterTextSplitter
- Ingestão de Dados: O sistema lê um documento PDF local, divide o texto em fragmentos menores (chunks de 1000 caracteres com overlap de 200) mantendo a coerência semântica.
- Vetorização: Os fragmentos de texto são convertidos em vetores (embeddings) usando um modelo do HuggingFace (processamento em CPU).
- Armazenamento: Esses vetores são armazenados em um banco de dados Weaviate rodando localmente em um contêiner Docker.
- Recuperação e Geração (RAG): Quando o usuário faz uma pergunta, o sistema busca os 3 fragmentos mais relevantes (
k=3) no banco de dados e os envia, junto com a pergunta e um prompt otimizado, para o Llama 3 formular uma resposta em português brasileiro de forma simples e direta.
Para rodar este projeto na sua máquina, você precisará de:
- Python 3.8+
- Docker e Docker Compose (para rodar o Weaviate)
- Ollama instalado e rodando.
Além disso, é necessário baixar o modelo llama3 no Ollama. No seu terminal, execute:
ollama run llama31. Clone o repositório:
git clone [https://github.com/mtheusantunes/ChatRAG.git](https://github.com/mtheusantunes/ChatRAG.git)
cd ChatRAG2. Instale as dependências: (Recomenda-se o uso de um ambiente virtual)
pip install langchain langchain-community langchain-huggingface langchain-weaviate langchain-ollama weaviate-client pypdf3. Suba o Banco de Dados Vetorial (Weaviate): Na raiz do projeto, execute o Docker Compose para iniciar o banco na porta 8080:
docker-compose up -d4. Prepare o Documento e Popule o Banco:
Coloque o seu documento PDF na pasta docs/ e certifique-se de que o caminho no código Python database_feeder (no bloco de extração de dados) aponta para o arquivo correto. Em seguida, execute o script de ingestão.
(Aguarde até ver a mensagem "PDF está no banco!")
5. Inicie o Chat: Execute o script principal que inicializa a chain RAG e comece a interagir com a IA pelo terminal.
Matheus Antunes
- Estudante de Ciência da Computação | Desenvolvedor Full Stack
- LinkedIn: linkedin.com/in/mtheusantunes
- GitHub: github.com/mtheusantunes
ChatRAG is an Artificial Intelligence system based on the RAG (Retrieval-Augmented Generation) architecture. It allows users to ask questions about PDF documents and get accurate answers, generated locally by an LLM, strictly using the context extracted from the original document.
- Language: Python
- Orchestration Framework: LangChain
- Local LLM: Ollama (Model:
llama3with temperature0.1) - Vector Database: Weaviate (Dockerized)
- Embeddings: HuggingFace (
all-MiniLM-L6-v2)
- Data Ingestion: Reads a local PDF and splits it into chunks.
- Vectorization: Converts chunks into embeddings using HuggingFace.
- Storage: Stores vectors in a local Weaviate Docker container.
- RAG: Retrieves the top 3 most relevant context chunks and prompts the Llama 3 model to answer the user's question.
- Python 3.8+
- Docker & Docker Compose
- Ollama with the
llama3model downloaded (ollama run llama3).
- Clone the repository and install the required dependencies via
pip. - Run
docker-compose up -dto start the Weaviate vector database. - Place your target PDF in the
docs/folder and adjust the path in the script database_feeder. - Run the ingestion logic to populate the database.
- Run the chat logic to start interacting with the local AI.