Qué es un RAG y por qué te interesa mucho crearte uno
Imagina que tienes un montón de documentos en tu ordenador.
Esos documentos pueden tener diversos formatos (word, excel, pdf, html, videos, imágenes)
Si quieres explotar esa información ingente almacenada y que es de tipo personal o corporativa hasta ahora podías hacer un índice y ponerte a leerla.
¿Por qué no crear un ChatGPT privado que puedas usar para dar soporte a tus clientes, explicar un procedimiento interno a la gente de tu empresa o simplemente crear resúmenes de lo que tienes guardado para poder sacarle partido?
Podrías pensar en crear tu propio modelo de lenguaje al que entrenar con estos datos pero probablemente no vas a conseguir la potencia de un LLM ya creado y te va a llevar tiempo y mucho dinero, unos cuantos cientos de millones de dolares para el caso de chatGPT de OpenAI, Gemini de Google, LLama de Facebook, etc. Puedes aprovechar esos modelos ya creados y entrenados y añadir tu propia capa de datos de forma privada.
Si necesitas extraer información precisa de toda esa cantidad de datos almacenada, quizá durante meses o años ahora puedes construir un agente de IA, un sistema que te permita aprovecharla usando un nuevo sistema.
La idea es:
1.- Usar una herramienta que cree una capa sobre un modelo LLM para que analice tu informacion privada y la añada a un LLM gigantesco del tipo de los que venimos hablando, manteniendo la privacidad estricta de tus datos.
2.- Descargar o usar on line uno de estos modelos LLM amplificados («aumentados») con tu propia informacion privada local.
A esto se le ha puesto ya un nombre. Se le llama RAG (Retriever-Augmented Generation)
El proceso consiste en convertir tu información privada en un formato que pueda complementar a un modelo de lenguaje («LLM») ya existente y ya entrenado como son ChatGPT 4 o LLama 3 o Gemini o el que sea. Estos modelos ya entrenados usan representaciones de la información en formato numérico como vectores y se almacenan en bases de datos especiales para utilizar estos vectores. Cuando se integra la nueva información transformada en vectores a la base de datos se dice que se ha «embebido» la nueva información en el modelo de lenguaje LLM.
El método para transformar tu información consiste en hacer trozos de texto con una técnica llamada chunking. El chunking utiliza técnicas para separar la informacion en trozos coherentes. La mas precisa se basa en analizar semánticamente el texto y cortarlo en trozos con significado. Podrías cortar el texto buscando los puntos finales de las frases o cualquier marca que indique que es un párrafo pero lo mejor es cortar el texto cuando la frase cortada tiene algun tipo de significado.
Luego, una vez tienes esos trozos «chunks» lo que se hace es convertirlo en una cadena de números llamada vector y almacenando ese vector junto a otros vectores que tienen un significado «semántico» similar.
Cómo obtener un sistema al que pueda preguntar y saltandome los detalles técnicos
Puedes usar un entorno python, importar librerias y componentes y luego crear esa base de datos vectorial «aumentada» con herramientas como langchain pero te traigo una nueva herramienta gratuita que hace todo esto automáticamente para tí: AnythingLLM
Esta herramienta te permite transformar toda la información sobre un tema en concreto (o general) que tengas en un complemento a un LLM gigante como ChatGPT o cualquiera de los otros y luego poder interrogar o pedir al LLM aumentado para pedir informes, versiones nuevas de la información, resúmenes o averiguar cualquier información que necesites.
Vamos a verlo paso a paso
Paso 1 Descarga AnythingLLM
Si es para windows te va a advertir que este programa no va firmado por un fabricante. No importa. Es seguro. Ejecuta el instalador igualmente
Descarga en la web de AnythingLLM
Paso 2 Añade tu documentación propia al modelo LLM
Esto se hace creando un espacio de trabajo o «workspace». Puedes hacerlo tan genérico o específico como necesites. P.e. si estás documentando como funciona un procedimiento de calidad o una máquina tendrás en tu ordenador algunas carpetas con archivos en pdf, word, etc que quieras que el modelo de lenguaje incorpore a su base de datos pero sin compartirlo con nadie y que lo guarde localmente en tu sistema.
Dentro de un «workspace» puedes subir la información privada que necesites:
elige los ficheros para el workspace
Paso 3. Seleccionar el modelo LLM y configurar opciones
Pulsa en la llave inglesa que da acceso al menu de configuración.
Yo he elegido mi cuenta de OpenAI (fabricante de chatGPT) y la version gpt-4o.
Esto significa que tengo una clave API que he creado en https://platform.openai.com y que puede haber un coste por uso aunque sea muy bajo (menos de 5 USD/mes). Pero puedes usar un LLM gratis y potente como LLAMA que es de Meta.
Además puedes elegir varias opciones. Si lo dejas por defecto te guardará la información para tener «memoria» sobre lo que has preguntado antes y ayudarte con más precisión en tus preguntas. Es el modo «Chat»:
Ahora ya puedes pedirle a tu nuevo LLM – RAG la informacion que quieras. Yo le pregunto aqui abajo que me resuma el contenido de la web driveo.es:
Si estás mejorando tus habilidades también puedes adoptar el rol de «ingeniero de IA». Para ello necesitas entender bien que es un LLM, un vector numérico creado a partir de trozos de texto de tu información, que son los embeddings.
Los embeddings son representaciones vectoriales densas de datos. Usan Dimensionalidad reducida (los vectores tienen muchas menos dimensiones que el dato original).
documentos privados –>chunking –> embedding –> BBDD vectores –> retrieve LLM
Cómo saber de dónde ha extraído la información
Puedes haber usado varias fuentes, documentos y webs para hacer el RAG, potenciar o complementar el LLM por eso hay un enlace muy interesante llamado «Show Citations»
¿Quieres que te ayude un profesional?
Para los programadores
Lang Chain Expression Language (LCEL) para hacer un RAG
Get started with LangSmith | 🦜️🛠️ LangSmith (langchain.com)
Procedimiento para crear tu propio sistema RAG manualmente:








