Anatomía de un RAG

Está claro que muchas personas estamos utilizando herramientas como ChatGPT o Claude para diversas tareas, ya sea para desarrollar un componente, clasificar un texto o crear contenido. Sin embargo, cuando hacemos una consulta, se desencadenan múltiples procesos, y no solo interviene el modelo de inteligencia artificial que utiliza la herramienta; también participan otros modelos y componentes de software.
En este contexto, el modelo puede apoyarse tanto en su propia información como en datos proporcionados por nosotros. Esta integración entre el modelo y fuentes de información externas se conoce como RAG (Retrieval-Augmented Generation).

Fases de un RAG

Con acceso a modelos generativos avanzados o LLMs (Large Language Models) y una interfaz conversacional (Chat), un sistema RAG puede resumirse en tres fases principales: la fase de subida de contenido, la fase de recuperación y la fase de respuesta.

Diagrama de flujo de la implementación de tecnología RAG

Fase de subida e indexación. Antes de preguntar.

Para que un modelo pueda responder correctamente, es necesario que haya sido previamente entrenado e incorporado conocimiento en este proceso, ya sea en forma de contenido multimedia o ejemplos de preguntas y respuestas estructurados como evidencias.

En este proceso de entrenamiento, la información propia del modelo ha sido clasificada y etiquetada previamente. Pero cuando queremos incorporar nuestra información, esta no siempre está bien organizada, bien sea porque son documentos no-estructurados o bien porque son documentos que incorporan imágenes y texto donde es difícil que de forma automática se extraiga el contenido con contexto (imágenes, textos, tablas).

Para poder subir un documento a nuestro repositorio propio de información, hemos de tener un proceso de extracción y carga lo suficientemente flexible como para poder procesar múltiples tipos de documentos, como PDF, TXT, CSV o urls. Existen componentes de software y servicios en la nube para procesar documentos y transformarlos en información que luego pueda utilizar el sistema de recuperación y el modelo para darnos una respuesta correcta. En este proceso, además, hemos de garantizar la seguridad y privacidad en el acceso a esta información.

Por lo general, la información que queremos es lo más simple, es decir, eliminar cualquier código o contenido que pueda generar ruido a la hora de poder recuperarlo. Esto es, limpiar el código HTML de una página web o eliminar el código de formato del documento. Lo que queremos es contenido informacional.

Después de limpiar el código

Cuando ya tenemos este código, podemos agregarle metainformación, como nombre del fichero, número de páginas, título del documento o incluso un resumen del documento para que nos permita localizarlo en el contexto de la conversación. Esta metainformación puede ser incorporada de forma manual o por el servicio de procesamiento, o utilizando modelos de inteligencia que resuman el contenido o que extraigan el título del documento.

Una vez tenemos el contenido y la metainformación, procederemos a guardarlo en un repositorio de datos. En Múltiplo, utilizamos exclusivamente vector databases, pero existen técnicas que implementan otras, como graph databases, o una combinación de tipos de bases de datos.

Para guardar el contenido, en el caso de las vector databases, primero hemos de crear los vectores de la información o vector embeddings. Existen componentes de software y múltiples servicios para crear estos embeddings. OpenAI, Cohere o A21, ofrecen esta funcionalidad en modo de modelos (embeddings models). La elección del modelo depende del tipo de vector database, la dimensión de los vectores y el dominio o ámbito de uso.
Estos vectores se generan dividiendo el contenido en fragmentos más pequeños, conocidos como chunks, y parametrizando tanto su tamaño (chunk size) como su superposición (overlapping) con los fragmentos previos y posteriores.
Con estos chunks listos, procedemos a almacenarlos como filas dentro de nuestra vector database.

Fase de recuperación o retrieval. Preguntando al modelo.

La fase de retrieval se divide en tres subfases: pre-retrieval, retrieval y post-retrieval.
Antes de detallar estas subfases, es importante comprender qué contenido utilizará el modelo para generar una respuesta. Esto incluye: el System Prompt (las instrucciones que definen el comportamiento del modelo), el User Prompt (la pregunta realizada por el usuario), el contexto de la conversación previa (memoria conversacional), y, finalmente, el contenido recuperado durante la fase de retrieval.
Es importante destacar que una correcta definición del System Prompt impacta directamente en la calidad de las respuestas, ya que establece el ámbito del contenido y el nivel de detalle que debe proporcionar el modelo.

Pre-retrieval

