Curso
Una duda habitual en el mundo de la IA autoalojada es cómo chatear con documentos privados sin enviarlos a una API en la nube.
AnythingLLM es una de las respuestas más populares. Se encarga de todo (subida de documentos, embedding, búsqueda y chat) en una sola interfaz y conecta con una gran variedad de proveedores de LLM. Te permite crear flujos de IA privados sin depender de servicios en la nube.
En esta guía, te explicaré qué es AnythingLLM, revisaré su arquitectura, te mostraré cómo instalarlo con Docker y Ollama y te enseñaré una pipeline de Retrieval-Augmented Generation (RAG) en funcionamiento. También lo compararé con Open WebUI y ChatGPT.
¿Qué es AnythingLLM?
AnythingLLM es una aplicación de código abierto creada por Mintplex Labs bajo licencia MIT. Tiene una comunidad activa en GitHub, lanzamientos frecuentes y es muy utilizada en el ecosistema de IA autoalojada.
¿Qué hace? Convierte tus documentos en contexto que un large language model (LLM) puede usar durante las conversaciones. Subes archivos, el sistema los procesa y los guarda, y luego el LLM puede responder preguntas basándose en tus datos. El proyecto ha crecido rápido, con una comunidad activa en Discord y actualizaciones mensuales que añaden nuevos proveedores de LLM y funciones.
Dos cosas importantes de entrada. Primero, AnythingLLM no es un modelo en sí. Es un puente que te conecta con proveedores externos de LLM, ya sean locales (como Ollama) o en la nube (como OpenAI o Anthropic).
Segundo, la plataforma organiza todo en workspaces. Piensa en ellos como salas separadas para distintos proyectos. Cada workspace tiene sus propios documentos y conversaciones que permanecen aislados salvo que configures explícitamente que compartan.

Interfaz del workspace de AnythingLLM con documentos. Imagen del autor.
AnythingLLM en escritorio vs. Docker
La app de escritorio (macOS, Windows, Linux) está pensada para una sola persona ejecutándolo todo en local. Incluye un motor LLM integrado, un embedder por CPU y LanceDB incluido. Instalación con un clic y sin configuración.
La versión Docker está orientada a equipos y servidores. Añade control de acceso con roles Admin, Manager y Default, además de widgets de chat insertables en webs y white-label. Si necesitas acceso de equipo o widgets públicos, Docker es tu única opción.
|
Función |
Escritorio |
Docker |
|
Soporte multiusuario |
No |
Sí (roles Admin, Manager, Default) |
|
Motor LLM integrado |
Sí |
No (conecta con proveedores externos) |
|
Widgets de chat insertables |
No |
Sí |
|
White-label |
No |
Sí |
|
Complejidad de configuración |
Instalación con un clic |
Requiere conocimientos de Docker |
Funciones clave de AnythingLLM
Ahora que ya sabes qué es AnythingLLM y cómo elegir entre Escritorio y Docker, veamos las funciones que lo hacen útil para flujos de IA basados en documentos.
Ingesta de documentos
Funciona con PDF, DOCX, TXT, Markdown, CSV, XLSX, PPTX, HTML, más de 50 tipos de archivos de código y archivos de audio (usando transcripción con Whisper). También puedes extraer contenido directamente de repos de GitHub, transcripciones de YouTube, páginas de Confluence y sitios web con el scraper integrado.
Base de datos vectorial
LanceDB viene integrado y no requiere configuración. Si necesitas funciones para empresa, puedes cambiar a Chroma, Milvus, Pinecone, Qdrant, Weaviate, Zilliz, AstraDB o PGVector.
Soporte para múltiples LLM
Admite una amplia gama de proveedores, incluidos Ollama, LM Studio, OpenAI, Anthropic, Azure OpenAI, Google Gemini, AWS Bedrock, Groq y DeepSeek. Puedes elegir modelos por workspace, así que un workspace puede usar un modelo local de Ollama para temas sensibles y otro usar GPT-4o a través de OpenAI.
Agentes de IA
Escribe @agent en cualquier chat para activar el creador de agentes sin código. Incluye habilidades integradas para buscar en documentos, resumir y hacer scraping web. Agent Flows te da un lienzo visual para encadenar llamadas a APIs, instrucciones al LLM y operaciones con archivos. También admite Model Context Protocol (MCP) para conectar herramientas externas.
Acceso por API
La API para desarrolladores está en /api/docs (documentación Swagger). Puedes gestionar workspaces, hacer embedding de documentos y enviar mensajes de chat de forma programática.
Cómo funciona AnythingLLM (visión de la arquitectura)
La aplicación tiene tres partes: el frontend (React/ViteJS) te da la interfaz con la que interactúas. El servidor (backend en Express) gestiona todas las interacciones con LLM, el trabajo con la base de datos vectorial y las peticiones a la API. Usa SQLite para almacenar la configuración. El collector es un servicio aparte que analiza y procesa los documentos que subes. Cuando subes un PDF, el collector extrae el texto, y luego el servidor trocea, hace embedding y lo guarda.
La pipeline RAG
La pipeline funciona en dos fases.
Ingesta: Tus documentos van al collector, que extrae el texto. El servidor divide ese texto en fragmentos (hasta 1.000 caracteres con un pequeño solapamiento para mantener el contexto). Cada fragmento se convierte en un vector mediante el modelo de embeddings y luego se guarda en la base de datos vectorial. Una carpeta vector-cache/ reduce re-embeddings innecesarios en muchos casos.
Consulta: Tu pregunta se convierte en un vector usando el mismo modelo de embeddings. Luego el sistema busca los fragmentos más similares (normalmente entre cuatro y seis). Tras filtrar por puntuación de similitud, el texto coincidente se añade al prompt del LLM junto con tu pregunta y el historial del chat. El LLM lee todo (instrucciones del sistema, contexto recuperado, tu pregunta y mensajes previos) y genera la respuesta.

