Open WebUI e llama.cpp: como configurar busca na web local com Qwen e Docker no Windows
Se a busca na web no Open WebUI estava retornando lixo, o problema provavelmente não estava na interface em si, mas na configuração da cadeia RAG. O autor…
Processado por IA de Habr AI; editado por Hamidun News
Open WebUI pode trabalhar com modelos locais através do llama.cpp e até realizar buscas na web, mas sem configuração manual os resultados costumam ser fracos. O autor de um guia prático mostrou como montar um setup funcional no Windows com Qwen, Docker e modelos separados para embedding e reranking, para que a busca comece a retornar respostas significativas.
Como funciona o setup
A ideia básica é simples: llama.cpp executa um servidor local com múltiplos modelos GGUF, e Open WebUI funciona como interface acima dele. Para geração principal, o autor usa duas versões de um grande modelo Qwen3.
5-27B-UD-Q4_K_XL — com e sem reasoning. Separadamente são executados um compacto Qwen3.5-2B para tarefas auxiliares, Qwen3-Embedding-4B para vetorização e Qwen3-Reranker-4B para reordenação de resultados de busca.
Este arranjo é necessário porque a busca web no Open WebUI está essencialmente ligada a um pipeline RAG. Se você deixar as configurações padrão, o sistema pode formalmente encontrar páginas, mas extrai mal o significado, perde chunks de texto relevantes e retorna respostas fracas. Segundo o autor, isso é exatamente o que tornava a busca quase inútil na configuração padrão.
O guia é orientado para hardware bem específico: Windows 10 22H2, RTX 3090 com 24 GB VRAM e 32 GB de RAM. Mesmo em tal máquina, o modelo grande não carrega instantaneamente: a primeira resposta pode levar até um minuto, e qualquer carregamento paralelo extra consome rapidamente a memória de vídeo.
Configurações-chave
A ideia mais importante do artigo é que você precisa configurar não apenas o modelo de chat, mas toda a infraestrutura em torno dele. O autor executa modelos em llama-server, e Open WebUI se conecta através de URL local via Docker.
- Modelo principal para respostas — Qwen3.5-27B-UD-Q4_K_XL, separadamente em modo instruct e thinking.
- Modelo auxiliar — Qwen3.5-2B-BF16: gera títulos de chat e realiza tarefas menores em background mais rápido que o modelo grande.
- Para busca web, são usados separados Qwen3-Embedding-4B-f16 e Qwen3-Reranker-4B-f16.
- Apache Tika é conectado como mecanismo de extração de conteúdo, e Open WebUI é executado via Docker Compose.
- Brave Search é escolhido como provedor de busca; o autor também menciona Exa, Tavily, Serper, Linkup e Valyu.
Uma nuance separada são os parâmetros do llama.cpp. Na configuração, o autor desabilita mmap, limita o número de modelos carregados simultaneamente via `--models-max 1`, configura descarregamento de VRAM por timeout e divide contexto entre requisições paralelas. Isso não é cosmético: se você carregar um segundo modelo pesado simultaneamente com o principal, o desempenho cai drasticamente.
Na interface Open WebUI também há lugares críticos. No painel de administração, você precisa explicitamente especificar a URL do servidor local de modelos, depois selecionar um modelo pequeno para tarefas locais e externas da interface, e na seção Documents conectar Tika, o modelo de embedding e um endpoint de rerank externo. Apenas depois disso a busca web começa a funcionar como uma cadeia completa, não como um wrapper formal sobre uma query do navegador.
Limitações e nuances
Mesmo após configuração, tal esquema não transforma o stack local em substituto para serviços em nuvem pagos. O autor explicitamente afirma que o resultado ainda não se compara a soluções proprietárias, mas pode ser suficiente se privacidade, operação offline ou a capacidade de executar modelos unrestricted sem APIs externas for importante.
Há também compromissos práticos. Se você especificar um modelo de reasoning para tarefas auxiliares da interface, Open WebUI começa a gastar muito tempo até em gerar um título de chat. Com busca web, modelos de embedding e reranking são carregados adicionalmente, então carga de VRAM e latências crescem ainda mais. Para verificar o que está carregado agora, o autor recomenda verificar logs do llama-server.
O artigo contém também várias extensões para quem quer ir além. Em vez de Tika, você pode experimentar Docling para documentos mais complexos. SearXNG é adequado para um mecanismo de busca local, embora seus backends possam ser temporariamente banidos. O carregador web baseado em Playwright funcionou para o autor, mas era muito lento — latência era medida em minutos, não segundos. Posteriormente ele também reduziu o contexto do modelo principal para 32768 tokens: isso ajudou a eliminar travamentos quando a aba de chat estava aberta, porque o modelo parou de ocupar mais VRAM livre do que o sistema podia sustentavelmente suportar.
O que isso significa
O material demonstra bem que um stack de AI local hoje já pode ser montado com componentes abertos, mas qualidade depende não tanto de um "melhor modelo", mas da combinação correta de geração, embedding, reranking e extração de conteúdo. Para desenvolvedores, esta é uma receita prática: se Open WebUI com busca web funciona mal para você, você deve começar não com trocar o modelo, mas com reconstruir toda a configuração RAG.
Quer parar de ler sobre IA e começar a usar?
AI News é um feed curado de notícias de IA. A Hamidun Academy ensina você a usar IA no trabalho.