RAG local con Ollama sin programar (Open WebUI, AnythingLLM)
Hacer RAG local con Ollama significa hacer preguntas a un LLM autoalojado y hacer que lea tus propios documentos, sin enviar ni una línea a la nube. Dos herramientas gratuitas permiten montarlo sin programar: Open WebUI (interfaz similar a ChatGPT con una base de conocimientos integrada) y AnythingLLM (espacios de trabajo + citas). Esta guía explica todo el proceso en 10 minutos, incluso en un equipo pequeño sin GPU.
#¿Por qué un RAG local con Ollama?
Un RAG (Retrieval-Augmented Generation) responde a una limitación simple de los LLM: solo conocen sus datos de entrenamiento. El RAG los conecta con tus documentos: PDF de procedimientos internos, notas en Markdown, exportaciones de correos, contratos, manuales —todo lo que no sea público ni reciente—. El modelo lee los pasajes pertinentes antes de responder y cita sus fuentes si la herramienta lo permite.
La versión en la nube (ChatGPT, Claude, Gemini) exige subir tus documentos a servidores externos. Para un bufete de abogados, un médico, un contador o incluso un particular que no quiere que sus notas personales vayan a Estados Unidos, es inaceptable. Un RAG local Ollama soluciona este problema: todo permanece en tu máquina y mantienes el control de los costos (cero) y de la confidencialidad.
- Confidencialidad total
- Tus documentos nunca abandonan la máquina. Ningún token se envía a un proveedor.
- Coste marginal nulo
- Sin suscripción, sin cuota de API. Pagas la electricidad, punto.
- Offline
- Una vez descargado el modelo, el RAG funciona sin conexión a internet.
- Personalizable
- Tú eliges el modelo de respuesta, el modelo de embeddings y las fuentes.
#¿Ollama permite hacer RAG de forma nativa?
Tu IA lee tus documentos sin una línea de código. Queda la verdadera pregunta: ¿responde correctamente? El kit RAG Local parte de ahí (cap. 1), lleva Open WebUI y AnythingLLM a un uso avanzado (cap. 13) y te enseña a medir las respuestas falsas y las citas inventadas (cap. 14).
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
Respuesta clara: no. Ollama es un motor de inferencia — descarga y ejecuta LLM, expone una API compatible con OpenAI en http://localhost:11434, pero no sabe indexar tus documentos por sí solo. No tiene base de datos vectorial, ni herramienta para dividir PDF en fragmentos, ni interfaz para arrastrar y soltar archivos.
En cambio, puede servir un modelo de generación y un modelo de embeddings en paralelo: es todo lo que se necesita para que una herramienta de terceros (Open WebUI, AnythingLLM, LangChain…) construya un RAG sobre él. Cuando hablamos de RAG local con Ollama, hablamos, por tanto, siempre de una combinación de Ollama + interfaz RAG.
#Prerrequisitos
- Ollama instalado
- En Windows, macOS o Linux. Escucha por defecto en http://localhost:11434.
- Un modelo de respuesta
- Granite 4.2 8B o Qwen 3.5 9B en Q4_K_M. Prever aproximadamente entre 5 y 7 GB de VRAM o RAM.
- Un modelo de embeddings
- nomic-embed-text o mxbai-embed-large. ~300 MB. Esencial para vectorizar documentos.
- Docker (opción Open WebUI)
- Docker Desktop en Windows/macOS, o docker.io en Linux. Este es el modo de instalación recomendado.
- Espacio en disco
- 10 GB mínimo para el modelo LLM + embeddings + el índice vectorial de tus documentos.
#1. Open WebUI : base de conocimientos integrada
Open WebUI (antes Ollama WebUI) es la interfaz similar a ChatGPT más popular para Ollama. Su función Knowledge (base de conocimientos) permite subir documentos y hacer preguntas sobre ellos mediante RAG, sin necesidad de configurar nada en el código.
- 01Iniciar Open WebUI en DockerEn un terminal: docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main. En sistemas nativos de Linux, reemplazar host.docker.internal por localhost si ejecutas Ollama fuera de Docker.
- 02Abrir la interfazIr a http://localhost:3000. Crear una cuenta de administrador (la primera cuenta es de administrador por defecto). Open WebUI detecta automáticamente Ollama en localhost:11434.
- 03Crear una base de conocimientosIr a Workspace → Knowledge → + Create a Knowledge Base. Darle un nombre (por ejemplo: 'Contratos de clientes'). Es tu contenedor vectorial.
- 04Importar tus documentosHacer clic en el + en la esquina superior derecha de la base y luego subir tus archivos PDF, .docx, .md y .txt. Open WebUI los divide y calcula los embeddings en segundo plano.
- 05Configurar el modelo de embeddingsSettings (admin) → Documents → Embedding Model Engine = Ollama, Embedding Model = nomic-embed-text. Guardar. De lo contrario, Open WebUI utiliza un modelo predeterminado menos adecuado para el francés.
- 06Consultar la baseEn un nuevo chat, escribir # seguido del nombre de la base de conocimientos para adjuntarla. Plantear la pregunta: la respuesta se genera a partir de los fragmentos pertinentes, con números de cita en los que se puede hacer clic.
#2. AnythingLLM: workspaces y citas
AnythingLLM es la alternativa más completa a Open WebUI en el ámbito del RAG. Mientras que Open WebUI es generalista, AnythingLLM está diseñado en torno a la idea de workspace: cada proyecto tiene su propia base documental, su propio modelo y su propio historial. Ideal cuando quieres separar 'Contratos de clientes' de 'Notas personales' de 'Documentación técnica'.
- 01Instalar AnythingLLMDescargar el instalador de escritorio en useanything.com para Windows, macOS o Linux. Es una aplicación Electron: no se necesita Docker para la versión de escritorio.
- 02Elegir Ollama como proveedor de LLMAl iniciarlo por primera vez, el asistente pregunta qué LLM utilizar. Seleccionar Ollama, indicar la URL http://localhost:11434 y elegir qwen3.5:9b en la lista que se carga automáticamente.
- 03Elegir el motor de embeddingsPaso siguiente: Embedder. Seleccionar Ollama y el modelo nomic-embed-text. AnythingLLM también puede usar su embedder local integrado si no has descargado nomic-embed-text: ofrece menor calidad, pero no requiere configuración.
- 04Crear un workspaceEn la barra lateral: + New Workspace. Darle un nombre. Hacer clic en él y luego en el icono de subida para arrastrar tus PDF, .docx, .csv, .epub, URL o incluso vídeos de YouTube (transcripción automática).
- 05Mover documentos → espacio de trabajoAnythingLLM separa la ingestión (documentos listados a la izquierda) del uso (espacio de trabajo a la derecha). Seleccionar los documentos, hacer clic en 'Move to Workspace' y luego en 'Save and Embed'. Es en ese momento cuando se calculan los embeddings mediante Ollama.
- 06Hablar con citasEn el workspace, plantear la pregunta. Cada respuesta incluye un panel desplegable llamado Citations que muestra exactamente qué chunks se utilizaron. Muy útil para verificar que el modelo no haya inventado información.
- Open WebUI
- Mejor si quieres una interfaz generalista similar a ChatGPT, multiusuario (equipo), con acceso web. El RAG es una función entre otras.
- AnythingLLM
- Mejor si el RAG es el uso principal: espacios de trabajo estrictamente delimitados, citas bien hechas, compatibilidad con más formatos (URL, YouTube, GitHub), agentes integrados.
#3. ¿Qué modelo de embeddings elegir?
El modelo de embeddings es el elemento que muchos pasan por alto. Es el que transforma tus documentos en vectores: su calidad condiciona directamente la relevancia de los pasajes recuperados. Con documentos en francés, algunos modelos son claramente mejores que otros.
- nomic-embed-text (137M, 274 MB)
- La opción recomendada por defecto. Rápido, con un rendimiento multilingüe aceptable y un contexto de 8192 tokens. Muy buen equilibrio para comenzar. Disponible directamente: ollama pull nomic-embed-text.
- mxbai-embed-large (335M, 670 MB)
- Más preciso que nomic, ligeramente más lento. Principalmente para inglés, pero también se desenvuelve en francés con documentos estándar. Preferible si la calidad prima sobre la velocidad. ollama pull mxbai-embed-large.
- bge-m3 (567M, 1.2 GB)
- Excelente para tareas multilingües (más de 100 idiomas, incluido el francés con soporte nativo), contexto de 8192. Más pesado. Disponible en Hugging Face, importable en Ollama mediante Modelfile.
- snowflake-arctic-embed
- Buen rendimiento multilingüe, más ligero que bge-m3. Buena alternativa si bge-m3 es demasiado pesado.
#4. RAG local con 4 GB de RAM, sin GPU
Sí, es factible. El RAG consume menos recursos de lo que se suele pensar: la mayor parte del trabajo (los embeddings) se realiza de forma puntual durante la ingesta y, al usarlo, el LLM simplemente responde con unos miles de tokens adicionales de contexto. En una máquina pequeña, los compromisos se centran sobre todo en el LLM que genera la respuesta.
- 4 GB de RAM, CPU lento (antiguo portátil)
- LLM: qwen3.5:2b o granite4.2:3b en Q4_K_M (~2 GB). Embeddings: nomic-embed-text. Respuestas lentas pero legibles (3-5 tok/s). El contexto del LLM pasa a 2048 para quedarse bajo el umbral de RAM.
- 8 GB de RAM, CPU reciente (i5/Ryzen 5)
- LLM: qwen3.5:4b Q4 (~3.4 GB) o gemma4:e2b-it-qat. Embeddings: nomic-embed-text. ~6-10 tok/s. Es la configuración que «no está nada mal» sin GPU.
- 16 GB de RAM, sin GPU
- LLM: granite4.2:8b o qwen3.5:9b Q4 (~5-7 GB). Embeddings: nomic o mxbai. ~4-8 tok/s usando solo la CPU en un Ryzen 7 o i7 reciente.
#Solución de problemas
- El modelo 'no ve' mis documentos
- Comprueba que la base de conocimientos esté bien asociada al chat (Open WebUI: comando #, AnythingLLM: icono workspace). Comprueba también que se hayan generado los embeddings de los documentos, no solo que se hayan subido.
- Respuestas muy lentas en modelos pequeños
- El RAG agrega entre 1000 y 3000 tokens al contexto. Reduce el top-k (3-5 fragmentos en lugar de 10) en los ajustes de RAG, y reduce el num_ctx del LLM a 2048 o 4096.
- Alucinaciones a pesar de los documentos
- Aumenta el top-k, verifica que el modelo de embedding sea el mismo que el que indexó (cambiar de modelo invalida la base). Activa las citas para ver exactamente lo que leyó el LLM.
- Open WebUI no ve Ollama
- En Docker, usa --add-host=host.docker.internal:host-gateway y luego, en Settings → Connections, introduce http://host.docker.internal:11434 como URL de Ollama.
- AnythingLLM se bloquea al generar los embeddings
- A menudo se debe a la falta de RAM. Cierra otras aplicaciones, divide la importación en partes o pasa a un modelo de embeddings más ligero (nomic en lugar de bge-m3).
#Para ir más allá
Una vez que tengas listo tu RAG local con Ollama, estas guías son los siguientes pasos naturales para profundizar:
- RAG local: introducción
- La guía conceptual que explica lo que sucede bajo el capó (chunking, embeddings, retrieval), útil para entender por qué funciona o no.
- Los mejores modelos de embeddings en francés
- Comparativa detallada de BGE, E5 y Solon para contenido en francés — cuándo cambiar de nomic-embed-text.
- Open WebUI con Ollama: guía completa
- Para ir más allá del RAG en Open WebUI: múltiples usuarios, perfiles, prompts personalizados, pipelines.
- Ejecutar un LLM sin GPU
- Guía detallada para usar solo la CPU, con pruebas de rendimiento en tokens/segundo por CPU, si quieres optimizar tu configuración RAG sin tarjeta gráfica.
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.