Disclaimer Este texto fue inicialmente concebido por IA generativa a partir de la transcripción de un video del canal de Daniel Romero que lidera la especialización en Ingeniería de IA. Si prefieres ver el video puedes reproducirlo.
Introducción RAG Retrieval-Augmented Generation es una técnica que combina búsqueda por similaridad con generación de texto por grandes modelos de lenguaje para producir respuestas más precisas y contextualizadas. En este artículo reescrito explicamos paso a paso cómo implementar un sistema RAG desde cero en Python y cómo integrarlo en proyectos empresariales.
Qué vamos a construir Nuestro sistema RAG básico tiene tres componentes principales generación de embeddings para los documentos búsqueda por similaridad usando similaridad del coseno y generación de respuesta con un LLM. La idea es convertir textos en vectores numéricos, buscar los vectores más cercanos a la consulta y usar esos documentos recuperados como contexto para que el modelo genere la respuesta.
Configuración inicial Para el ejemplo usamos solo tres bibliotecas instalables con pip pip install numpy sentence-transformers grok Usamos NumPy para cálculos, Sentence Transformers para obtener embeddings y Grok como cliente para el LLM. No dependemos de un servicio de vectoriales en este ejemplo sencillo, los vectores se mantienen en memoria.
Cargando el modelo y generando embeddings El modelo recomendado para el ejemplo es all-MiniLM-L6-v2 por ser pequeño y rápido. Atención este modelo funciona mejor con textos en inglés por lo que para producción en español o portugués habría que elegir un modelo de embeddings multilingue o específico para el idioma. Conceptualmente los modelos de embeddings se entrenan con millones de pares de textos donde algunos pares son positivos y deben quedar cerca en el espacio vectorial y otros son negativos y deben quedar lejos. Tras ese entrenamiento el modelo transforma cualquier texto en un vector que preserva el sentido semántico del texto. Ejemplo de uso en Python sin formato de bloque model = SentenceTransformer(all-MiniLM-L6-v2) client = Grok() documents = [lista de documentos de conocimiento] doc_embeddings = model.encode(documents) Con esa única línea cada documento pasa a ser un vector de 384 dimensiones en el caso de all-MiniLM-L6-v2 y esos vectores pueden almacenarse en memoria o en un servicio de vectoriales más adelante.
Entendiendo la similaridad del coseno Para medir cercanía entre dos vectores usamos la similaridad del coseno que se define como el producto punto entre A y B dividido por el producto de sus normas euclidianas. En palabras similarity A B es dot product de A y B dividido por norma A por norma B Geométricamente esto corresponde al coseno del ángulo entre los vectores y toma valor 1 cuando apuntan en la misma dirección y 0 cuando son ortogonales. Ejemplo práctico con NumPy v1 = np.array([1,2,3]) v2 = np.array([4,5,6]) dot_product = np.dot(v1,v2) magnitude = np.linalg.norm(v1) * np.linalg.norm(v2) similarity = dot_product / magnitude En este ejemplo la similaridad es alta cercana a 0.97.
Funciones clave del RAG En un sistema simple implementamos tres funciones principales una para calcular similaridad del coseno otra para recuperar documentos y otra para generar la respuesta. La función cosine_similarity toma dos vectores y devuelve np.dot(a,b) / (np.linalg.norm(a) * np.linalg.norm(b)). La función retrieve genera el embedding de la query model.encode(query) calcula la similaridad con todos los embeddings almacenados ordena los resultados y devuelve los top k documentos más relevantes con sus puntajes. La función generate_answer concatena los documentos recuperados en un único contexto y llama al LLM pasando instrucciones de sistema del tipo eres un experto en la materia y debes usar solo el contexto para responder la pregunta del usuario en el ejemplo usamos un modelo instant como llama-3.1-8b-instant con temperatura 0 para obtener respuestas deterministas enfocadas en el contexto. La función principal rag recibe la query recupera los documentos y genera la respuesta devolviendo ambos elementos.
Probando el sistema Una vez implementadas las funciones se puede ejecutar rag con una pregunta por ejemplo O que es machine learning y mostrar la respuesta junto con los documentos recuperados y sus similitudes. En este ejemplo local y didáctico no usamos chunking ni un vector store pero la lógica central es la misma que en soluciones de producción.
Pasos siguientes y consideraciones en producción En un proyecto real se añaden muchas piezas más como un motor de almacenamiento vectorial para escala y persistencia estrategias de chunking para dividir documentos largos metadatos para filtrar resultados pipelines de ingesta y limpieza de contenido control de versiones de embeddings y validación humana de las respuestas. También es habitual combinar búsqueda semántica con búsqueda booleana o por palabras clave para crear una búsqueda híbrida más robusta.
Cómo puede ayudar Q2BSTUDIO Q2BSTUDIO es una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial ciberseguridad servicios cloud aws y azure servicios de inteligencia de negocio y automatización de procesos. Podemos ayudar a llevar un prototipo RAG a producción diseñando la arquitectura que incluye un banco vectorial integrado con pipelines de ingesta y soluciones de seguridad y gobernanza. Si necesitas desarrollar una aplicación a medida o un servicio de inteligencia artificial para empresas visita nuestra página de inteligencia artificial y aprende cómo trabajamos con modelos y datos servicios de inteligencia artificial y si buscas crear aplicaciones multiplataforma y software a medida revisa nuestra propuesta de desarrollo desarrollo de aplicaciones y software a medida.
Palabras clave para posicionamiento aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi Estas palabras reflejan las capacidades de Q2BSTUDIO y ayudan a encontrar este contenido cuando se busca implementar soluciones de IA integradas con seguridad cloud y business intelligence.
Conclusión Este artículo ofrece una guía práctica y compacta para entender y montar un RAG desde cero usando NumPy Sentence Transformers y un LLM. La estructura es escalable y sirve como base para soluciones más complejas que integren vector stores pipelines de datos y controles de seguridad. Si quieres llevar un proyecto RAG a producción Q2BSTUDIO puede acompañarte desde la consultoría hasta el desarrollo e integración completa.
Especialización en Ingeniería de IA Este contenido forma parte del material de la Especialización en Ingeniería de IA una colaboración educativa que abarca RAG Vector Search Agents Tools y muchos temas prácticos con ejemplos reales. Para más información sobre cursos y formación técnica contacta con nuestros especialistas en Q2BSTUDIO.