8000 GitHub - lucasmaciel03/ipvc-rag-ollama
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

lucasmaciel03/ipvc-rag-ollama

Repository files navigation

Logo

ESTG RegPedagogicoBot

Sistema RAG com Ollama LLM para responder perguntas sobre o Regulamento Pedagógico da ESTG
Explorar a documentação »

Ver Demonstração · Reportar Bug · Solicitar Funcionalidade

Índice
  1. Sobre o Projeto
  2. Começando
  3. Uso
  4. Arquitetura RAG
  5. Otimizações
  6. Roadmap
  7. Documentação
  8. Contribuição
  9. Licença
  10. Contato
  11. Agradecimentos

Sobre o Projeto

Este projeto implementa um sistema de Retrieval-Augmented Generation (RAG) utilizando o modelo LLM local Ollama para responder a perguntas sobre o Regulamento Pedagógico da ESTG. O sistema foi desenvolvido como parte do Trabalho Prático 3 da disciplina de Inteligência Artificial do curso de Engenharia Informática do IPVC.

O projeto adapta a plataforma UROBOT para utilizar o modelo LLM local Ollama em vez do ChatGPT, aplicando a técnica de Retrieval-Augmented Generation (RAG) para melhorar a precisão das respostas sobre o Regulamento Pedagógico da ESTG. A interface web foi desenvolvida com Streamlit, proporcionando uma experiência interativa e amigável.

Principais características:

  • Interface web interativa desenvolvida com Streamlit
  • Processamento de PDF e divisão em chunks otimizados
  • Embeddings e vectorstore local com ChromaDB
  • Pipeline RAG completo com LangChain
  • Sistema de cache multi-camada para performance otimizada
  • Documentação detalhada para uso e desenvolvimento

(voltar ao topo)

Tecnologias Utilizadas

O projeto foi desenvolvido utilizando as seguintes tecnologias:

  • Python
  • Streamlit
  • LangChain
  • Ollama
  • ChromaDB

(voltar ao topo)

Começando

Para obter uma cópia local em funcionamento, siga estas etapas simples.

Pré-requisitos

  • Python 3.10+
  • Ollama (servidor local de LLM)
  • Dependências Python listadas em requirements.txt:
    langchain>=0.1.0
    langchain-community>=0.1.0
    langchain-ollama>=0.1.0
    chromadb>=0.4.22
    pypdf>=3.17.0
    streamlit>=1.30.0
    pydantic>=2.5.0
    python-dotenv>=1.0.0
    tqdm>=4.66.0
    

Instalação

  1. Clone o repositório
    git clone https://github.com/lucasmaciel03/ipvc-rag-ollama.git
    cd ipvc-rag-ollama
  2. Crie e ative um ambiente virtual
    python -m venv streamlit_env
    source streamlit_env/bin/activate  # No Windows: streamlit_env\Scripts\activate
  3. Instale as dependências
    pip install -r requirements.txt
  4. Instale e inicie o Ollama
    # Instale o Ollama seguindo as instruções em ollama.com/download
    ollama serve
  5. Em outro terminal, baixe os modelos necessários
    ollama pull llama3
    ollama pull nomic-embed-text

Para instruções de instalação mais detalhadas, consulte o Guia de Instalação.

(voltar ao topo)

Uso

Iniciar a Aplicação

# Ativar o ambiente virtual (se ainda não estiver ativado)
source streamlit_env/bin/activate

# Executar a aplicação Streamlit
streamlit run app_refactored.py

A interface web estará disponível em http://localhost:8501

Usando a Interface

  1. Clique em Iniciar Sistema RAG na barra lateral
  2. Aguarde o carregamento do PDF e a criação do vectorstore
  3. Digite sua pergunta sobre o Regulamento Pedagógico da ESTG
  4. Clique em Enviar Pergunta ou pressione Enter
  5. Veja a resposta e os documentos fonte utilizados

Exemplos de Perguntas

  • "Quais são os tipos de avaliação previstos no regulamento?"
  • "Como funciona a época especial de exames?"
  • "Quais são as condições para obter o estatuto de estudante-atleta?"
  • "Qual o prazo para revisão de provas?"

Para instruções de uso mais detalhadas e dicas de otimização, consulte o Guia de Uso.

(voltar ao topo)

Arquitetura RAG

O sistema utiliza a arquitetura de Retrieval-Augmented Generation (RAG) para melhorar a qualidade das respostas do modelo LLM:

  1. Processamento de Documentos:

    • Carregamento do PDF do Regulamento Pedagógico
    • Divisão em chunks de texto (800 caracteres com 80 de sobreposição)
  2. Criação de Embeddings:

    • Geração de embeddings usando o modelo nomic-embed-text do Ollama
    • Armazenamento em um vectorstore ChromaDB persistente
  3. Pipeline de Recuperação:

    • Busca semântica para encontrar os 2 chunks mais relevantes para a pergunta
    • Recuperação dos documentos para fornecer contexto ao LLM
  4. Geração de Respostas:

    • Modelo Ollama llama3 recebe a pergunta e o contexto recuperado
    • Prompt personalizado em português para instruir o modelo

