Autores: Arthur Vieira y Sandro Santos

Este trabajo fue realizado de forma colaborativa por muchas personas increíbles de los equipos de Ingeniería de TI, People & Culture y NuLLM en Nubank (orden alfabético): Aline Villaça, Camila Masuno, Carolina Junqueira, Daniella Angelos, Douglas Santos, Fabio Yamate, Gabriel Cerqueira, Jader Gomes, Paulo Castro, Rafael Godinho, Silvestre Auricchio, Thiago Mangueira, Thiago Português, Valeska Amodeo y Wesley Santos

Introducción

Con cerca de 9,000 colaboradores y múltiples equipos distribuidos en todo el mundo, sabemos que el acceso rápido y eficiente a la información es clave para mantenernos ágiles en el día a día. Cada equipo en Nubank tiene sus propios procesos y documentación en Confluence, lo que refleja su autonomía—pero también puede hacer que navegar por este conocimiento sea más complejo.

Notamos que, en algunos casos, las personas invertían un tiempo considerable tratando de encontrar la información correcta o de identificar qué equipo era responsable por determinado tema. Esto, en ocasiones, llevaba a la creación de tickets de soporte. En lugar de ver esto como una dificultad, lo entendimos como una oportunidad: ¿cómo podríamos simplificar el acceso a la información a gran escala sin comprometer la autonomía de los equipos?

Frente a este desafío, se creó una solución basada en inteligencia artificial que permite encontrar la información de forma rápida, con una interfaz amigable, sin necesidad de navegar por decenas de páginas o abrir tickets. De esta forma, se fortalece el autoservicio de información en Nubank.

Descubre las oportunidades

La solución

La solución está integrada en Slack, lo que permite que cualquier persona pueda hacer preguntas de manera sencilla. A partir de la consulta del usuario, la herramienta busca las páginas más relevantes en Confluence, recuperando los documentos más pertinentes. Esta documentación alimenta un modelo de lenguaje grande (LLM) que genera una respuesta personalizada. En caso de que la respuesta no sea satisfactoria, la persona puede ser redirigida al portal correspondiente para abrir un ticket sobre el tema.

La solución está basada en Retrieval-Augmented Generation (RAG). Sabemos que los modelos de lenguaje grandes pueden almacenar información factual contenida en sus datos de entrenamiento [1]. Sin embargo, en nuestro caso de uso, nueva información relevante puede generarse en cualquier momento, y entrenar el modelo cada vez sería muy costoso. El enfoque RAG resuelve este problema al permitir buscar información en una base de conocimiento —en este caso, la documentación de Confluence— en tiempo real, para luego generar una respuesta personalizada.

Arquitectura

Indexación y búsqueda en la base de conocimiento

Para que sea posible realizar búsquedas, se extrae automáticamente el texto de cada página de Confluence de los diferentes equipos. Cada documento se divide en fragmentos (chunks), y se conserva información como su ID, título, URL y equipo correspondiente. Luego, estos fragmentos se convierten en embeddings —vectores numéricos que representan su significado semántico— utilizando un LLM. Estos embeddings, junto con sus metadatos, conforman la base de conocimiento (KB). Como la documentación se actualiza con frecuencia, este proceso se ejecuta automáticamente cada 2 horas para garantizar que las personas accedan siempre a información actualizada.

Cuando alguien realiza una consulta, esa pregunta también se convierte en un embedding usando el mismo modelo, y se utiliza para recuperar los fragmentos más relevantes desde la base de conocimiento.

La búsqueda ocurre en dos etapas para generar la respuesta final:

  1. Ruteo: Los fragmentos recuperados se envían a un LLM que realiza una clasificación mediante el enfoque de Few-Shot Learning Dinámico.
  2. Generación de respuesta: Solo se consultan documentos del equipo clasificado. Luego, nuevos fragmentos se envían al LLM para generar una respuesta personalizada.

¿Por qué usamos un proceso en dos etapas?

Para evitar que las respuestas se generen a partir de documentos de distintos equipos —lo que podría causar confusión o respuestas inexactas— y para evitar el uso de documentación interna en preguntas más generales.

