Una aplicación directa del uso de IA en el mundo real consiste en la posibilidad de interactuar con documentos e información propia para generar resultados. Mediante el uso de inteligencia artificial podemos realizar consultas con lenguaje natural, resumir textos o chatear en el contexto de una base de conocimiento mediante el uso de Retrieval Augmented Generation.

Esta técnica no solo mejora la eficiencia, sino que también personaliza la experiencia del usuario, ya que la IA puede generar respuestas o contenido basado directamente en la información específica del cliente.

Aplicaciones prácticas de la IA con Retrieval Augmented Generation en diferentes sectores:

  1. Educación: Puede proporcionar material didáctico personalizado, condensando información sobre temas complicados y generando ejercicios prácticos. Esto no solo complementa los métodos de enseñanza tradicionales, sino que también apoya a los educadores al abordar las necesidades individuales de los estudiantes.
  2. Recursos Humanos: La incorporación de empleados es crítica para cualquier organización. La IA facilita este proceso, permitiendo al personal nuevo interactuar con sistemas inteligentes para obtener información relevante y resolver sus inquietudes inmediatamente.
  3. Ventas y Marketing: En un entorno altamente competitivo, la personalización es clave. La IA permite a los equipos comerciales crear comunicaciones hechaas a medida, combinando datos de productos, preferencias e información de contacto de clientes, lo que resulta en interacciones más significativas y una mayor conversión.
  4. Atención al Cliente: Implementar IA en el servicio de atención al cliente mejora la eficiencia al proporcionar respuestas rápidas y precisas a consultas comunes. Esto no solo aumenta la satisfacción del cliente sino que también permite que el personal se concentre en problemas más complejos que requieren una intervención especializada.

Como no hay nada mejor que ver un ejemplo, en Lostium hemos desarrollado un prototipo que convierte a GPT en una profesora experta en fermentados y encurtidos. Los usuarios pueden hablar con ella para resolver dudas relativas a las lecciones de nuestra aplicación FermentApp.

En este vídeo podéis ver a nuestra asistente en acción.

En este caso hemos implementado un chat con una interfaz propia pero la solución podría integrarse perfectamente en herramientas de mensajería existentes, tipo WhatsApp o Telegram, o en aplicaciones específicas de nuestros clientes.

Recuerda que si quieres implementar una solución basada en Inteligencia Artificial Generativa como esta, contacta con nosotros y estaremos encantados de ayudarte.

¿Qué es Retrieval Augmented Generation?

Para implementar estas soluciones basadas en inteligencia artificial, recurrimos a un enfoque llamado 'Retrieval Augmented Generation', más conocido por sus siglas, RAG. En español se podría traducir como 'Generación Aumentada por Recuperación'. 

RAG es una estrategia diseñada para maximizar la precisión y relevancia de las respuestas generadas por IAs. Esta técnica permite que los Grandes Modelos de Lenguaje (LLM por sus siglas en inglés) utilicen información del cliente sin necesidad de reentrenamiento.

Dentro del enfoque RAG, se crean repositorios de conocimiento que indexan los datos específicos del cliente. Una ventaja importante es que estos repositorios son fácilmente actualizables, lo que posibilita que la IA generativa proporcione respuestas no sólo precisas, sino también ajustadas al contexto del cliente.

Una vez generada esta base de conocimiento el funcionamiento es muy sencillo:

flowchart TD user("fa:fa-user Usuario ")-- 1. Pregunta -->app("fa:fa-mobile-alt Aplicación") app-- 2. Búsqueda-->bbdd[("\nfa:fa-database Base de\nconocimiento")] bbdd--3. Documentos\nrelevantes-->app app--4. Prompt con\npregunta\nusuario\ny\ndocumentos -->LLM(<img src="https://manager-lostium.b-cdn.net/app/uploads/2023/10/logo-openai.svg"/>GPT-3.5-Instructor) LLM--5. Respuesta-->app style user fill:#f9620f,stroke:#CA4A05,color:#fff style app fill:#61d2de,stroke:#28A8B3 style bbdd fill:#fcd948,stroke:#AB8C0E style LLM fill:#fff, stroke:#333

1. El usuario formula una pregunta.

2. La aplicación, basándose en dicha consulta, busca documentos o fragmentos relevantes dentro del repositorio de conocimiento del cliente.

3. La búsqueda devuelve un conjunto de documentos que pueden tener relevancia a la pregunta. Con esta información se realiza un resumen para disponer de un contexto.

4. Utilizando la pregunta del usuario y el contexto, se realiza la consulta aplicando técnicas de prompt engineering a GPT o a cualquier otro modelo LLM. Esto produce una respuesta adecuada con la información propia del cliente y utilizando lenguaje natural.

Es esencial destacar que la calidad de las respuestas proporcionadas por la inteligencia artificial está directamente ligada a la riqueza y profundidad de la información con la que se alimente. Si se cuenta únicamente con un documento breve, las capacidades de respuesta de la IA estarán limitadas, ofreciendo información posiblemente superficial o insuficiente en relación a la consulta del usuario. Sin embargo, si se dispone de una serie de documentos que abarcan de manera extensa el espectro de posibles preguntas de los usuarios, la calidad y precisión de las respuestas generadas por la inteligencia artificial será notablemente superior.

