Plataforma web local para estudo com RAG (Retrieval-Augmented Generation). Crie projetos, adicione arquivos ou URLs como fonte de conhecimento, e converse com um assistente que responde com base no conteudo indexado.
- Multi-projeto — projetos independentes, cada um com sua propria knowledge base
- Multi-conversa — multiplas conversas por projeto com historico persistente
- Multi-source — upload de arquivos (PDF, MD, TXT) e scraping de URLs
- Multi-provider — OpenAI, Anthropic, Google e Ollama (local)
- Busca hibrida — vetorial + keyword (LanceDB + Tantivy)
- Streaming — respostas em tempo real via SSE
- Dark theme — interface moderna com tema escuro
# Instalar
pip install -e .
# Rodar
studyragO servidor inicia em http://localhost:8000.
Na primeira execucao, va em Settings (icone de engrenagem no topbar) e configure:
- Provider e modelo de LLM
- API key do provider escolhido
- URL do Ollama (se usar modelo local)
- Crie um projeto no dashboard
- Adicione fontes na aba Fontes: arraste arquivos ou cole uma URL
- Aguarde a indexacao (status atualiza automaticamente)
- Converse na aba Chat — o assistente responde com base nas fontes indexadas
app/
├── main.py # FastAPI app + startup
├── database.py # SQLite (SQLAlchemy)
├── models.py # ORM: Project, Conversation, Message, ProjectFile, Setting
├── config.py # Gerenciamento de settings (Fernet encryption para API keys)
├── templating.py # Jinja2 templates
├── routes/
│ ├── projects.py # CRUD de projetos
│ ├── chat.py # Chat + streaming SSE
│ ├── files.py # Upload + scraping + indexacao
│ └── settings.py # Configuracoes (API keys, provider, modelo)
├── services/
│ ├── rag.py # Pipeline RAG: knowledge base + hybrid search
│ ├── scraper.py # Web scraper (sitemap, search_index, nav links)
│ └── llm.py # Factory multi-provider (OpenAI, Anthropic, Google, Ollama)
├── templates/ # Jinja2 + HTMX
└── static/ # CSS (dark theme) + JS (SSE, drag-and-drop)
- Backend: FastAPI + Jinja2 + HTMX
- Metadata DB: SQLite via SQLAlchemy
- Vector DB: LanceDB por projeto com busca hibrida (Tantivy)
- Framework de agentes: Agno
- Embeddings: text-embedding-3-small (OpenAI)
# Instalar com dependencias de dev
pip install -e ".[dev]"
# Rodar testes
pytest -vMIT