Vista general de la arquitectura RAG de AnythingLLM. Imagen del autor.
Instalar AnythingLLM con Docker
Como verás en las preguntas frecuentes, AnythingLLM es ligero: alrededor de 2 GB de RAM, una CPU de 2 núcleos y unos 5 GB de almacenamiento. Ejecutar un LLM local a la vez requiere más (un modelo de 7B suele necesitar 8 GB o más de RAM/VRAM). Para este tutorial uso un modelo de 3B que funciona en hardware limitado. Asegúrate de tener Docker instalado y en ejecución antes de empezar. En Windows también necesitas WSL.
Paso 1: instala Ollama y descarga modelos
Descarga Ollama desde ollama.com/download y luego descarga un modelo de chat y uno de embeddings:
ollama pull llama3.2:3b
ollama pull nomic-embed-text
ollama serve
Uso llama3.2:3b porque va bien en máquinas con VRAM limitada (como una RTX 3050 con 6 GB). Para más calidad, prueba llama3.2:8b o deepseek-r1:7b si tu hardware lo permite. Consulta nuestra guía sobre ejecutar LLMs en local para ver más opciones de modelos.
Paso 2: crea el archivo Docker Compose
mkdir anythingllm-setup && cd anythingllm-setup
touch .env
Crea docker-compose.yml:
services:
anythingllm:
image: mintplexlabs/anythingllm:latest
container_name: anythingllm
ports:
- "3001:3001"
cap_add:
- SYS_ADMIN
volumes:
- anythingllm_storage:/app/server/storage
- ./.env:/app/server/.env
environment:
- STORAGE_DIR=/app/server/storage
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
volumes:
anythingllm_storage:
Algunas notas sobre esta configuración. La marca cap_add: SYS_ADMIN es necesaria para el scraper web integrado de PuppeteerJS, que usa un navegador Chromium en sandbox.
La línea extra_hosts soluciona el problema de red más común en Docker: permite que el contenedor alcance Ollama ejecutándose en tu máquina host. Sin esto, cualquier intento de conectar a localhost:11434 desde dentro del contenedor fallará porque los contenedores Docker tienen su propio espacio de red.
Uso un volumen con nombre de Docker (anythingllm_storage) en lugar de un bind mount por una mejor compatibilidad multiplataforma, especialmente en Windows y macOS, donde los permisos de bind mount pueden dar problemas.
Paso 3: lanza y configura
Espera unos 30 segundos a que el contenedor se inicialice y abre http://localhost:3001. Verás el asistente de primera ejecución. Pero primero, ejecuta este comando:
docker compose up -d

