Cookies

Com a sua autorização, usamos cookies do Google Analytics para medir as visitas e melhorar o site. Os cookies necessários ficam sempre ativos. Pode mudar a escolha ou retirar o consentimento quando quiser, no rodapé, em Definições de cookies. Política de Cookies

Saltar para o conteúdo
PTEN
Começar

RAG e Conhecimento ·Médio

Aplicação Local RAG com Pesquisa Híbrida

Sobre esta app

Uma poderosa aplicação de perguntas e respostas sobre documentos que utiliza Pesquisa Híbrida (RAG) e LLMs locais para respostas abrangentes. Construída com RAGLite para processamento e recuperação robustos de documentos, e Streamlit para uma interface de chat intuitiva, este sistema combina conhecimento específico de documentos com capacidades de LLM locais para fornecer respostas precisas e contextuais.

  • Código aberto completo
  • Explicado em português
  • Corre no seu computador

Ficha técnica

Categoria
RAG e Conhecimento
Dificuldade
Médio
Modelos
Llama
Frameworks
-
Corre local?
Sim (Ollama)
Chaves necessárias
Nenhuma

Licença Apache-2.0 · conteúdo curado, traduzido e mantido pelo Doutor AI.

Tutorial completo

Uma poderosa aplicação de perguntas e respostas sobre documentos que utiliza Pesquisa Híbrida (RAG) e LLMs locais para respostas abrangentes. Construída com RAGLite para um processamento e recuperação de documentos robustos, e Streamlit para uma interface de chat intuitiva, este sistema combina conhecimento específico de documentos com capacidades de LLM locais para fornecer respostas precisas e contextuais.

Demonstração:

https://github.com/user-attachments/assets/375da089-1ab9-4bf4-b6f3-733f44e47403

Início Rápido

Para testes imediatos, utiliza estas configurações de modelo testadas:

# LLM Model
bartowski/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf@4096

# Embedder Model
lm-kit/bge-m3-gguf/bge-m3-Q4_K_M.gguf@1024

Estes modelos oferecem um bom equilíbrio entre desempenho e utilização de recursos, e foram verificados para funcionar bem juntos, mesmo num MacBook Air M2 com 8GB de RAM.

Funcionalidades

  • Integração de LLM Local:
  • Utiliza modelos llama-cpp-python para inferência local
  • Suporta vários formatos de quantização (Q4_K_M recomendado)
  • Tamanhos de janela de contexto configuráveis
  • Processamento de Documentos:
  • Upload e processamento de documentos PDF
  • Divisão automática de texto e incorporação
  • Pesquisa híbrida combinando correspondência semântica e por palavras-chave
  • Reclassificação para melhor seleção de contexto
  • Integração Multi-Modelo:
  • LLM local para geração de texto (ex.: Llama-3.2-3B-Instruct)
  • Incorporações locais utilizando modelos BGE
  • FlashRank para reclassificação local

Pré-requisitos

  1. Instalar o Modelo spaCy:
   pip install https://github.com/explosion/spacy-models/releases/download/xx_sent_ud_sm-3.7.0/xx_sent_ud_sm-3.7.0-py3-none-any.whl
  1. Instalar Accelerated llama-cpp-python (Opcional, mas recomendado):
   # Configure installation variables
   LLAMA_CPP_PYTHON_VERSION=0.3.2
   PYTHON_VERSION=310 # 3.10, 3.11, 3.12
   ACCELERATOR=metal  # For Mac
   # ACCELERATOR=cu121  # For NVIDIA GPU
   PLATFORM=macosx_11_0_arm64  # For Mac
   # PLATFORM=linux_x86_64  # For Linux
   # PLATFORM=win_amd64  # For Windows

   # Install accelerated version
   pip install "https://github.com/abetlen/llama-cpp-python/releases/download/v$LLAMA_CPP_PYTHON_VERSION-$ACCELERATOR/llama_cpp_python-$LLAMA_CPP_PYTHON_VERSION-cp$PYTHON_VERSION-cp$PYTHON_VERSION-$PLATFORM.whl"
  1. Instalar Dependências:
   git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
   cd awesome-llm-apps/rag_tutorials/local_hybrid_search_rag
   pip install -r requirements.txt

Configuração do Modelo

RAGLite estende o LiteLLM com suporte para modelos llama.cpp utilizando llama-cpp-python. Para selecionar um modelo llama.cpp (por exemplo, da coleção de bartowski), utiliza um identificador de modelo do formato "llama-cpp-python/<hugging_face_repo_id>/<filename>@<n_ctx>", onde n_ctx é um parâmetro opcional que especifica o tamanho do contexto do modelo.

  1. Formato do Caminho do Modelo LLM:
   llama-cpp-python/<repo>/<model>/<filename>@<context_length>

Instalação do Projecto

Para instalar o projecto, segue os passos abaixo.

Pré-requisitos

Certifica-te de que tens os seguintes programas instalados:

  • Node.js (versão 14 ou superior)
  • npm (versão 6 ou superior)

