Open WebUI y llama.cpp: cómo configurar búsqueda web local con Qwen y Docker en Windows
Si la búsqueda web en Open WebUI devolvía basura, lo más probable es que el problema no estuviera en la interfaz en sí, sino en la configuración de la cadena…
Procesado por IA desde Habr AI; editado por Hamidun News
Open WebUI puede trabajar con modelos locales a través de llama.cpp e incluso realizar búsquedas web, pero sin configuración manual los resultados suelen ser deficientes. El autor de una guía práctica mostró cómo montar un setup funcional en Windows con Qwen, Docker y modelos separados para embedding y reranking, para que la búsqueda comience a devolver respuestas significativas.
Cómo funciona el setup
La idea básica es simple: llama.cpp ejecuta un servidor local con múltiples modelos GGUF, y Open WebUI actúa como interfaz sobre él. Para generación principal, el autor utiliza dos versiones de un gran modelo Qwen3.
5-27B-UD-Q4_K_XL — con y sin reasoning. Por separado se ejecutan un compacto Qwen3.5-2B para tareas auxiliares, Qwen3-Embedding-4B para vectorización y Qwen3-Reranker-4B para reordenación de resultados de búsqueda.
Este arreglo es necesario porque la búsqueda web en Open WebUI está esencialmente vinculada a un pipeline RAG. Si dejas la configuración estándar, el sistema puede formalmente encontrar páginas, pero extrae mal el significado, pierde fragmentos de texto relevantes y devuelve respuestas débiles. Según el autor, esto es exactamente lo que hacía la búsqueda casi inútil en la configuración predeterminada.
La guía está orientada a hardware bastante específico: Windows 10 22H2, RTX 3090 con 24 GB VRAM y 32 GB de RAM. Incluso en tal máquina, el modelo grande no se carga instantáneamente: la primera respuesta puede tomar hasta un minuto, y cualquier carga paralela extra consume rápidamente la memoria de video.
Configuraciones clave
La idea más importante del artículo es que necesitas configurar no solo el modelo de chat, sino toda la infraestructura a su alrededor. El autor ejecuta modelos en llama-server, y Open WebUI se conecta a través de URL local mediante Docker.
- Modelo principal para respuestas — Qwen3.5-27B-UD-Q4_K_XL, por separado en modo instruct y thinking.
- Modelo auxiliar — Qwen3.5-2B-BF16: genera títulos de chat y realiza tareas menores en segundo plano más rápido que el modelo grande.
- Para búsqueda web, se utilizan separados Qwen3-Embedding-4B-f16 y Qwen3-Reranker-4B-f16.
- Apache Tika se conecta como motor de extracción de contenido, y Open WebUI se ejecuta mediante Docker Compose.
- Brave Search se elige como proveedor de búsqueda; el autor también menciona Exa, Tavily, Serper, Linkup y Valyu.
Un matiz separado son los parámetros de llama.cpp. En la configuración, el autor deshabilita mmap, limita el número de modelos cargados simultáneamente mediante `--models-max 1`, configura la descarga de VRAM por timeout y divide el contexto entre solicitudes paralelas. Esto no es cosmético: si cargas un segundo modelo pesado simultáneamente con el principal, el rendimiento cae drásticamente.
En la interfaz Open WebUI también hay lugares críticos. En el panel de administración, necesitas explícitamente especificar la URL del servidor local de modelos, luego seleccionar un modelo pequeño para tareas locales y externas de la interfaz, y en la sección Documents conectar Tika, el modelo de embedding y un endpoint de rerank externo. Solo después de esto la búsqueda web comienza a funcionar como una cadena completa, no como un envoltorio formal sobre una consulta de navegador.
Limitaciones y matices
Incluso después de la configuración, tal esquema no transforma el stack local en un reemplazo para servicios en nube pagos. El autor explícitamente afirma que el resultado aún no se compara con soluciones propietarias, pero puede ser suficiente si la privacidad, la operación offline o la capacidad de ejecutar modelos sin restricciones sin APIs externas es importante.
También hay compromisos prácticos. Si especificas un modelo de reasoning para tareas auxiliares de la interfaz, Open WebUI comienza a gastar demasiado tiempo incluso en generar un título de chat. Con búsqueda web, los modelos de embedding y reranking se cargan adicionalmente, por lo que la carga de VRAM y las latencias crecen aún más. Para verificar qué se carga actualmente, el autor recomienda verificar los logs de llama-server.
El artículo contiene también varias extensiones para quienes quieran ir más allá. En lugar de Tika, puedes intentar Docling para documentos más complejos. SearXNG es apropiado para un motor de búsqueda local, aunque sus backends pueden ser temporalmente bloqueados. El cargador web basado en Playwright funcionó para el autor, pero era demasiado lento — la latencia se medía en minutos, no segundos. Posteriormente también redujo el contexto del modelo principal a 32768 tokens: esto ayudó a eliminar cuelgues cuando la pestaña de chat estaba abierta, porque el modelo dejó de ocupar más VRAM libre de la que el sistema podía soportar de manera estable.
Qué significa esto
El material demuestra bien que un stack de AI local hoy ya puede montarse con componentes abiertos, pero la calidad depende no tanto de un "mejor modelo", sino de la combinación correcta de generación, embedding, reranking y extracción de contenido. Para desarrolladores, esta es una receta práctica: si Open WebUI con búsqueda web funciona mal para ti, debes comenzar no con reemplazar el modelo, sino con reconstruir toda la configuración RAG.
¿Quieres dejar de leer sobre IA y empezar a usarla?
AI News es un feed curado de noticias de IA. Hamidun Academy te enseña a usar la IA en tu trabajo.