Spaces:
Running
Running
Guilherme Favaron
Major update: Add hybrid search, reranking, multiple LLMs, and UI improvements
1b447de
| """ | |
| RAG Template - Aplicação Educativa com PostgreSQL + pgvector | |
| Interface interativa mostrando cada passo do processo RAG: | |
| - Ingestão de documentos com visualizações | |
| - Exploração da base de conhecimento | |
| - Chat RAG com contextos visíveis | |
| - Playground de parâmetros | |
| - Monitoramento de métricas | |
| """ | |
| import os | |
| import uuid | |
| import gradio as gr | |
| from src.config import DATABASE_URL, APP_PORT | |
| from src.database import DatabaseManager | |
| from src.embeddings import EmbeddingManager | |
| from src.generation import GenerationManager | |
| from ui.ingestion_tab import create_ingestion_tab | |
| from ui.exploration_tab import create_exploration_tab | |
| from ui.chat_tab import create_chat_tab | |
| from ui.playground_tab import create_playground_tab | |
| from ui.monitoring_tab import create_monitoring_tab | |
| from ui.chunking_comparison_tab import create_chunking_comparison_tab | |
| from ui.hybrid_search_tab import create_hybrid_search_tab | |
| from ui.visualizations_tab import create_visualizations_tab | |
| from ui.custom_css import CUSTOM_CSS | |
| def create_app(): | |
| """Cria aplicação Gradio com todas as abas""" | |
| # Inicializa gerenciadores | |
| db_manager = DatabaseManager() | |
| embedding_manager = EmbeddingManager() | |
| generation_manager = GenerationManager() | |
| # Inicializa schema do banco | |
| db_ok = db_manager.init_schema() | |
| # Gera session ID único | |
| session_id = str(uuid.uuid4()) | |
| # Interface Gradio | |
| with gr.Blocks(title="RAG Template", css=CUSTOM_CSS) as demo: | |
| # Header | |
| with gr.Row(): | |
| gr.Markdown(""" | |
| # RAG Template | |
| Template interativo de Retrieval-Augmented Generation com PostgreSQL + pgvector | |
| Explore cada etapa do processo RAG de forma visual e educativa. | |
| """) | |
| # Status da conexão | |
| with gr.Row(): | |
| if db_ok: | |
| connection_status = gr.Markdown("**Status**: Banco de dados conectado", elem_classes=["success"]) | |
| else: | |
| error_msg = db_manager.last_error if db_manager.last_error else "Erro desconhecido" | |
| connection_status = gr.Markdown( | |
| f"**Status**: Erro de conexão com banco - {error_msg}. Configure a variável DATABASE_URL corretamente.", | |
| elem_classes=["error"] | |
| ) | |
| # Abas principais | |
| with gr.Tabs(): | |
| # Aba 1: Ingestão | |
| create_ingestion_tab(db_manager, embedding_manager, session_id) | |
| # Aba 2: Exploração | |
| create_exploration_tab(db_manager, embedding_manager, session_id) | |
| # Aba 3: Chat RAG | |
| create_chat_tab(db_manager, embedding_manager, generation_manager, session_id) | |
| # Aba 4: Playground | |
| create_playground_tab(db_manager, embedding_manager, generation_manager, session_id) | |
| # Aba 5: Comparação de Chunking | |
| create_chunking_comparison_tab() | |
| # Aba 6: Busca Híbrida | |
| create_hybrid_search_tab(db_manager, embedding_manager, session_id) | |
| # Aba 7: Visualizações | |
| create_visualizations_tab(db_manager, embedding_manager, session_id) | |
| # Aba 8: Monitoramento | |
| create_monitoring_tab(db_manager) | |
| # Footer | |
| with gr.Row(): | |
| gr.Markdown(""" | |
| --- | |
| **Tecnologias**: PostgreSQL + pgvector | Sentence Transformers | Hugging Face | Gradio | |
| [Documentação](https://github.com/guifav/rag_template) | | |
| [Reportar Issue](https://github.com/guifav/rag_template/issues) | | |
| [GitHub](https://github.com/guifav/rag_template) | |
| """) | |
| return demo | |
| if __name__ == "__main__": | |
| app = create_app() | |
| # Launch | |
| app.queue().launch( | |
| server_name="0.0.0.0", | |
| server_port=APP_PORT, | |
| share=False, | |
| show_error=True | |
| ) | |