Autoalojamiento

Construye una pila de búsqueda con IA privada usando SearXNG y LLMs locales

Un nuevo proyecto de código abierto combina la metabúsqueda de SearXNG con Ollama para ofrecer respuestas de IA citadas sin enviar consultas a servidores externos.

Ilustración de un servidor de IA local seguro con escudos protectores
Ilustración creada para este artículo

Traducido automáticamente del original en inglés.

Un desarrollador ha lanzado PrivaSearch, una herramienta de código abierto que sintetiza resultados de búsquedas web en respuestas generadas por IA manteniendo todos los datos locales. Publicado el 8 de noviembre de 2026, el proyecto utiliza SearXNG para la metabúsqueda y Ollama para la inferencia de modelos de lenguaje grandes (LLM), garantizando que las consultas de los usuarios nunca abandonen el entorno autoalojado.

Qué ocurrió

PrivaSearch está construido como una pila Docker de cuatro contenedores que se ejecuta en una única red interna. La arquitectura aísla el frontend, que sirve una interfaz React mediante nginx, de los componentes del backend. La capa API, escrita en Node.js y Express, orquesta la comunicación entre la interfaz de usuario, el motor de metabúsqueda SearXNG y el LLM local servido por Ollama. Solo el frontend expone un puerto host, típicamente el 8080, mientras que los demás servicios permanecen inaccesibles desde fuera de la red Docker.

El sistema separa el proceso de búsqueda de la generación de respuestas. Cuando un usuario envía una consulta, el navegador solicita primero resultados paginados de SearXNG. Luego, envía los mejores resultados a la API, que construye un prompt para el LLM local. El modelo transmite una respuesta sintetizada al cliente, citando fuentes con números entre corchetes. Esta separación permite a los usuarios regenerar respuestas con diferentes cantidades de fuentes sin volver a consultar los motores web.

Para mantener una privacidad estricta, el proyecto minimiza las dependencias y controla la persistencia de datos. La API depende únicamente de Express y de la capacidad fetch integrada de Node. Las consultas y resultados existen solo en la memoria del proceso durante la solicitud y no se almacenan en disco. Los únicos datos persistentes incluyen los pesos del modelo y la configuración de SearXNG. Funciones opcionales como el resumen de páginas y las búsquedas geo-IP están desactivadas por defecto para evitar solicitudes salientes adicionales.

Detalles clave

  • La pila ejecuta cuatro contenedores: frontend (nginx/React), API (Node/Express), SearXNG y Ollama en una red Docker interna.
  • La búsqueda y la generación de respuestas son pasos separados, lo que permite a los usuarios ajustar el número de fuentes sin repetir la búsqueda inicial.
  • El prompt del sistema restringe al LLM a usar solo los resultados proporcionados, citar afirmaciones con [n] y evitar conocimientos externos.
  • La temperatura predeterminada es 0.2 para garantizar consistencia factual, y el modelo permanece residente durante 30 minutos para reducir los tiempos de carga.
  • Túneles opcionales Tor o VPN pueden ocultar la IP del servidor ante los motores de búsqueda upstream, con Gluetun proporcionando un kill switch para la opción VPN.
  • El modelo predeterminado es qwen2.5:1.5b, que requiere aproximadamente 1 GB de RAM y ofrece respuestas rápidas en unos 8 segundos en CPU.

Contexto

La Generación Aumentada por Recuperación (RAG) es una técnica donde un modelo de IA responde preguntas utilizando documentos externos específicos en lugar de solo sus datos de entrenamiento. En esta configuración, SearXNG actúa como motor de recuperación, obteniendo resultados web en vivo. Ollama procesa luego estos resultados para generar un resumen coherente. Al ejecutar ambos componentes localmente, los usuarios evitan enviar términos de búsqueda sensibles a proveedores de IA de terceros.

SearXNG es un motor de metabúsqueda respetuoso con la privacidad que agrega resultados de múltiples proveedores como Google y Bing sin rastrear a los usuarios. Ollama es una herramienta que simplifica la ejecución de modelos de lenguaje grandes en hardware local. Combinarlos permite una experiencia de búsqueda moderna e inteligente pero bajo el control total del usuario, abordando las crecientes preocupaciones sobre filtraciones de datos en servicios de IA basados en la nube.

Por qué importa

Para equipos que autoalojan su infraestructura, mantener la privacidad mientras adoptan herramientas de IA es un desafío significativo. Las APIs públicas de IA a menudo registran consultas para entrenamiento o mejora, lo cual puede violar políticas internas de cumplimiento o exponer información propietaria. PrivaSearch demuestra que es posible obtener respuestas sintetizadas y citadas sin sacrificar la soberanía de datos. Este enfoque es particularmente relevante para organizaciones que manejan datos sensibles de clientes o propiedad intelectual.

La arquitectura también destaca la importancia de las dependencias mínimas en proyectos conscientes de la seguridad. Al confiar en las capacidades integradas de Node y evitar frameworks pesados, se reduce la superficie de ataque. Esto hace que el código sea más fácil de auditar y mantener, un factor crítico para administradores de sistemas que necesitan confiar en el software que despliegan. El manejo explícito de casos límite, como fallos del modelo o resultados vacíos, asegura una experiencia de usuario fiable incluso cuando los componentes están bajo estrés.

Además, las funciones de túnel opcionales abordan la brecha de privacidad de metadatos. Incluso si el contenido de la consulta es seguro, la dirección IP que realiza la solicitud puede revelar la identidad organizacional. Enrutar el tráfico a través de Tor o una VPN con un kill switch asegura que los motores upstream vean solo tráfico anónimo. Este nivel de detalle muestra una comprensión madura de las amenazas a la privacidad más allá del simple cifrado de contenido.

Qué puedes hacer

  • Despliega la pila usando Docker Compose ejecutando npm run setup y docker compose up -d para probar el flujo de trabajo de búsqueda con IA local.
  • Ajusta la configuración OLLAMA_KEEP_ALIVE para equilibrar la velocidad de respuesta y el uso de memoria según la capacidad de tu servidor.
  • Habilita las opciones Tor o VPN si ocultar la IP de tu servidor ante los motores de búsqueda es un requisito para tu modelo de amenaza.
  • Revisa el archivo prompt.js para entender cómo el sistema restringe al LLM, y modifícalo si necesitas estilos de cita o comportamientos diferentes.
  • Desactiva funciones opcionales como ALLOW_PAGE_FETCH y SHOW_LOCATION en la configuración para asegurar que no ocurran solicitudes salientes inesperadas.
  • Monitorea el uso de recursos al cambiar a modelos más grandes como llama3.1:8b, ya que ofrecen mejores respuestas pero requieren significativamente más potencia de CPU y tiempo.

Más noticias

Todas las noticias