--- 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](https://supabase.com) - Crie novo projeto - Habilite extensao `vector` no SQL Editor - Copie connection string **Neon**: - Crie conta em [neon.tech](https://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 OpenAI - `ANTHROPIC_API_KEY`: Chave Anthropic - `OLLAMA_BASE_URL`: URL servidor Ollama ### 3. Aguardar Inicializacao Na primeira execucao, o app: 1. Conecta ao banco de dados 2. Cria tabelas necessarias 3. Baixa modelos de embedding 4. Inicializa interface Isso pode levar 1-2 minutos. ### 4. Ingerir Documentos 1. Va na aba "Ingestao de Documentos" 2. Faca upload de PDFs ou TXTs 3. Escolha estrategia de chunking 4. Aguarde processamento ### 5. Conversar com Seus Documentos 1. Va na aba "Chat RAG" 2. Selecione LLM provider 3. Ajuste parametros (top_k, temperature) 4. 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 ```bash 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 ```bash docker compose up ``` ### Railway ```bash railway up ``` ## Documentacao Completa - [README completo](https://github.com/guifav/rag_template/blob/main/README.md) - [Setup Supabase](https://github.com/guifav/rag_template/blob/main/docs/SUPABASE_SETUP.md) - [Setup Neon](https://github.com/guifav/rag_template/blob/main/docs/NEON_SETUP.md) - [Comparacao de Bancos](https://github.com/guifav/rag_template/blob/main/docs/DATABASE_COMPARISON.md) ## 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! 1. Fork o [repositorio](https://github.com/guifav/rag_template) 2. Crie uma branch 3. Commit suas mudancas 4. Abra um Pull Request Veja [CONTRIBUTING.md](https://github.com/guifav/rag_template/blob/main/CONTRIBUTING.md) ## Licenca MIT License - veja [LICENSE](https://github.com/guifav/rag_template/blob/main/LICENSE) ## Contato - GitHub: [@guifav](https://github.com/guifav) - Issues: [github.com/guifav/rag_template/issues](https://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**