A partir de la pregunta del usuario, podemos utilizar varias técnicas para asegurar que la pregunta sea la correcta para que el modelo tenga la información relevante para una correcta respuesta. Con la pregunta, podemos utilizar una IA que la mejore, por ejemplo, reestructurándola y eliminando ruido. Esta técnica es denominada Query Rewriting. Esta IA también podría buscar si la pregunta ya ha sido respondida utilizando un sistema de caching y recuperando la respuesta ya ofrecida en otro momento. Esto, además, reduce el tiempo de respuesta y los costes del sistema. Otra posible técnica es la denominada MultiQuery Retrieval. Esta técnica consiste en que una IA, genere varias preguntas similares a la pregunta del usuario. Con estas preguntas, podríamos ampliar la búsqueda de información para que el modelo obtenga más contexto para procesar. Es similar al concepto de “Chain-of-Thought” que introdujo OpenAI con el modelo o1 (aunque este concepto ya se introdujo anteriormente por Google), aunque las instrucciones y el objetivo son diferentes.

En Múltiplo, utilizamos una segunda IA que permite reescribir la pregunta y utilizar un sistema de caching para ofrecer respuestas más rápidas al mismo tiempo que reducimos costes. Todavía no hemos explorado cómo se comportaría la técnica de MultiQuery Retrieval, aunque ya estamos refactorizando partes de nuestras soluciones para poder incorporar esta técnica.

Es importante incorporar un sistema de Guardrails o filtros para garantizar precisión, seguridad, y calidad en las respuestas. Su aplicación estratégica permite mitigar riesgos, mejorar la experiencia del usuario y alinear el sistema con los objetivos del proyecto. Este componente puede ser aplicado tanto antes de la fase de pre-retrieval como en la fase de post-retrieval. En Múltiplo utilizamos una combinación de filtros (Answer Filters) y las capacidades de Amazon Bedrock Guardrails, una solución independiente al modelo de inteligencia artificial.

Retrieval

Esta subfase se encarga de la búsqueda y recuperación de información que posteriormente va a utilizar el modelo para darnos una respuesta. En esta subfase, también podemos utilizar técnicas como HYDE (Hypothetical Document Embeddings), también conocida como Query2Doc, Generative Multi-hop Retrieval o Hybrid Search Exploration. A día de hoy, en Múltiplo, no hemos podido implementar estas técnicas y no podemos valorar el impacto. De todas formas, de entre estas técnicas, creemos que aplicar un modelo BM25 en combinación con la búsqueda de embeddings, puede resultar en una mejora considerable cuando el volumen de información es alto. Aplicar un modelo BM25 se engloban dentro de la técnica Hybrid Search Exploration.

Si únicamente utilizamos la búsqueda por embeddings en una vector database, entonces, es importante poder configurar el parámetro top_k. Este parámetro ajusta el número de resultados que nos va a devolver la vector database.

En Múltiplo utilizamos Pinecone como vector database, aunque hay otras plataformas como Qdrant o Vertex AI de Google.

Post-Retrieval

Una vez hemos obtenido los bloques de información de nuestro repositorio, podemos realizar varias acciones para verificar o cambiar la relevancia de los resultados. La mejor opción es utilizar los llamados modelos de ReRanking. Estos modelos reasignan puntuaciones de relevancia y reorganizan los documentos en un nuevo orden.

Existen diferentes tipos de modelos de reranking. En Múltiplo utilizamos los modelos de Cohere Reranker, definidos como modelos de evaluación semántica profunda y que permiten una longitud de contexto de 4096 tokens, permitiendo manejar documentos extensos y lingüísticamente complejos.

En conclusión

El dominio de la arquitectura de los sistemas RAG representa un valor añadido significativo en el desarrollo de asistentes inteligentes o chatbots asistidos por IA, ya que permite integrar capacidades avanzadas de recuperación de información con modelos generativos. Esta combinación no solo mejora la precisión y relevancia de las respuestas, sino que también optimiza la experiencia del usuario al ofrecer soluciones más completas, personalizadas y contextualmente adaptadas a las necesidades específicas de cada caso de uso.

También te puede interesar

La importancia de la performance más allá de la velocidad web

La velocidad de respuesta de una página web, de una aplicación o incluso de un asistente virtual basado en Inteligencia Artificial (IA) es un factor clave para garantizar una experiencia de usuario satisfactoria. Desde un navegador, una app o una solución de IA, los usuarios esperan resultados inmediatos que faciliten su interacción. Esto es determinante…