Asistente de configuración inicial de AnythingLLM en Docker. Imagen del autor.
Durante el asistente, selecciona Ollama tanto como proveedor de LLM como de embeddings, define la URL base como http://host.docker.internal:11434, elige llama3.2:3b como modelo de chat y nomic-embed-text como embedder. Mantén LanceDB como base de datos vectorial por defecto.
Como alternativa en Escritorio, descarga la app desde anythingllm.com. Viene con todo incluido y funciona al instante sin configuración. Ideal para uso personal, pero, como comentábamos, no tiene las funciones multiusuario y de empresa que ofrece Docker.
Conectar proveedores de LLM
Además de Ollama, puedes conectar proveedores en la nube desde Settings (como menciono en la primera FAQ, esto es útil si tu hardware es limitado).
OpenAI
Elige OpenAI como proveedor de LLM, introduce tu clave de API desde platform.openai.com y elige un modelo (GPT-4o, GPT-4o-mini, etc.). Tu cuenta debe tener facturación configurada o no funcionará (y el mensaje de error no será claro).
Anthropic
Introduce tu clave desde console.anthropic.com. Todos los modelos Claude sirven para chat, pero Anthropic no tiene modelos de embeddings, así que seguirás necesitando un embedder aparte como nomic-embed-text de Ollama.
Configuración de Ollama
Si configuraste Ollama durante la instalación como mostré arriba, ya lo tienes listo. Para otros escenarios, usa http://host.docker.internal:11434 en Windows/macOS, o http://172.17.0.1:11434 en Linux. Si Ollama no es accesible, define OLLAMA_HOST=0.0.0.0:11434 antes de iniciarlo.
Usar AnythingLLM para chatear con documentos
Haz clic en "New Workspace" en la barra lateral y ponle nombre. Sube archivos con el botón de subida de la barra lateral o arrastrando y soltando.
AnythingLLM admite dos modos de documentos. Adjuntar (arrastrar al chat) introduce el texto completo en la conversación, pero solo en ese hilo. El modelo lo ve todo, pero estás limitado por la capacidad de tokens. Hacer embedding (el enfoque RAG estándar) trocea el documento, lo convierte en vectores y lo guarda en el workspace. Una vez con embeddings, los documentos funcionan en todos tus chats de ese workspace. En la mayoría de casos, el embedding es la mejor opción. Haz clic en "Move to Workspace" para iniciar el proceso de embedding.
Ajustar la calidad de la recuperación
Escribe tu pregunta y el sistema busca automáticamente los fragmentos relevantes y se los envía al LLM. Si las respuestas no son buenas, aquí tienes los ajustes clave:
Umbral de similitud
Como comento en la FAQ 5, empieza con "No Restriction" si tienes problemas y súbelo poco a poco para filtrar ruido.
Máximo de fragmentos de contexto
Por defecto son entre cuatro y seis fragmentos. Sube a 10 o 12 para modelos con ventanas de contexto amplias como Claude.
Preferencia de búsqueda
"Accuracy Optimized" en LanceDB activa el reranking, que mejora resultados pero puede añadir latencia según el modelo y el hardware.
Fijado de documentos
Fija documentos críticos para saltarte el troceado. El texto completo se añade a cada consulta (siempre que quepa en los límites de tokens).
AnythingLLM vs. Open WebUI
Ambas herramientas son sólidas, pero están pensadas para distintos usuarios.
|
Dimensión |
AnythingLLM |
Open WebUI |
|
Público principal |
Usuarios de negocio, equipos pequeños |
Desarrolladores, perfiles técnicos |
|
App de escritorio |
Sí (macOS, Windows, Linux) |
No (solo web) |
|
Complejidad de instalación |
Escritorio: un clic; Docker: directa |
Requiere Docker o servidor |
|
Implementación RAG |
Integrada, soporte multi base vectorial, reranking |
RAG extensa, extensibilidad vía plugins |
|
Multiusuario |
Solo Docker; tres roles RBAC |
Funciones de colaboración limitadas |
|
Ecosistema de plugins |
En crecimiento; skills a medida con Node.js |
Más maduro y amplio |
|
Licencia |
MIT |
BSD-3-Clause modificada con protección de marca desde v0.6.6 |
AnythingLLM suele encajar con equipos que priorizan la gestión de workspaces y los widgets insertables, mientras que Open WebUI suele encajar con quienes quieren un ecosistema de plugins mayor y más extensibilidad orientada a desarrolladores. Algunos equipos usan ambos: Open WebUI para devs que quieren control fino y AnythingLLM para usuarios de negocio que necesitan workspaces de documentos rápidos.
AnythingLLM vs. ChatGPT
Esta comparativa va de prioridades, no de qué herramienta es "mejor".
|
Dimensión |
AnythingLLM |
ChatGPT |
|
Privacidad de datos |
Propiedad total con modelos locales |
Datos enviados a los servidores de OpenAI |
|
Coste |
Gratis (autoalojado); nube desde 50 $/mes |
Plan gratuito; Plus 20 $/mes; Pro 200 $/mes |
|
Personalización |
Cualquier LLM, embedder, base vectorial, agentes |
Limitado a modelos de OpenAI |
|
Capacidad sin conexión |
Sí (con modelos locales) |
No |
|
Esfuerzo de puesta en marcha |
Requiere instalación |
Cero configuración, en el navegador |
|
Chat con documentos |
Control RAG completo (umbrales, troceado, reranking) |
Subida de archivos con límites de uso |
ChatGPT prioriza una experiencia totalmente alojada y una gran calidad de modelo por defecto, mientras que AnythingLLM prioriza la privacidad, la flexibilidad y el control de la configuración RAG. También puedes conectar GPT-4o a AnythingLLM vía la API de OpenAI. Así obtienes la calidad de ChatGPT con las funciones de workspace y RAG de AnythingLLM.
Casos de uso de AnythingLLM
Dónde mejor encaja AnythingLLM:
Bases de conocimiento internas
Tu equipo puede preguntar sobre documentos de la empresa sin rebuscar en carpetas. Sube políticas, procedimientos y documentación, y deja que la gente busque en lenguaje natural.
Flujos de investigación
Académicos pueden buscar al instante entre cientos de artículos. Haz embedding de tu biblioteca de investigación y encuentra resultados relevantes sin búsquedas por palabras clave.
Despliegues privados en empresa
Equipos de salud, finanzas y legal pueden usar IA manteniendo todos los datos en sus propios servidores. Muy común en sectores regulados donde los datos deben permanecer on‑premises.
Pruebas para desarrolladores
Prueba distintos LLM (Ollama, OpenAI, Claude) sobre los mismos documentos cambiando de modelo por workspace. Sin cambios de infraestructura.
Widgets de chat para clientes
Inserta un chat en tu web con Docker. Configura listas de dominios permitidos y límites por sesión para uso público.
Transcripción de reuniones
La función Meeting Assistant funciona como las herramientas de notas en la nube pero en local. Requiere unos 16 GB de RAM para ir fluido.
Limitaciones
Como ya comentamos, Escritorio y Docker tienen funciones diferentes, lo que puede confundir a quien empieza.
La calidad de RAG necesita ajuste (he cubierto los principales parámetros) porque la búsqueda por similitud es matemática y no comprende realmente el significado.
El sistema de plugins es más pequeño que el de Open WebUI, y crear skills de agente a medida requiere conocimientos de Node.js.
Por último, no hay fine-tuning integrado. Solo puedes personalizar con prompts del sistema, temperatura y límites de tokens.
Seguridad y privacidad en AnythingLLM
El despliegue local mantiene todos los datos en tu dispositivo. (Doy más detalles en la tercera FAQ más abajo). Cuando usas proveedores en la nube, solo se envían los prompts y el contexto recuperado durante la inferencia. Los vectores y embeddings permanecen en tu servidor. Decide con cuidado qué workspaces usan modelos en la nube y cuáles locales.
La versión Docker incluye Simple SSO mediante SIMPLE_SSO_ENABLED, que crea tokens de acceso temporales. Las claves de API dan acceso total sin permisos granulares, así que trátalas como contraseñas de admin y cámbialas con regularidad. Si expones AnythingLLM a internet, pon delante un proxy inverso Nginx con SSL (la app no gestiona HTTPS por sí sola). Puedes desactivar la telemetría con DISABLE_TELEMETRY=true en tu archivo .env.
Conclusión
AnythingLLM resuelve un problema real en la IA autoalojada. Te da una interfaz para chatear con tus documentos, se conecta con casi cualquier proveedor de LLM y mantiene tus datos bajo control. Como hemos visto, elige Escritorio para uso personal o Docker para despliegues en equipo.
Como cualquier herramienta, tiene contraprestaciones. La calidad de RAG depende de cómo la configures y las diferencias entre Escritorio/Docker pueden despistar al principio.
Como siguiente paso, echa un vistazo a nuestro itinerario AI Fundamentals o al tutorial sobre construir IA local con Docker y n8n.
Soy ingeniero de datos y creador de comunidades. Trabajo con canalizaciones de datos, nube y herramientas de IA, al tiempo que escribo tutoriales prácticos y de gran impacto para DataCamp y programadores emergentes.
FAQs
¿Puedo ejecutar esto en mi portátil antiguo sin GPU?
¡Sí! El propio AnythingLLM es ligero: alrededor de 2 GB de RAM, una CPU de 2 núcleos y unos 5 GB de almacenamiento. Lo pesado es ejecutar el LLM en local con Ollama. Si tu hardware es limitado, conéctate a un proveedor en la nube como OpenAI o Groq. Obtendrás el mismo workspace y funciones RAG, pero la inferencia ocurre en la nube. En otras palabras, AnythingLLM gestiona el flujo de trabajo y tú eliges si el modelo corre en local o en la nube.
¿Qué pasa si cambio mi base de datos vectorial más adelante?
Planifícalo con antelación. No hay migración automática entre bases de datos vectoriales. Cambiar de LanceDB a Pinecone implica volver a hacer el embedding de todos los documentos. Tus archivos originales están a salvo, pero hay que regenerar los vectores. Nota práctica: quédate con LanceDB salvo que tengas una necesidad específica de empresa. Suele requerir poca configuración y sirve para muchos despliegues de equipos pequeños.
¿Mis datos siguen siendo privados si uso OpenAI como LLM?
La clave: tus documentos y embeddings nunca salen de tu servidor. Pero cuando preguntas algo, los fragmentos de texto recuperados y tu prompt se envían a la API de OpenAI para la inferencia. Para datos realmente sensibles, usa Ollama. Todo se queda en local. Para documentos de trabajo generales, AnythingLLM con OpenAI sigue siendo más privado que subir archivos directamente a ChatGPT.
¿Puede mi equipo compartir una misma instalación de AnythingLLM?
Sí, pero solo con la versión Docker. Admite multiusuario con tres roles: Admin, Manager y Default. La app de Escritorio es solo de un usuario. Importante: el modo multiusuario está diseñado como un cambio de configuración unidireccional. Decide si necesitas acceso de equipo antes de activarlo.
¿Por qué a veces ignora mis documentos al responder?
Suele haber tres motivos: umbral de similitud demasiado alto, consultas vagas o documentos que no están en inglés con el embedder por defecto en inglés. Solución rápida: prueba primero con "No Restriction" en el umbral. Si tus documentos no están en inglés, cambia a un modelo de embeddings multilingüe disponible en Ollama (por ejemplo, alguno basado en e5) para obtener muchos mejores resultados.