Ruteador: Clasificación Dinámica con Few-Shot Learning

Cuando alguien realiza una consulta, la solución determina qué equipo es el más adecuado para responderla. Esto se logra a través de un motor de clasificación basado en un LLM y un enfoque de Few-Shot Learning Dinámico.

Los LLMs tienen la capacidad de aprender con pocos ejemplos (few-shot learning) [2]. Los ejemplos que se usan en el momento de la clasificación se eligen a partir de los fragmentos recuperados en la primera búsqueda. Es decir, los fragmentos, sus equipos asociados y la consulta del usuario se utilizan para identificar a qué equipo debe asignarse la solicitud.

También hay casos en los que no se requiere documentación interna para responder, como traducciones, resúmenes o preguntas de conocimiento general. En estos casos, el ruteador puede clasificar la consulta como “Fuente externa”. Se incluyen ejemplos de este tipo de preguntas en los few-shots usados por el modelo.

Generación de respuesta

Una vez identificado el equipo, se realiza una nueva búsqueda, pero ahora solo entre los documentos de ese equipo. Los fragmentos recuperados y la consulta del usuario se envían al LLM, que genera una respuesta personalizada. También se incluyen referencias con las URLs de los documentos usados para que la persona pueda profundizar si lo desea.

Si la respuesta no es satisfactoria, la persona puede ser redirigida al portal del equipo correspondiente para abrir un ticket.

Métricas

Seis meses después del lanzamiento general de la herramienta:

  • 5 mil personas usuarias distintas
  • 280 mil mensajes enviados
  • 80% de retroalimentación positiva sobre las respuestas (6% de tasa de respuesta)
  • 96% de desvío de tickets en dominios internos (desvío se calcula como los tickets evitados gracias al uso de la herramienta)
  • 70% de retención de personas usuarias dentro de un periodo de 30 días
  • 9 segundos promedio para recibir una respuesta en AskNu (el tiempo para encontrar la respuesta en Confluence lleva hasta 30 minutos o 8 horas si el colaborador necesita abrir un ticket)

La calidad del ruteo, es decir, su capacidad para identificar correctamente el equipo que debe responder, se mide en términos de precision (78%) y recall (77%).

En cuanto a la calidad de las respuestas, los equipos dueños del contenido auditan regularmente las respuestas para encontrar oportunidades de mejora en la documentación. Actualmente, el 74% de las respuestas a solicitudes internas han sido calificadas como precisas.

Conclusión / Próximos pasos

Esta solución ha sido un gran éxito dentro de la empresa, ya que ha sido adoptada por la mayoría de los Nubankers, reduciendo el tiempo necesario para encontrar información y el número de tickets creados.

Como próximos pasos, estamos trabajando continuamente en mejorar el ruteo para aumentar las métricas de la respuesta final. Además, también estamos trabajando en integrar esta solución con los sistemas internos de la empresa, para que sea posible automatizar tareas directamente desde la herramienta, como abrir tickets, solicitar recibos de sueldo, vacaciones o acceso a plataformas.

En el próximo post, compartiremos los esfuerzos que ya están en marcha para mejorar la gobernanza del contenido: cómo identificar documentación duplicada, inconsistente, preguntas frecuentes y documentación inexistente.

Referencias

[1] Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., Küttler, H., Lewis, M., Yih, W., Rocktäschel, T., Riedel, S., Kiela, D. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv preprint arXiv:2005.11401.

[2] Brown, T.B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., Agarwal, S., Herbert-Voss, A., Krueger, G., Henighan, T., Child, R., Ramesh, A., Ziegler, D.M., Wu, J., Winter, C., Hesse, C., Chen, M., Sigler, E., Litwin, M., Gray, S., Chess, B., Clark, J., Berner, C., McCandlish, S., Radford, A., Sutskever, I., Amodei, D. (2020). Language Models are Few-Shot Learners. arXiv preprint arXiv:2005.14165.

Descubre las oportunidades