SearXNG: fornecer pesquisa na web a um modelo local
SearXNG (software livre sob licença AGPL-3.0, que não rastreia seus usuários nem cria perfis deles) é um metabuscador auto-hospedado: encaminha suas consultas para outros mecanismos de busca e combina seus resultados, sem chave de API nem cobrança. Para um modelo local, o passo que desbloqueia tudo é adicionar "json" à lista de formatos do settings.yml (apenas "html" por padrão), depois conectar essa saída JSON à sua interface de chat ou ao seu agente.
Um modelo aberto não sabe nada sobre esta semana, e nada em sua resposta avisa você disso: ele falará do mês passado com a mesma segurança com que recita uma tabuada decorada. Dar a ele acesso a uma busca na web corrige isso. O SearXNG é um mecanismo de metabusca auto-hospedado que oferece esse serviço sem chave de API, sem cobrança por requisição e sem conta — o que o torna um componente coerente de uma instalação local, na qual você não quer enviar cada pergunta a terceiros.
#Por que um modelo local precisa da web
O conhecimento de um modelo se limita à sua data de treinamento, e ele não sabe com certeza onde está essa fronteira. Existem duas soluções: você mesmo fornecer os fatos no prompt ou dar ao modelo os meios de buscá-los por conta própria ao responder. A busca é a forma geral da segunda solução e a mais escalável quando as perguntas variam.
A opção óbvia é uma API de pesquisa comercial: uma conta, uma chave, uma cobrança por consulta. O SearXNG é a alternativa auto-hospedada. Você opera a instância, as consultas partem de casa, não há conta e nada é registrado, a menos que você decida fazê-lo. Para uma instalação cuja vantagem é justamente manter os dados em casa, enviar cada pergunta a um serviço de terceiros pela porta dos fundos seria um ponto estranho para encerrar o esforço.
O próprio projeto se apresenta claramente como um metabuscador em que os usuários não são rastreados nem perfilados, e é distribuído sob a licença livre AGPL-3.0. É uma licença copyleft forte: redistribuir uma versão modificada, inclusive como serviço on-line, obriga a republicar o código-fonte correspondente sob os mesmos termos. Para uso pessoal ou interno de uma equipe, essa cláusula nunca se aplica: ela diz respeito apenas à redistribuição de uma versão modificada a terceiros, não ao simples fato de executar a instância em casa ou na empresa.
#O que o SearXNG faz, sem mágica
Seu ChatGPT privado e gratuito na sua máquina em 1 hora — LM Studio, Ollama, Open WebUI, seus documentos, sem nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
O SearXNG não rastreia a web e não possui nenhum índice. É um intermediário: sua consulta é enviada a um conjunto configurável de mecanismos de busca existentes; as respostas retornam, têm as duplicatas removidas e são reordenadas, e você recebe uma lista única. Os mecanismos consultados não veem seu endereço IP, mas o da instância.
Esse papel de intermediário também explica a promessa de privacidade destacada pelo próprio projeto: a instância não rastreia os usuários nem cria perfis deles. Nenhuma conta, nenhum cookie de rastreamento publicitário, nenhum histórico de pesquisa associado a uma identidade — o que distingue claramente o SearXNG dos mecanismos de busca comerciais cujo modelo de negócios se baseia justamente na criação desses perfis a partir das consultas e dos cliques ao longo do tempo.
- A qualidade é herdada
- Desative os mecanismos que retornam ruído para o seu uso específico: isso melhora as respostas do modelo mais do que qualquer ajuste de prompt, porque o modelo não consegue compensar um contexto inicial já contaminado.
- A automação parece um abuso
- Uma pessoa faz algumas pesquisas por minuto; um loop de agente faz dezenas. Os mecanismos de busca consultados respondem com captchas e bloqueios temporários, que aparecem para você como resultados vazios.
Essa forte dependência dos mecanismos de busca dos quais recebe resultados é a principal contrapartida de qualquer metabuscador: o SearXNG não pode ser melhor do que aquilo que agrega e também herda suas falhas e mudanças. Um mecanismo que muda sua marcação HTML de um dia para o outro faz o módulo correspondente no SearXNG parar de funcionar até que os mantenedores o atualizem. Isso explica por que, em uma instância que permanece sem atualizações por muito tempo, alguns mecanismos deixam silenciosamente de responder, sem uma mensagem de erro explícita.
#L'installer
- 01Implantar o contêinerA imagem oficial está publicada no Docker Hub (searxng/searxng) e no GHCR (ghcr.io/searxng/searxng), ambas mantidas pelo próprio projeto. Em uma única máquina, a imagem e um serviço de cache Valkey (o fork open source do Redis) são mais do que suficientes para começar.
- 02Mantê-lo na rede localUma instância aberta na internet é encontrada em poucos dias e usada como intermediário gratuito, o que leva os mecanismos de busca consultados a bloquear o acesso dela. Vincule a instância à rede local ou proteja o acesso com autenticação.
- 03Verificar a partir da máquina que fará a chamadaNão pelo seu navegador. Um contêiner que chama outro precisa do endereço acessível a partir do Docker, não de localhost.
#O ajuste que todo mundo deixa passar
Por padrão, uma instância recém-instalada do SearXNG serve apenas HTML: perfeito para um humano, totalmente inutilizável para um programa. A documentação oficial confirma que a chave search.formats de settings.yml contém apenas "html" por padrão, embora csv, json e rss estejam disponíveis; é necessário adicionar json a essa configuração e depois reiniciar. Essa é a única causa da grande maioria dos casos de "não funciona" encontrados ao conectar o SearXNG a uma interface de chat.
#Conectá-lo ao seu modelo
| Ambiente | Papel do SearXNG |
|---|---|
| Interface web de chat local | Provedor de pesquisa integrado: você informa a URL da instância, e as respostas passam a incluir uma lista de fontes |
| Framework de agentes | Uma ferramenta de pesquisa que o agente pode chamar |
| Pipeline de pesquisa documental | Etapa de recuperação para perguntas sobre atualidades, junto ao índice dos seus documentos |
| Ferramenta de automação | Uma simples chamada HTTP para o ponto de acesso JSON |
O padrão é sempre o mesmo: a pesquisa retorna trechos e endereços, seu código ou sua interface seleciona alguns deles, e eles são inseridos no prompt antes que o modelo responda à pergunta feita. O modelo não navega: ele lê o que lhe é apresentado. Por isso, a qualidade dos trechos e o tamanho da janela de contexto têm mais peso aqui do que o tamanho do modelo.
#As configurações que realmente fazem diferença
Uma instância recém-instalada ativa por padrão um grande número de motores, o que parece generoso, mas reduz a qualidade: mais ruído, mais duplicatas e mais latência enquanto se espera que o motor mais lento do grupo retorne sua resposta. A primeira melhoria de fato nunca envolve alterar o prompt do modelo, mas sim a lista de motores ativos e sua relevância real para o uso pretendido.
- Desativar os mecanismos de busca irrelevantes
- Um uso centrado em documentação técnica, por exemplo, não precisa dos motores de busca de imagens ou de compras ativados por padrão. Cada motor a menos significa uma fonte de ruído a menos e uma requisição a menos aos serviços de origem para gerenciar no dia a dia.
- Ativar o cache
- Uma base Valkey compartilhada evita refazer uma pesquisa idêntica a cada chamada de um agente que repete a mesma pergunta em um loop, economizando tanto tempo de resposta quanto a preciosa cota de uso dos mecanismos de busca consultados.
- Definir um limite de resultados
- Pedir dez resultados quando o modelo só vai ler três desperdiça muito espaço de contexto e aumenta a latência sem nenhum benefício concreto. Ajuste o número de resultados retornados ao que seu prompt realmente utiliza depois, nem mais nem menos.
- Monitorar os logs na inicialização
- Uma instância recentemente atualizada para Valkey pode falhar silenciosamente se o nome do host ainda apontar para um antigo serviço de cache. Uma rápida olhada nos logs do contêiner evita procurar em outro lugar um problema que está ali.
- Instalar Open WebUI, a interface que consome esses resultados
- Automatizar sequências com n8n e Ollama
- Arquitetura de um agente local que usa ferramentas
- LiteLLM: um proxy unificado local e em nuvem
#Limites a considerar
- As cotas dos mecanismos
- Resultados vazios quase sempre significam um bloqueio upstream, não um erro de configuração no próprio SearXNG. Menos mecanismos ativos, mais cache Valkey e, sobretudo, nenhum agente pesquisando em loop sem qualquer limite de frequência.
- Trechos curtos
- Para obter conteúdo aprofundado, é necessário recuperar e limpar as páginas acessadas pelos links: esse é o trabalho de um extrator especializado, não de um mecanismo de busca que apenas repassa resultados já resumidos em uma etapa anterior.
- Nenhum ranqueamento inteligente
- O SearXNG combina resultados, mas não entende sua pergunta. Uma consulta vaga retorna um contexto vago, que o modelo resume diligentemente sem nunca indicar que a pergunta feita estava mal formulada.
- A manutenção fica por sua conta
- Os mecanismos de busca consultados alteram suas páginas, e os módulos precisam acompanhar essas mudanças. Uma instância que fica um ano sem atualização se degrada silenciosamente.
- A migração para Valkey diz respeito às instâncias antigas
- Uma instância configurada há mais de um ano talvez ainda faça referência a um antigo serviço de cache. Verifique o nome do host configurado para o limitador: se ele não corresponder ao contêiner realmente iniciado hoje, a proteção contra robôs falhará silenciosamente em vez de bloquear adequadamente os abusos.
#FAQ
O SearXNG é gratuito?+
Por que minha instância retorna HTML em vez de JSON?+
Posso usar uma instância pública em vez de hospedar a minha?+
É necessária uma GPU?+
Por que os resultados ficam vazios depois de algum tempo?+
Isso deixa meu modelo atualizado?+
O que a licença AGPL-3.0 do SearXNG muda para mim?+
- Fonte: repositório GitHub do SearXNG
- Fonte: guia oficial de instalação em contêiner
- Fonte: documentação dos formatos de resultados
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.