Implementación técnica de soluciones basadas en Retrieval Augmented Generation

A la hora de implementar soluciones de este tipo, tenemos la ventaja de no utilizar servicios intermediarios. Además, tenemos la capacidad de desarrollar soluciones específicas que se ajustan exclusivamente a las necesidades del cliente. 

Usamos herramientas de programación como LangChain, un framework que permite interactuar con LLMs de forma estandarizada e independiente del proveedor de inteligencia artificial que utilicemos. Este framework también tiene soporte para Retrieval Augmented Generation, lo que nos facilita enormemente el trabajo.

Creación de la Base de datos de conocimiento

Para llevar a cabo esta labor es necesario recopilar toda la información del cliente disponible. Esta puede ser variada, abarcando formatos como PDFs, páginas web, texto en formato plano, archivos JSON, Markdown, e incluso contenidos en vídeo o audio.

El proceso de creación de la base de datos de conocimiento es el siguiente:

flowchart TD subgraph LLM LLM(<img src="https://manager-lostium.b-cdn.net/app/uploads/2023/10/logo-openai.svg"/>Generación\nembeddings) end subgraph node ["Creación BBDD"] load("fa:fa-file-upload Carga de documentos") pre("fa:fa-spinner Procesado del contenido") split("fa:fa-cut Fase de troceado") store("fa:fa-save Almacenamiento") end load-->pre pre-->split split-->LLM LLM-->store store-->bbdd[("\nfa:fa-bars Vector Base\n")] style load fill:#fff,stroke:#000 style pre fill:#f9620f,stroke:#CA4A05,color:#fff style split fill:#000,stroke:#000,color:#fff style LLM fill:#fff, stroke:#333 style bbdd fill:#fcd948,stroke:#AB8C0E

Para lleva a cabo esta tarea, creamos un proceso a medida con TypeScript y LangChain. Primero cargamos la información proporcionada por el cliente en memoria.

A veces es necesario procesar los documentos. Por ejemplo, si se trata de HTML, puede ser interesante limpiar las etiquetas para quedarnos solo con el texto. Si, en cambio, se trata de un video de YouTube, será necesario transcribir el audio a texto para que pueda ser interpretado por la IA.

La fase de troceado es muy importante, ya que los modelos LLM cuentan con una limitación: no es posible superar el tamaño máximo de la ventana de contexto. Es decir, si tenemos documentos muy grandes, no se los podemos proporcionar de manera completa al modelo, este solo recibirá una serie de trozos relevantes a la pregunta que ha realizado el usuario. 

Una vez que tenemos el conjunto de documentos, resultado de procesar y trocear la información original, necesitamos convertirlos en embeddings. 

¿Y qué es un embedding? Se trata de una representación vectorial de un objeto. Sin profundizar en los aspectos técnicos, estos embeddings se generan utilizando un modelo de IA que se encarga de transformar el texto en vectores numéricos. Los vectores se almacenan en un vector store, que es una base de datos optimizada para almacenar y buscar información en este formato. 

Langchain cuenta con una serie de herramientas para realizar este proceso de forma eficiente. En nuestro caso además nos hemos apoyado en la infraestructura de OpenAI para generar los embeddings.

¿Cómo se procesan las preguntas de los usuarios?

Utilizando el ejemplo que te hemos mostrado en el video, te enseñamos un gráfico un poco más complejo con su funcionamiento:

sequenceDiagram actor Usuario box Aplicación participant App participant Vector Store end box OpenAI participant Whisper participant GPT end box Google Cloud participant Text-to-Speech AI end Usuario->>App: Pregunta App->>Whisper: Audio usuario Whisper->>App: Transcripción pregunta en texto App->>Vector Store: Búsqueda con la pregunta Vector Store->>App: Resultados relevantes App->>GPT: Prompt + contexto + pregunta usuario GPT->>App: Respuesta en texto de la IA generativa App->>Text-to-Speech AI: Respuesta Text-to-Speech AI->>Usuario:Respuesta en audio
  • Usamos un sistema de Speech to Text para transcribir el audio generado por el cliente. En nuestro caso utilizamos Whisper de OpenAI.
  • Convertimos la pregunta en un vector y buscamos documentos relacionados dentro de la vector store para generar un contexto de información.
  • Con los documentos relevantes, componemos una petición al LLM, en nuestro caso gpt-3.5-instructor, con la pregunta del usuario y el contexto resultante de la búsqueda en la vector base.
  • Procesamos la respuesta. Básicamente obtenemos una respuesta en formato texto y utilizando el api de text to speech de Google Cloud, convertimos mediante una IA el texto en voz.

Y ya para terminar, te recordamos que si estás interesado en aplicar IA a tus proyectos y necesitas una solución personalizada, contacta con nosotros y vemos como poder ayudarte.