Montar un sistema RAG para chatear con tus datos: Puntos a tener en cuenta

6 September 2024| Tags: AI, GenAI, RAG, Data Coach

No es todo tan fácil como parece

En taniwa trabajamos en muchos proyectos de IA y Machine Learning. Lo importante siempre son los datos y el cariño que pongas a los detalles. Osea, que la tecnología no suele ser el problema principal sino cómo te organices, cómo cuides los datos, cómo los consigues y cómo los presentas.

Montar una demo de un sistema RAG (Retrieval Augmented Generation) con los datos de la empresa es directo; son 5 minutos:

  • Instalas LangChain o Llamaindex
  • Troceas tus documentos en párrafos (chunks), conviertes esos datos en vectores y los metes en una Vector Index Database.
  • Los metes en una Vector Index Database.
  • Preparas un prompt y a chatear.

Pero en el mundo real esa demo no sirve. Veamos por qué:

Los datos y su formato

Siempre hay que entender los datos que vas a indexar. En el ejemplo de 5 minutos de antes no sabemos si estamos con textos, PDFs, tablas, imágenes, audios, vídeos, código python o qué.

  • Si son imágenes o vídeos es probable que los pasemos por un modelo que nos los convierta en texto.
  • Si son tablas, lo mismo. Si son audios, lo mismo
  • Si es código la forma de indexarlos será diferente.

Los trocitos importan

El proceso de “chunking” no es trivial. No es lo mismo trocear un texto en párrafos que en frases, o en palabras. En el ejemplo se están troceando los documentos en textos que se solapan entre sí, para que el sistema pueda encontrar la información que necesitas, pero ese acercamiento es muy mejorable.

  • Si tienes documentos con secciones, títulos, subtítulos y párrafos es importante usar esa información para trocear.
  • Si tienes código usa las funciones, los comentarios, las variables, paquetes o librerías.
  • Una tabla en un documento no tiene mucho sentido que se trocee, pero sí que se indexe entera.
  • En algunos casos no tienes que trocear nada. Piensa en tweets por ejemplo.*

Preparar el prompt

Antes de que el sistema RAG pueda responder a las preguntas de los usuarios, éstas se pueden procesar para mejorar la calidad de las respuestas.

  • Puedes usar un LLM que regenera la pregunta para que sea más clara o más correcta en un entorno de trabajo (documentos legales por ejemplo).
  • Puedes hacer que un LLM chatee con el usuario para clarificar la pregunta.
  • Usar HyDE (Hypothetical Document Embedding ) le pide a un LLM que cree documentos para la consulta y estos documentos “falsos” se utilizan como nuevas consultas para obtener incrustados y buscar vecinos con el recuperador denso.

Mejorar la parte que trae los trocitos

Si los trocitos no son buenos, la respuesta no será buena.

  • Hybrid Search, que combina la búsqueda por vectores cercanos y la búsqueda de palabras clave (ElasticSearch por ejemplo), puede ser una buena opción.
  • Filtrar los trozos por el título o la sección primero.
  • Probar con diferentes modelos de embeddings para ver cuál funciona mejor (BERT, GPT, etc.)
  • Puedes hacerte tu propio modelo de embeddings afinado con tus datos.

Mejorar las respuestas:

Las respuestas se pueden tratar y corregir antes de dárselas al usuario.

  • Reranking: Puedes usar un modelo de clasificación para reordenar los resultados. Hay modelos disponibles gratuitos en HuggingFace.
  • Eliminar chunks que no aportan nada a la respuesta con un LLM.

Testear y mejorar

Preparar un conjunto de queries y respuestas esperadas para testear el sistema siempre que éste evolucione.

  • Puedes usar un modelo de clasificación para evaluar la calidad de las respuestas.
  • Puedes usar un modelo de generación de texto para puntuar las respuestas.

Arquitectura

No nos olvidemos de la arquitectura:

  • Forma de servir las respuestas.
  • API REST, GraphQL, Websockets, etc.
  • Cómo se van a almacenar los datos.
  • Seguridad
  • Escalabilidad

Conclusión

Sin cariño no hay calidad.

Post Original

Foto de Dainis Graveris

SO WHAT DO YOU THINK ?

Contact us and challenge us with a problem
+34 644 237 135
hola@taniwa.es

SOMOS PYME INNOVADORA
Sello PYME INNOVADORA 06/11/2027 escudo de MEIC 06/11/2027

CONTACT TANIWA