Spaces:
Sleeping
A newer version of the Gradio SDK is available:
6.9.0
title: RAG Template - Production Ready
emoji: 📚
colorFrom: yellow
colorTo: red
sdk: gradio
sdk_version: 4.36.0
app_file: app.py
pinned: false
license: mit
tags:
- rag
- retrieval-augmented-generation
- pgvector
- embeddings
- llm
- chatbot
- semantic-search
- reranking
- hybrid-search
- education
RAG Template - Production Ready
Template completo e educativo de Retrieval-Augmented Generation (RAG) com PostgreSQL + pgvector.
O que e RAG?
RAG (Retrieval-Augmented Generation) combina busca semantica com LLMs para gerar respostas baseadas em documentos especificos. E como dar "memoria" e "conhecimento" especializado para uma IA.
Funcionalidades Principais
Ingestao de Documentos
- Upload de PDFs e TXTs
- 4 estrategias de chunking (fixo, sentencas, semantico, recursivo)
- Geracao e cache de embeddings
- Visualizacao do processo completo
Busca Avancada
- Busca semantica com pgvector
- Hybrid search (vetorial + BM25)
- Reranking com cross-encoder
- Query expansion automatica
Chat Interativo
- Suporte a 4 LLM providers (HuggingFace, OpenAI, Anthropic, Ollama)
- Contextos recuperados visiveis
- Metricas em tempo real
- Parametros ajustaveis
Visualizacoes
- Reducao dimensional (PCA, t-SNE, UMAP)
- Clusters de documentos
- Analise de similaridade
- Metricas de qualidade
Monitoramento
- Dashboard de estatisticas
- Historico de queries
- Metricas de performance
- Logging estruturado
Como Usar
1. Configurar Banco de Dados
Este app requer PostgreSQL com pgvector. Opcoes gratuitas:
Supabase (Recomendado):
- Crie conta em supabase.com
- Crie novo projeto
- Habilite extensao
vectorno SQL Editor - Copie connection string
Neon:
- Crie conta em neon.tech
- Crie projeto e habilite extensao
vector - Copie connection string
2. Configurar Secrets
Configure os seguintes secrets neste Space:
Obrigatorio:
DATABASE_URL: Connection string do PostgreSQL
Opcional (pelo menos um):
HF_TOKEN: Token HuggingFace (para inference API)OPENAI_API_KEY: Chave OpenAIANTHROPIC_API_KEY: Chave AnthropicOLLAMA_BASE_URL: URL servidor Ollama
3. Aguardar Inicializacao
Na primeira execucao, o app:
- Conecta ao banco de dados
- Cria tabelas necessarias
- Baixa modelos de embedding
- Inicializa interface
Isso pode levar 1-2 minutos.
4. Ingerir Documentos
- Va na aba "Ingestao de Documentos"
- Faca upload de PDFs ou TXTs
- Escolha estrategia de chunking
- Aguarde processamento
5. Conversar com Seus Documentos
- Va na aba "Chat RAG"
- Selecione LLM provider
- Ajuste parametros (top_k, temperature)
- Faca perguntas sobre os documentos
Limitacoes do Free Tier
Supabase Free
- 500MB storage (~300k documentos pequenos)
- Pausa apos 1 semana de inatividade
- 2GB bandwidth/mes
Neon Free
- 10GB storage (~6M documentos pequenos)
- 100 compute hours/mes
- Pausa apos 5min de inatividade
Hugging Face Spaces
- 16GB RAM
- 2 vCPU
- Ideal para demonstracao, nao producao em escala
Recomendacao: Limite a ~1000 documentos para demo estavel.
Tecnologias
- Gradio: Interface interativa
- PostgreSQL + pgvector: Armazenamento vetorial
- Sentence Transformers: Embeddings
- Multiple LLMs: HuggingFace, OpenAI, Anthropic, Ollama
- BM25: Busca lexica
- Plotly: Visualizacoes
Arquitetura
Usuario
|
v
Gradio UI
|
v
RAG Pipeline
|
+-- Chunking
+-- Embeddings
+-- Retrieval (Hybrid + Rerank)
+-- Generation (LLM)
|
v
PostgreSQL + pgvector
Deploy Proprio
Local
git clone https://github.com/guifav/rag_template
cd rag_template
pip install -r requirements.txt
cp .env.example .env
# Configure .env
python app.py
Docker
docker compose up
Railway
railway up
Documentacao Completa
Performance
Metricas tipicas (depende do hardware):
- Ingestao: ~5-10 docs/segundo
- Busca vetorial: 50-150ms
- Geracao: 2-5 segundos
- Embeddings: ~100ms por documento
Casos de Uso
- Chatbots especializados
- Sistemas de busca semantica
- Analise de documentos
- QA sobre base de conhecimento
- Pesquisa academica
- Documentacao tecnica interativa
Roadmap
- Suporte a mais formatos (DOCX, HTML)
- Multi-tenancy
- API REST
- Autenticacao de usuarios
- Suporte a imagens (vision models)
- Grafos de conhecimento
Contribuir
Contribuicoes sao bem-vindas!
- Fork o repositorio
- Crie uma branch
- Commit suas mudancas
- Abra um Pull Request
Veja CONTRIBUTING.md
Licenca
MIT License - veja LICENSE
Contato
- GitHub: @guifav
- Issues: github.com/guifav/rag_template/issues
Agradecimentos
Construido com:
- PostgreSQL + pgvector
- Sentence Transformers
- Hugging Face
- Gradio
- Supabase / Neon
Feito com muito cafe para a comunidade de IA