Laboratório em bancada
Laboratório: RAG local com Ollama, Open WebUI e Qdrant
Você terá um sistema de perguntas e respostas baseado em RAG rodando localmente, usando Ollama, Open WebUI e Qdrant. O laboratório leva cerca de 2 horas.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 5
Implementar um pipeline completo de Retrieval-Augmented Generation (RAG) em ambiente local, usando apenas software de código aberto. Você irá instalar e configurar Ollama para servir um LLM, Qdrant como banco vetorial e Open WebUI para interface gráfica, conectando tudo para consultar um conjunto de documentos próprios.
Topologia
Uma máquina local (192.168.1.10) executa três serviços: Ollama (porta 11434), Qdrant (porta 6333) e Open WebUI (porta 8080). O usuário acessa o Open WebUI via navegador. O Open WebUI consulta Ollama para geração e Qdrant para busca vetorial. Nenhum serviço exposto à internet.
┌─────────────┐n│ Navegador │n└─────┬───────┘n │ http://192.168.1.10:8080n┌─────▼───────┐n│ Open WebUI │n├─────┬───────┤n│ │ │n▼ ▼ nOllama Qdrant n(11434)(6333) Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| PC ou VM | CPU x86_64 de 4 núcleos, 8GB RAM, 20GB disco, portas 8080, 11434, 6333 livres |
| Ollama | MIT · a versão estável atual |
| Open WebUI | Apache-2.0 · a versão estável atual |
| Qdrant | Apache-2.0 · a versão estável atual |
| Python | PSF · 3.10 ou superior |
Roteiro
- Preparar ambiente
Atualize o sistema e instale Docker. Docker simplifica a execução dos serviços isoladamente.
sudo apt update && sudo apt upgrade -ynsudo apt install docker.io docker-compose -yO que você deve ver: Docker instalado, serviços docker ativos
- Baixar e rodar Qdrant
Qdrant será o banco vetorial. Ele armazena embeddings dos seus documentos.
docker run -d --name qdrant -p 6333:6333 qdrant/qdrantO que você deve ver: Container qdrant ativo, porta 6333 ouvindo
- Instalar Ollama
Ollama serve o modelo de linguagem localmente, sem depender de nuvem.
curl -fsSL https://ollama.com/install.sh | shO que você deve ver: Ollama instalado, comando 'ollama' disponível
- Baixar modelo LLM
Escolha um modelo aberto, por exemplo, 'llama3'. Consulte a documentação para outros modelos.
ollama pull llama3O que você deve ver: Download do modelo concluído
- Rodar Ollama
Inicie o servidor Ollama para aceitar requisições.
ollama serve &O que você deve ver: Ollama ouvindo na porta 11434
- Rodar Open WebUI
Open WebUI oferece interface gráfica e integra Ollama e Qdrant.
docker run -d --name open-webui -p 8080:8080 -e 'OLLAMA_BASE_URL=http://host.docker.internal:11434' -e 'QDRANT_URL=http://host.docker.internal:6333' open-webui/open-webui:latestO que você deve ver: Open WebUI ouvindo na porta 8080
- Acessar Open WebUI
Abra o navegador em http://localhost:8080. Crie usuário e faça login.
O que você deve ver: Tela de login/cadastro do Open WebUI
- Carregar documentos
No Open WebUI, acesse a área de RAG e faça upload de um PDF ou texto. O sistema irá indexar e gerar embeddings via Ollama, armazenando no Qdrant.
O que você deve ver: Documento listado como indexado, sem erros
- Realizar consulta RAG
Digite uma pergunta sobre o conteúdo do documento. O sistema busca trechos relevantes no Qdrant e gera resposta com o LLM.
O que você deve ver: Resposta contextualizada, citando o documento
- Verificar logs dos serviços
Confira os logs dos containers para identificar possíveis falhas.
docker logs qdrantndocker logs open-webuiO que você deve ver: Logs sem erros críticos
- Testar persistência
Reinicie os containers e verifique se os documentos indexados permanecem disponíveis.
docker restart qdrant open-webuiO que você deve ver: Documentos e histórico preservados após reinício
- Limpar ambiente
Para liberar recursos, pare e remova os containers.
docker stop qdrant open-webui && docker rm qdrant open-webuiO que você deve ver: Containers removidos
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Acesso ao Open WebUI | curl -I http://localhost:8080 | HTTP 200 OK |
| Ollama respondendo | curl http://localhost:11434/api/tags | Lista de modelos disponíveis |
| Qdrant ativo | curl http://localhost:6333/collections | JSON com coleções (mesmo vazio) |
| Resposta RAG contextualizada | Resposta do LLM faz referência ao documento carregado | |
| Persistência dos dados | Documentos indexados permanecem após restart dos containers |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Open WebUI não acessível | Porta 8080 bloqueada ou container não iniciou | Verifique firewall e status do container com 'docker ps' |
| Ollama não responde | Serviço não iniciado ou porta 11434 ocupada | Execute 'ollama serve' e verifique conflitos de porta |
| Qdrant sem coleções após upload | Falha na integração com Open WebUI | Cheque variáveis de ambiente e logs dos containers |
| Respostas genéricas, sem contexto | Documentos não indexados corretamente | Reindexe os documentos via Open WebUI e monitore logs |
| Erro ao baixar modelo no Ollama | Conexão de internet instável ou falta de espaço em disco | Verifique conectividade e espaço disponível |
Segurança e hardening
- Nunca exponha as portas dos serviços diretamente na internet sem autenticação e firewall
- Utilize senhas fortes no Open WebUI
- Restrinja acesso às portas 8080, 11434 e 6333 à rede local
- Monitore logs para identificar acessos não autorizados
- Atualize os containers regularmente para corrigir vulnerabilidades
