Skip to main content

Command Palette

Search for a command to run...

RAG: cómo hacer que tu IA local responda sobre tus propios documentos

Tiempo de lectura: 9 minutos Categoría: Inteligencia Artificial Nivel: Intermedio

Published
6 min read

Uno de los problemas más frustrantes de los modelos de lenguaje es que solo saben lo que aprendieron durante su entrenamiento. Si le preguntas a Llama 3 sobre el manual de tu empresa, tus apuntes o un PDF que tienes en el escritorio, no tiene ni idea de qué le estás hablando. RAG soluciona exactamente eso.

¿Qué es RAG?

RAG son las siglas de Retrieval-Augmented Generation, que en español podría traducirse como generación aumentada por recuperación. Es una técnica que combina dos cosas: un sistema de búsqueda semántica sobre tus documentos y un modelo de lenguaje que genera la respuesta.

El flujo es sencillo de entender aunque complejo por dentro. Cuando haces una pregunta, el sistema primero busca en tus documentos los fragmentos más relevantes para esa pregunta, luego se los pasa al modelo de lenguaje junto con tu pregunta, y el modelo genera una respuesta basada en esa información específica en vez de en su conocimiento general.

El resultado es que el modelo puede responder con precisión sobre el contenido de tus documentos, citar las fuentes exactas y reconocer cuando la información que necesitas no está en los documentos que le has dado.

Por qué RAG y no fine-tuning

La alternativa a RAG para hacer que un modelo conozca información específica es el fine-tuning, que consiste en reentrenar el modelo con tus datos. Pero el fine-tuning tiene varios problemas importantes para casos de uso cotidianos.

Es computacionalmente muy caro y requiere hardware potente. El modelo entrenado tiende a olvidar información que sabía antes, un fenómeno llamado catastrophic forgetting. Y cada vez que añades documentos nuevos tienes que reentrenar.

RAG en cambio es barato computacionalmente, puedes añadir documentos nuevos en segundos, y el modelo base sigue siendo el mismo, manteniendo todas sus capacidades originales.

Los componentes de un sistema RAG

Para construir un sistema RAG necesitas cuatro componentes que trabajan juntos.

El primero es un modelo de embeddings. Los embeddings son representaciones numéricas del significado del texto. El modelo de embeddings convierte cada fragmento de tus documentos en un vector numérico de alta dimensionalidad que captura su significado semántico. Textos con significado similar tendrán vectores cercanos en ese espacio.

El segundo es una base de datos vectorial. Es donde se almacenan esos vectores junto con el texto original. Cuando haces una pregunta, el sistema convierte la pregunta en un vector y busca los vectores más cercanos en la base de datos. Las opciones más populares son ChromaDB, que es la más sencilla de usar y perfecta para empezar; Qdrant, que es más robusta para producción; y FAISS de Meta, que es muy eficiente para grandes volúmenes de datos.

El tercero es el proceso de indexación, que es cuando tomas tus documentos, los divides en fragmentos de tamaño razonable, conviertes cada fragmento en un embedding y lo guardas en la base de datos vectorial. Este proceso se hace una vez por documento y puede tardar desde segundos hasta minutos dependiendo del tamaño.

El cuarto es el modelo de lenguaje que genera la respuesta final. Este puede ser cualquier modelo de Ollama que ya tengas instalado.

La forma más sencilla de probarlo: Open WebUI

Si ya tienes Open WebUI instalado del artículo anterior, tienes RAG disponible sin instalar nada más. Open WebUI incluye un sistema RAG integrado que te permite subir documentos directamente en el chat y hacer preguntas sobre ellos.

Simplemente abre un chat, haz clic en el icono de adjuntar archivo, sube un PDF o documento de texto, y empieza a hacer preguntas. Open WebUI se encarga de todo el proceso de indexación automáticamente usando ChromaDB internamente.

Esta es la forma más rápida de empezar y es perfectamente válida para uso personal con documentos individuales.

Construir un sistema RAG más completo con LangChain

Si quieres más control o necesitas indexar grandes volúmenes de documentos, LangChain es el framework de referencia para construir aplicaciones con LLMs. Está disponible en Python y JavaScript y tiene integración nativa con Ollama, ChromaDB y prácticamente cualquier modelo o base de datos vectorial que puedas imaginar.

Con LangChain puedes construir un pipeline que cargue documentos de múltiples formatos (PDF, Word, Markdown, HTML, código fuente), los divida en fragmentos del tamaño óptimo, los indexe en ChromaDB, y exponga una interfaz de consulta donde puedes hacer preguntas en lenguaje natural y obtener respuestas con las citas exactas de los documentos fuente.

La documentación oficial de LangChain en python.langchain.com tiene tutoriales muy detallados para construir este tipo de sistemas paso a paso.

Casos de uso prácticos

Los sistemas RAG son útiles en muchos escenarios del día a día. Puedes indexar toda la documentación técnica de un proyecto para hacer preguntas sobre ella sin tener que buscar manualmente. Puedes subir contratos o documentos legales y pedir al modelo que resuma las cláusulas importantes o que te explique partes específicas. Puedes indexar tus propios apuntes y estudiar haciendo preguntas sobre el material. En un entorno empresarial puedes crear un asistente que responda preguntas sobre los procedimientos internos de la empresa.

Lo especialmente valioso es que todo esto puede correr localmente con Ollama, sin que ningún documento sensible salga de tu máquina.

Parámetros importantes para buenos resultados

El rendimiento de un sistema RAG depende mucho de algunos parámetros que vale la pena entender aunque no vayas a construir el sistema desde cero.

El chunk size, o tamaño del fragmento, define en cuántos caracteres o tokens se divide cada documento. Fragmentos muy pequeños pierden contexto, fragmentos muy grandes diluyen la relevancia. Para la mayoría de documentos de texto un chunk size de entre 500 y 1000 tokens funciona bien.

El chunk overlap define cuántos tokens se solapan entre fragmentos consecutivos. Un solapamiento de entre el 10 y el 20 por ciento del chunk size evita que información importante quede cortada entre dos fragmentos.

El número de fragmentos recuperados (generalmente llamado top-k) define cuántos fragmentos relevantes se pasan al modelo. Más fragmentos dan más contexto pero también pueden confundir al modelo si hay información contradictoria. Un valor de entre 3 y 5 es un buen punto de partida.

Conclusión

RAG es una de las técnicas más prácticas y accesibles del ecosistema de IA actual. No requiere hardware potente, funciona con los modelos locales de Ollama que ya tienes instalados, y abre posibilidades enormes para trabajar con tu propia información de forma privada.

Si tienes Open WebUI instalado, puedes empezar a experimentar con RAG ahora mismo subiendo cualquier documento. Si quieres ir más allá, LangChain con ChromaDB y Ollama es una combinación excelente para construir algo más robusto.


¿Qué documentos indexarías tú primero en un sistema RAG? Cuéntamelo en los comentarios.

IA

Part 2 of 4

Explora el mundo de la Inteligencia Artificial 100% local. Guías paso a paso sobre cómo desplegar LLMs con Ollama, configurar interfaces como Open WebUI y aplicar RAG para trabajar con tus propios datos sin depender de la nube.

Up next

Open WebUI: interfaz gráfica tipo ChatGPT para tu Ollama local

Tiempo de lectura: 7 minutos Categoría: Inteligencia Artificial · Linux Nivel: Principiante / Intermedio