Para uma explicação detalhada do conceito RAG e sua implementação, consulte RAG Explicado e Arquitetura do Sistema.

(voltar ao topo)

Otimizações

O sistema implementa várias otimizações para melhorar o desempenho:

Otimizações de Performance

  • Sistema de Cache Multi-camada:

    • Cache do vectorstore (TTL: 1 hora)
    • Cache de respostas (TTL: 30 minutos)
    • Cache local em session_state
    • Normalização de consultas para melhorar hits de cache
  • Configuração do Modelo:

    • Temperatura baixa (0.1) para respostas mais consistentes
    • Contexto reduzido para processamento mais rápido
    • Uso de múltiplas threads e GPU quando disponível
  • Processamento de Documentos:

    • Tamanho de chunk otimizado para equilibrar precisão e velocidade
    • Recuperação de apenas 2 documentos mais relevantes

Melhorias de UX

  • Interface Responsiva:

    • Feedback visual durante o processamento
    • Estilização CSS para melhor legibilidade
  • Funcionalidades Úteis:

    • Histórico de chat
    • Exemplos de perguntas pré-definidas
    • Exibição de documentos fonte
    • Tempo de resposta

(voltar ao topo)

Roadmap

  • Interface web interativa com Streamlit
  • Implementação do pipeline RAG completo
  • Sistema de cache multi-camada
  • Documentação detalhada
  • Implementação de testes automatizados
  • Suporte a múltiplos documentos
  • Interface de administração para gerenciar documentos
  • Avaliação de qualidade das respostas

Veja os issues abertos para uma lista completa de funcionalidades propostas (e problemas conhecidos).

(voltar ao topo)

Documentação

O projeto inclui documentação detalhada para ajudar usuários e desenvolvedores:

  1. Guia de Instalação:

    • Instruções passo a passo para configurar o ambiente
    • Solução de problemas comuns de instalação
    • Configurações opcionais para melhor desempenho
  2. Guia de Uso:

    • Como utilizar a interface Streamlit
    • Exemplos detalhados de perguntas eficazes
    • Dicas para otimizar o desempenho do sistema
    • Perguntas frequentes (FAQ)
  3. Arquitetura do Sistema:

    • Explicação detalhada dos componentes do sistema
    • Diagrama de arquitetura do pipeline RAG
    • Descrição do fluxo de dados e processamento
    • Considerações de desempenho e melhorias futuras
  4. RAG Explicado:

    • Conceito de Retrieval-Augmented Generation
    • Comparação com outras abordagens de IA
    • Implementação específica no projeto
    • Desafios e soluções

(voltar ao topo)

Contribuição

Contribuições são o que tornam a comunidade open source um lugar incrível para aprender, inspirar e criar. Qualquer contribuição que você fizer será muito apreciada.

Se você tiver uma sugestão para melhorar isso, por favor faça um fork do repositório e crie um pull request. Você também pode simplesmente abrir um issue com a tag "melhoria". Não se esqueça de dar uma estrela ao projeto! Obrigado novamente!

  1. Faça um Fork do Projeto
  2. Crie sua Branch de Funcionalidade (git checkout -b feature/FuncionalidadeIncrivel)
  3. Faça Commit de suas Alterações (git commit -m 'Adiciona alguma FuncionalidadeIncrivel')
  4. Faça Push para a Branch (git push origin feature/FuncionalidadeIncrivel)
  5. Abra um Pull Request

(voltar ao topo)

Licença

Distribuído sob a Licença MIT. Veja LICENSE para mais informações.

(voltar ao topo)

Contato

Lucas Maciel - @lucasmaciel03 - lucasmaciel@ipvc.pt

Link do Projeto: https://github.com/lucasmaciel03/ipvc-rag-ollama

(voltar ao topo)

Agradecimentos

  • Ollama - Por fornecer uma forma fácil de executar LLMs localmente
  • LangChain - Pelo framework que facilita a criação de aplicações com LLMs
  • Streamlit - Pela ferramenta que permite criar interfaces web rapidamente
  • IPVC ESTG - Pela oportunidade de desenvolver este projeto
  • Best-README-Template - Pelo template utilizado neste README

(voltar ao topo)

Estrutura do Projeto

.
├── app.py                  # Aplicação Streamlit principal
├── app_refactored.py       # Versão refatorada da aplicação
├── requirements.txt        # Dependências do projeto
├── resources/              # PDFs e outros recursos
│   └── ESTG_Regulamento-Frequencia-Avaliacao2023.pdf
├── src/                    # Código fonte modularizado
│   ├── __init__.py
│   ├── config/             # Configurações do sistema
│   ├── data/               # Processamento de documentos
│   ├── models/             # Modelos e embeddings
│   └── utils/              # Utilitários e helpers
├── docs/                   # Documentação detalhada
│   ├── ARCHITECTURE.md     # Arquitetura do sistema RAG
│   ├── INSTALLATION.md     # Guia de instalação detalhado
│   ├── USAGE_GUIDE.md      # Guia de uso e otimização
│   └── RAG_EXPLAINED.md    # Explicação do conceito RAG
├── urobot/                 # Código original do UROBOT
└── vector_store/          # Armazenamento de embeddings (ChromaDB)

(voltar ao topo)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0