Clonar o Repositório

Primeiro, clona o repositório para a tua máquina local:

git clone https://github.com/usuario/projeto.git

Instalação das Dependências

Navega até à pasta do projecto e instala as dependências:

cd projeto
npm install

Executar o Projecto

Para executar o projecto, utiliza o seguinte comando:

npm start

O projecto estará disponível em http://localhost:3000.

Testes

Para executar os testes, utiliza:

npm test

Contribuição

Se desejas contribuir para o projecto, por favor, segue estas etapas:

  1. Cria um fork do repositório.
  2. Cria uma nova branch para a tua funcionalidade ou correção de bug:
git checkout -b minha-funcionalidade
  1. Faz as tuas alterações e commit:
git commit -m "Adiciona nova funcionalidade"
  1. Faz push para a branch:
git push origin minha-funcionalidade
  1. Abre um Pull Request.

Licença

Este projecto está licenciado sob a Licença MIT. Consulta o ficheiro [LICENSE](LICENSE) para mais informações.

   bartowski/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf@4096
  1. Formato do Caminho do Modelo Embedder:
   llama-cpp-python/<repo>/<model>/<filename>@<dimension>

Instalação do Projecto

Para instalar o projecto, segue os passos abaixo.

Pré-requisitos

Certifica-te de que tens os seguintes programas instalados:

  • Node.js (versão 14 ou superior)
  • npm (versão 6 ou superior)

Clonar o Repositório

Primeiro, clona o repositório para a tua máquina local:

git clone https://github.com/usuario/projeto.git

Instalação das Dependências

Navega até à pasta do projecto e instala as dependências:

cd projeto
npm install

Executar o Projecto

Para executar o projecto, utiliza o seguinte comando:

npm start

O projecto estará disponível em http://localhost:3000.

Testes

Para executar os testes, utiliza:

npm test

Contribuição

Se desejas contribuir para o projecto, por favor, segue estas etapas:

  1. Cria um fork do repositório.
  2. Cria uma nova branch para a tua funcionalidade ou correção de bug:
git checkout -b minha-funcionalidade
  1. Faz as tuas alterações e commit:
git commit -m "Adiciona nova funcionalidade"
  1. Faz push para a branch:
git push origin minha-funcionalidade
  1. Abre um Pull Request.

Licença

Este projecto está licenciado sob a Licença MIT. Consulta o ficheiro [LICENSE](LICENSE) para mais informações.

   lm-kit/bge-m3-gguf/bge-m3-Q4_K_M.gguf@1024

Configuração da Base de Dados

A aplicação suporta múltiplos backends de base de dados:

  • PostgreSQL (Recomendado):
  • Cria uma base de dados PostgreSQL sem servidor gratuita em Neon em poucos cliques
  • Obtém provisionamento instantâneo e capacidade de escalonamento para zero
  • Formato da string de conexão: postgresql://user:pass@ep-xyz.region.aws.neon.tech/dbname

Como Executar

  1. Iniciar a Aplicação:
   streamlit run local_main.py
  1. Configura a Aplicação:
  • Introduz o caminho do modelo LLM
  • Introduz o caminho do modelo embedder
  • Define a URL da base de dados
  • Clica em "Guardar Configuração"
  1. Carrega Documentos:
  • Carrega ficheiros PDF através da interface
  • Espera pela conclusão do processamento
  1. Começa a Conversar:
  • Faz perguntas sobre os teus documentos
  • Obtém respostas utilizando o LLM local
  • Recorre ao conhecimento geral quando necessário

Notas

  • Um tamanho de janela de contexto de 4096 é recomendado para a maioria dos casos de uso
  • A quantização Q4_K_M oferece um bom equilíbrio entre velocidade e qualidade
  • O embedder BGE-M3 com 1024 dimensões é o ideal
  • Modelos locais requerem RAM e recursos de CPU/GPU suficientes
  • Aceleração Metal disponível para Mac, CUDA para GPUs NVIDIA

Contribuições

As contribuições são bem-vindas! Sente-te à vontade para submeter um Pull Request.

Da mesma categoria

RAG e ConhecimentoMédio

Gemma de Embedding Agentic Rag

Esta aplicação Streamlit demonstra um Agente de Geração Aumentada por Recuperação (RAG) agentic utilizando o EmbeddingGemma do Google para embeddings …

  • Llama
  • local
RAG e ConhecimentoMédio

RAG Agentic com GPT-5

Uma aplicação RAG agentic construída com o framework Agno, apresentando GPT-5 e LanceDB para recuperação eficiente de conhecimento e resposta a pergun…

  • OpenAI

Precisa de uma solução à medida?

Não sabe por onde começar a usar IA no seu negócio? Receba uma avaliação gratuita e um plano à medida - sem compromisso.

Poupe horas todas as semanas com IA, sem complicações

O Doutor AI dá-lhe 1859 prompts de IA prontos a copiar, por indústria e em português simples - mais uma biblioteca técnica completa para quem quer ir mais longe.

Ver planos