Saber más

Consultoría de IA para mejorar la experiencia de cliente

La consultoría de IA se ha convertido en una herramienta clave para todas las empresas que buscan mejorar la experiencia del cliente, optimizar sus procesos internos y maximizar el impacto de sus estrategias de marketing. En este artículo, vamos a entender cuáles son los objetivos principales de una consultoría de IA, las necesidades que cubre…

Saber más

Cómo implementar Asistentes Virtuales y Chatbots inteligentes con IA en tu empresa

Los asistentes virtuales están cambiando por completo la forma en que las empresas interactúan con sus clientes y optimizan sus interacciones. La implementación de asistentes virtuales con inteligencia artificial permite atender consultas en tiempo real, mejorar la eficiencia y reducir costes. Hoy vamos a hablar de cómo incorporar un asistente virtual IA en tu empresa.…

Saber más

Solicita una demostración

PLai Framework

Descubre cómo puedes desplegar tecnologías de IA con garantías en tu entorno empresarial y reducir costes. Solicita una demostración y uno de nuestros expertos se pondrá en contacto contigo para programar una sesión personalizada.

PLai Framework

¿Qué dicen sobre nosotros?

  • "A lo largo de los años, siempre afrontan los proyectos con entusiasmo y cuidado de los detalles. Han demostrado una gran capacidad para adaptarse a nuestras necesidades, siempre enfocados a lograr los objetivos definidos. Incorporar a Múltiplo en la toma de decisiones a lo largo del proyecto y disponer de documentación de SEO técnico fue absolutamente clave para garantizar el éxito del lanzamiento de la nueva web de Roca."

    Sergi Parcerisas

    Director de Marketing Digital en ROCA

  • “Hace más de 9 años que colaboramos con Múltiplo y siempre hemos podido contar con ellos para liderar grandes proyectos. Es una empresa con un gran expertise en el campo tecnológico y muy comprometida con el cliente, tenemos plena confianza con su equipo de profesionales, que siempre busca las mejores opciones para cubrir y adaptarse a las necesidades del cliente. ¡Esperamos que nos siga acompañando en nuevos retos!”

    Carolina Mirabet

    Head of Business Analytics en ANDORRA TURISME

  • “Múltiplo es una empresa que responde siempre de forma inmediata, que sabe adaptarse a distintas situaciones, a entornos con múltiples interlocutores y a escenarios cambiantes. Nos gusta saber que contamos con ellos como proveedor, porque sabemos que afrontarán de la mejor forma los retos que les planteemos.”

    Julio Miyares

    Global Digital Marketing Manager en GRUPO OSBORNE

  • "Múltiplo es un partner estratégico de gran ayuda para nuestro negocio. Sus soluciones innovadoras y técnicas avanzadas han mejorado significativamente nuestra web y servicios en línea. Estamos muy contentos con los resultados que obtenemos trabajando con Múltiplo. Su enfoque creativo y estratégico ha sido esencial para destacarnos en un mercado competitivo."

    Javier Chacón

    CEO en doypo

  • “Gracias a Múltiplo hemos vivido nuestra transformación digital controlada y positivamente, evolucionando día a día con el gran apoyo de su equipo. Hoy continuamos creciendo con la confianza plena de que seguiremos avanzando con la mejor compañía; porque trabajar con Múltiplo es sinónimo de tranquilidad y éxito.”

    Marta Falguera

    Directora de Marketing en ESTAL

  • "La experiencia y conocimiento de Múltiplo han sido de gran ayuda para nuestro negocio. El equipo de Múltiplo es muy colaborador y atento en todo momento y trabajar con ellos es un placer por su disponibilidad y capacidad de respuesta. Han demostrado una gran capacidad para adaptarse a nuestras necesidades y objetivos específicos."

    Natalia Galuchino

    Business Development Manager en ADI IBERIA

  • Andorra Turisme
    Osborne
    Roca
    Cinco Jotas
    Institut Valencià d'Art Modern
    Doypo Hipotecas
    Nestlé
    Nordés Gin
  • Universitat Oberta de Catalunya
    Obra Social LaCaixa
    Shackleton
    Frigicoll
    Ordesa
    Zinklar
    Loverty
    Eurekakids
  • Estal
    Medtep
    Laufen
    GoodProfits
    OhGar!
    Riofrio
    Simon
    Akzonobel

Somos fans de compartir ideas.

Explícanos tu proyecto.