Aprovechando al máximo nuestros datos con los grandes modelos de lenguaje: Introducción a RAG

Augusto Romero
4 min readOct 13, 2023

--

Los modelos de lenguaje generativos han experimentado avances increíbles en los últimos años. Pasamos de resultados mediocres en tareas como completar poesías en 2020, a modelos como GPT-4 capaces de generar código funcional a partir de una simple imagen en 2023.

Detrás de estos avances se encuentra una convergencia de factores. Por un lado, el progreso en redes neuronales y arquitecturas como Transformer desde 2017. Por otro, la vasta cantidad de datos y potencia de cálculo disponibles hoy en día.

En este blog veremos cómo sacarle el máximo partido a nuestros propios datos corporativos o especializados utilizando las últimas técnicas en modelos generativos del lenguaje natural.

De prompt engineering a RAG: Aprovechando nuestros datos

Al interactuar con grandes modelos de lenguaje entrenados con el contenido en internet como GPT 4 O Claude 2, tenemos que orientarlos cuidadosamente hacia nuestras necesidades a través de prompts bien diseñados. A esto se le conoce como prompt engineering.

Sin embargo, el prompt engineering tiene limitaciones. Por más específicos que seamos, el modelo puede fallar en tareas que requieran conocimiento altamente especializado o datos propietarios.

Aquí es donde entra el concepto de RAG (Retrieval Augmented Generation). La idea es simple: recuperamos trozos de nuestros propios datos relevantes para la consulta, y se los adjuntamos al prompt para proveer contexto.

De esta manera, además de las capacidades generales del modelo de lenguaje, podemos brindarle acceso a nuestro conocimiento particular del dominio. El resultado es una respuesta mucho más informada y útil.

Introducción a RAG

RAG aprovecha lo mejor de dos enfoques:

  • Recuperación: buscar fragmentos de texto relevantes de una base de datos de documentos.
  • Generación: generar respuestas nuevas y contextualizadas.

Al combinar estas técnicas, RAG puede proveer respuestas de alta calidad, relevantes y específicas al contexto de la conversación.

Implementando RAG paso a paso

La implementación típica de RAG con un gran modelo del lenguaje consiste en los siguientes pasos:

  1. Identificar nuestras bases de datos relevantes para la tarea que queremos realizar (emails, reportes, artículos de conocimiento, etc).
  2. Preprocesar estos datos y convertirlos a embeddings vectoriales utilizando herramientas como Document Loaders & Text Splitters.
  3. Indexar los embeddings en una base de datos vectorial para recuperación rápida.
  4. Al hacer una consulta, recuperar los embeddings más relacionados y adjuntarlos al prompt para el LLM.
  5. El LLM luego utiliza el prompt y los embeddings más relevantes para generar una respuesta optimizada con nuestro contexto.

Introducción a LangChain para RAG

LangChain es una herramienta diseñada para integrar los grandes modelos de lenguaje como GPT-3, GPT-4, ChatGPT, etc a nuestras aplicaciones. Tiene implementaciones tanto en Javascript como Python. Vamos a ver cómo podemos aprovecharlo para implementar RAG (Retrieval Augmented Generation) con nuestros datos.

Características clave de LangChain

LangChain tiene varios componentes:

  • Modelos: Las redes neuronales que procesan y generan respuestas de texto. Por ejemplo, GPT-3, GPT-4, etc.
  • Prompts: Inputs estructurados que le dan contexto al modelo. Tenemos acceso a diferentes formatos de prompt templates para reusar en nuestras aplicaciones.
  • Índices: Permiten a los modelos acceder a varias fuentes de datos, como documentos, splitters, vector stores y retrievers.
  • Memoria: Plantillas de memoria para que los chatbots retengan el historial de conversación.
  • Cadenas: Cadenas de modelos donde la salida de uno puede ser la entrada de otro.
  • Agentes: Cadenas avanzadas con acceso a herramientas externas para brindar información más precisa y actualizada.

Para profundizar en como implementar estos conceptos usando Flowise (herramienta visual para usar Langchain) te dejo el enlace al blog donde veremos la parte práctica.

Ejemplos de casos de uso: asistentes virtuales especializados

Algunos casos donde RAG puede ser muy útil:

  • Un asistente de soporte técnico que puede consultar toda la base de conocimiento de la empresa.
  • Un asistente de onboarding que permite acelerar el proceso de aprendizaje de un nuevo empleado.
  • Un chatbot de servicio al cliente que puede revisar información de cuenta y transacciones anteriores.

Las posibilidades son enormes. Con RAG podemos crear agentes conversacionales “de nicho” altamente personalizados para necesidades específicas de una organización.

Un futuro prometedor

Es un momento fascinante para la Inteligencia Artificial generativa. Conceptos como RAG permiten que modelos de lenguaje generales se especialicen en nuestras necesidades particulares.

Podemos vislumbrar un futuro cercano en que asistentes virtuales poseen un conocimiento casi humano de nuestros negocios y áreas de interés, desbloqueando todo su potencial transformador.

--

--

Augusto Romero

I'm a software developer deeply fascinated by AI. When I'm not coding, you'll find me staying fit or diving into the latest tech and business trends.