RAG local con LM Studio: hablar con tus documentos
LM Studio incluye desde la versión 0.3 una función «Chat with Documents» que ejecuta un RAG completo localmente: indexación, embeddings, recuperación y generación, sin que un solo byte salga de tu máquina. Es probablemente la vía más rápida para pasar de un chat similar a ChatGPT a un asistente que responda a partir de tus PDF, contratos o notas. Esta guía muestra cómo activarla, qué puede hacer, dónde alcanza sus límites y cuándo hay que pasar a AnythingLLM o a una pila de Python.
#¿Por qué LM Studio para el RAG?
Hacer RAG local suele consistir en combinar cuatro componentes: un parser de archivos, un modelo de embeddings, una base de datos vectorial y un LLM de generación. La mayoría de los tutoriales usan Python + LlamaIndex + ChromaDB + Ollama. Es potente, pero también implica cuatro dependencias, un entorno que gestionar y un script que mantener.
LM Studio oculta todo eso detrás de un icono de clip. Cargas un modelo de generación (Qwen 3.5 9B, Granite 4.2 8B, Gemma 4 12B…), cargas un modelo de embeddings, arrastras un PDF a la conversación y haces tu pregunta. La interfaz se encarga del chunking, de la indexación en memoria y de la inserción de los pasajes pertinentes en el prompt.
- Ninguna línea de código
- Todo pasa por la GUI. Es el camino más directo entre «tengo una carpeta de PDF» y «converso con ellos».
- 100 % offline
- Embeddings, recuperación, generación: todo se ejecuta en tu GPU o CPU. Ninguna telemetría sobre el contenido de los documentos.
- Compatible con OpenAI
- El servidor local en el puerto 1234 sigue siendo accesible. Puedes usar el RAG desde la interfaz gráfica y conectar en paralelo un script al mismo modelo.
#Prerrequisitos
LM Studio consulta tus documentos. Para pasar de una prueba a una herramienta confiable, el kit RAG Local aborda lo que marca la diferencia: la división de los documentos en fragmentos (cap. 7), la elección de un modelo de embeddings sólido en francés (cap. 8) y la evaluación de las respuestas (cap. 14).
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
- LM Studio 0.3 o más reciente
- La función Chat with Documents apareció en la versión 0.3 y se ha ampliado desde entonces. Comprueba tu versión en Settings → About. Si tienes una versión anterior de LM Studio, actualízala antes de continuar.
- Un LLM de generación cargado
- Qwen 3.5 9B Q4_K_M (6,6 GB, contexto de 256k), Granite 4.2 8B Q4_K_M (5,3 GB, 128k) o Gemma 4 12B Q4_K_M (7,6 GB, multimodal) son buenas opciones por defecto, todos con licencia Apache 2.0. Estos modelos recientes tienen amplias ventanas de contexto, pero aun así debes ajustar Context Length en LM Studio (ver más abajo); de lo contrario, se limitará el número de pasajes que LM Studio puede incorporar.
- Un modelo de embeddings
- Necesario y distinto del LLM. nomic-embed-text-v1.5 (137M, ~80 MB en Q4) es la opción predeterminada recomendada por LM Studio. mxbai-embed-large (335M) si tienes margen. Para contenido exclusivamente en francés, multilingual-e5-large es más adecuado.
- VRAM o RAM
- Suma el tamaño del LLM + aproximadamente 200 MB para el modelo de embeddings + 1-2 GB para el índice en memoria de una carpeta de tamaño medio. En una GPU de 12 GB de VRAM, un modelo de 7B Q4 + nomic-embed deja aproximadamente 5 GB para el índice y el contexto.
- Ventana de contexto ≥ 8192
- Ajusta el parámetro Context Length del LLM a 8192 como mínimo, idealmente a 16384, desde el panel derecho del chat. Por debajo de ese valor, LM Studio trunca los pasajes recuperados y la respuesta pierde calidad.
#1. Activar Chat with Documents
No hay nada que activar en sentido estricto: es una funcionalidad nativa del chat. Basta con aportar un documento a una conversación para que LM Studio inicie el pipeline RAG en segundo plano.
- 01Abre un nuevo chatPestaña Chat en la barra lateral, luego el botón + en la parte superior para crear una conversación. Comprueba que haya un LLM cargado en el menú desplegable de arriba. Si no hay ninguno cargado, selecciona tu modelo de generación y espera a que se llene la VRAM.
- 02Arrastra tu archivo a la zona de entradaArrastra y suelta un PDF, DOCX, TXT o MD directamente en el campo de mensaje de abajo. Aparece una miniatura encima del campo con el nombre y el tamaño del archivo. Puedes adjuntar varios de forma consecutiva.
- 03Haz tu preguntaEscribe tu pregunta normalmente, como en un chat clásico. LM Studio detecta la presencia del documento, lo divide en fragmentos, lo codifica, busca los pasajes pertinentes y los inyecta en el prompt; todo esto en 1-5 segundos, según el tamaño.
- 04Lee la respuesta y las fuentesEl modelo responde basándose en los pasajes encontrados. Según el LLM utilizado, citará o no los extractos. Para forzar la cita, añade «Cita los pasajes exactos del documento» en tu pregunta.
#2. El modelo de embeddings
El modelo de embeddings es lo que transforma un fragmento de texto en un vector de números. La calidad de la recuperación —y, por tanto, la calidad final del RAG— depende directamente de este modelo. Mucho más que del LLM de generación, al contrario de lo que se suele imaginar al principio.
- 01Descarga un modelo de embeddingsEn la pestaña Discover, filtra por « Text Embedding » en la columna de la izquierda. nomic-embed-text-v1.5 aparece en un lugar destacado: es una buena opción por defecto. Descarga la variante Q4_K_M (~80 MB) o Q8_0 (~140 MB) si buscas la máxima calidad.
- 02Comprueba que se haya detectadoSettings → My Models → pestaña Embeddings. El modelo debe aparecer allí. Si LM Studio no lo ve en esta pestaña aunque esté descargado, es que no ha sido reconocido como un modelo de embeddings — revisa las etiquetas de Hugging Face o descárgalo de nuevo a través de Discover.
- 03Selecciónalo en el chatCuando un documento está adjunto a un chat, LM Studio muestra al final de la conversación el nombre del modelo de embeddings utilizado. Haz clic en él para cambiarlo. La selección se mantiene por chat —útil para comparar nomic y multilingual-e5 en el mismo documento.
- nomic-embed-text-v1.5
- 137M parámetros, 768 dimensiones, contexto de 8192 tokens. Excelente opción por defecto para el inglés, adecuada para el francés. Recomendado por LM Studio.
- mxbai-embed-large-v1
- 335M, 1024 dimensiones. Mejor clasificación en MTEB inglés, pero 3 veces más lento y 3 veces más pesado. Útil si la calidad de la recuperación es el factor limitante.
- multilingual-e5-large
- 560M, 1024 dimensiones. La mejor opción si tus documentos están en francés o son multilingües. Requiere anteponer «query:» a las consultas y «passage:» a los pasajes, algo que LM Studio gestiona automáticamente.
- bge-large-en-v1.5
- 335M, 1024 dimensiones. Excelente para contenido exclusivamente en inglés; evitar para el francés.
#3. Formatos y tamaños de archivos soportados
LM Studio admite una selección práctica de los formatos habituales. No ofrece OCR para PDF escaneados, ni análisis de tablas complejas, ni importación directa desde una URL: hay que conocer estas limitaciones antes de esperar demasiado de la aplicación.
- PDF (texto nativo)
- Compatible. Los PDF generados desde Word, Google Docs o LaTeX se procesan bien. No se puede extraer el texto de los PDF escaneados sin una capa OCR: pásalos previamente por ocrmypdf o Tesseract.
- DOCX
- Compatible. Se ignora el formato y se extrae el texto sin formato. Se pierden las tablas y las imágenes.
- TXT y MD
- Compatible de forma nativa, es el formato ideal. Markdown conserva su estructura (títulos, listas), lo que ayuda al chunking.
- Código fuente (.py, .js, .ts…)
- Tratado como texto. Funciona, pero para conversar con un repositorio completo, prefiere Continue.dev o una herramienta diseñada para código.
- CSV, XLSX, JSON, HTML, EPUB
- No hay soporte oficial actualmente. Convierte a TXT o MD mediante pandoc, csvkit o un script antes de importar.
- Tamaño máximo por archivo
- No se ha anunciado ningún límite estricto. En la práctica, calcula un máximo de 50-100 MB por PDF en la interfaz gráfica; por encima de ese tamaño, la división en fragmentos se vuelve lenta y el consumo de RAM aumenta rápidamente.
#4. Probar con un documento real
La mejor prueba es un documento que conoces. Toma un PDF de unas veinte páginas —un manual de usuario, un informe, un contrato— y plantea primero preguntas cuya respuesta conoces para calibrar la confianza en el sistema.
- Temperatura baja
- Para RAG, reduce la temperatura a 0.1-0.3 en el panel derecho. El objetivo es ceñirse a los pasajes, no crear.
- Prompt de sistema explícito
- « Responde únicamente a partir de los extractos proporcionados. Si la información no está presente, dilo claramente. Cita los pasajes exactos entre comillas. » Esta simple adición divide las alucinaciones por 3.
- Pregunta estructurada
- «¿Cuál es el plazo de preaviso? Cita la cláusula exacta» es más útil que «háblame del preaviso». La cita obliga al modelo a ceñirse al texto.
#Limitaciones frente a AnythingLLM
LM Studio hace RAG «de usar y tirar»: por conversación, sin persistencia entre chats y sin ajustes detallados. Es deliberado: la función está pensada para una consulta puntual, no para una base de conocimientos. En cuanto necesitas más, AnythingLLM (gratuito, open source, con el mismo enfoque de interfaz gráfica) toma el relevo.
- Espacios de trabajo persistentes
- AnythingLLM almacena tus documentos en espacios de trabajo reutilizables. Indexas una vez 200 PDF y todos tus chats del espacio de trabajo tienen acceso a ellos. LM Studio reindexa en cada nuevo chat.
- Citas clicables
- AnythingLLM muestra las fuentes con un enlace al pasaje exacto. LM Studio se limita a inyectar el pasaje en el prompt: el modelo puede citarlo o no, como quiera.
- Ajustes de RAG accesibles
- Top K, tamaño del chunk, umbral de similitud, modelo de embeddings: todo es configurable en AnythingLLM. LM Studio lo gestiona como una caja negra con valores predeterminados razonables.
- Bases de datos vectoriales externas
- AnythingLLM se conecta a ChromaDB, Qdrant, Pinecone, Weaviate. LM Studio mantiene todo en memoria del proceso, lo que lo limita a corpus modestos.
- Multi-utilisateurs
- AnythingLLM permite gestionar usuarios y compartir espacios de trabajo. LM Studio está diseñado para un solo usuario.
- Conectores de fuentes
- AnythingLLM puede incorporar contenido de URL, Confluence, GitHub y transcripciones de YouTube. LM Studio se limita a arrastrar y soltar archivos.
#Cuándo pasar a un stack en Python
Llega un momento en que la interfaz gráfica alcanza sus límites y escribir código resulta más sencillo que buscar formas de sortearlos. Estas son las señales que deberían llevarte a pasar a Python + LlamaIndex (o Haystack):
- Fragmentación que tiene en cuenta la estructura
- Tus documentos tienen una estructura bien definida (secciones jurídicas, código, artículos científicos) que la división básica en fragmentos rompe. Un divisor de texto que tenga en cuenta Markdown o un analizador docling marca la diferencia.
- Búsqueda híbrida
- Quieres combinar la búsqueda vectorial (semántica) y BM25 (léxico) para no pasar por alto términos exactos (números de cláusula, nombres de variables, identificadores). Ninguna interfaz gráfica lo hace de forma nativa hoy en día.
- Reranking
- Añades un cross-encoder (BAAI/bge-reranker-v2-m3) para reordenar los 20 primeros resultados. +15 % de relevancia, pero requiere escribir código.
- Metadatos y filtrado
- « Busca únicamente en los contratos firmados en 2024 ». Necesita metadatos por chunk y un filtro durante la consulta.
- Pipeline de ingestión automático
- Un directorio monitorizado, un cron, un webhook que reindexa cada vez que se añade un nuevo archivo. En ese punto, se deja definitivamente de usar la GUI.
- Evaluación
- Medir la calidad del retrieval con 50 preguntas de referencia. Sin Python, actúas a ciegas.
Buena noticia: LM Studio puede seguir siendo la interfaz mientras Python ejecuta el pipeline. LlamaIndex puede utilizar el servidor compatible con OpenAI en localhost:1234 con dos líneas de código: mantienes LM Studio para el chat exploratorio y programas el pipeline por detrás.
#Para ir más allá
Chat with Documents cubre el 80 % de las necesidades de uso personal o de un equipo reducido. Los siguientes pasos lógicos tras este primer RAG:
- Entender los mecanismos
- La guía « RAG local: introducción » explica en detalle el chunking, los embeddings, la recuperación y las trampas que ninguna interfaz gráfica muestra. Una lectura útil antes de tocar los ajustes.
- Elegir un mejor modelo de embeddings para francés
- La guía Los mejores modelos de embeddings FR compara Solon, multilingual-e5 y BGE en contenido francófono. La diferencia es medible.
- Pasar al modo servidor API
- La guía Convertir LM Studio en un servidor API muestra cómo exponer el endpoint compatible con OpenAI para conectar LlamaIndex, Continue.dev o un script propio sin perder tu configuración actual.
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.