mais lidos
Life at Nu
Conheça a sede do Nubank em Pinheiros, São Paulo/Brasil jan 11
Design
A nova aparência do Nubank: conheça nossa nova logo maio 17
Culture & Values
Como os valores e a cultura da Nu moldam os produtos que criamos ago 7
Carreiras
Reunimos grandes mentes de diversas origens que permitem a discussão e o debate e melhoram a resolução de problemas.
Saiba mais sobre nossas carreiras



Autores: Arthur Vieira e Sandro Santos
Este trabalho foi realizado de forma colaborativa por várias pessoas incríveis dos times de IT Engineering, People & Culture e NuLLM no Nubank (ordem alfabética): 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 e Wesley Santos
Introdução
Com cerca de 9 mil colaboradores e múltiplos times ao redor do mundo, sabemos que garantir acesso rápido e eficiente à informação é essencial para manter a agilidade no dia a dia. Cada área do Nubank possui seus próprios processos e documentações no Confluence, o que reflete a autonomia das equipes — mas também pode tornar a navegação por esse conhecimento mais complexa. Percebemos que, em algumas situações, os colaboradores investiam tempo significativo tentando encontrar a informação certa ou entender qual time era o responsável por determinado assunto, o que ocasionalmente levava à abertura de tickets de suporte. Esses pontos de fricção representaram para nós uma oportunidade clara: como poderíamos facilitar o acesso à informação de forma escalável, sem comprometer a autonomia das áreas?
Diante desse cenário, foi criada uma solução baseada em IA para facilitar a busca por informações de maneira rápida, por meio de uma interface amigável, sem a necessidade de navegar por dezenas de páginas ou abrir tickets, fortalecendo a cultura de autoatendimento da informação no Nubank.
Conheça nossas oportunidades
A Solução
A solução foi integrada ao Slack, permitindo que colaboradores realizem suas consultas com facilidade. A partir da pergunta feita pelo usuário, a ferramenta busca pelas páginas mais relevantes no Confluence e recupera os documentos mais adequados. Esses documentos alimentam um modelo de linguagem de grande escala (LLM), que gera uma resposta personalizada — e, caso a resposta não seja satisfatória, o usuário é direcionado ao portal correspondente para abrir um ticket.
Essa abordagem se baseia no framework de Retrieved Augmented Generation (RAG). Sabe-se que modelos de linguagem de grande escala têm a capacidade de armazenar informações factuais com base em seus dados de treinamento [1]. No entanto, no nosso caso de uso, novas informações relevantes podem ser criadas a qualquer momento, e fazer fine-tuning no modelo sempre que isso ocorre seria inviável em termos de custo. O RAG resolve esse problema ao permitir que o modelo busque informações em uma base de conhecimento — neste caso, as documentações do Confluence do Nubank — para recuperar os dados relevantes em tempo real e gerar uma resposta personalizada.
Arquitetura
Indexação e Busca na Base de Conhecimento
Para tornar os documentos pesquisáveis, o conteúdo textual de cada página do Confluence é automaticamente extraído. Cada documento é dividido em blocos menores (chunks), mantendo metadados como ID, título, URL e departamento. Esses blocos são convertidos em embeddings — vetores numéricos que representam seu significado semântico — por meio de um LLM. Esses embeddings, junto com seus metadados, compõem a base de conhecimento (KB).
Como as documentações são atualizadas com frequência pelos departamentos, esse processo é executado automaticamente a cada 2 horas, garantindo que os colaboradores sempre tenham acesso às informações mais recentes.
Quando um usuário faz uma pergunta, essa consulta também é transformada em um embedding pelo mesmo LLM, e os blocos mais relevantes da base de conhecimento são recuperados.
A busca acontece em duas etapas para gerar a resposta final:
Por que utilizar um processo em duas etapas?
Para evitar que respostas sejam geradas com base em documentações de diferentes departamentos — o que pode levar a respostas imprecisas ou confusas. Além disso, essa abordagem ajuda a evitar o uso de informações internas para responder perguntas genéricas.
Roteador: Classificador Dinâmico Few-Shot
Quando um usuário realiza uma pergunta, a solução identifica qual departamento tem maior probabilidade de conter a resposta. Isso é feito com um mecanismo de classificação baseado em LLM, usando a abordagem Dynamic Few-Shot Classification.
LLMs são few-shot learners [2], ou seja, são capazes de aprender com poucos exemplos durante a execução. Os exemplos usados são determinados pelos chunks recuperados na primeira etapa da busca. Assim, os chunks, seus respectivos departamentos e a consulta do usuário são enviados ao LLM para identificar o departamento mais adequado para responder à dúvida.
Há também casos em que a pergunta não requer consulta à documentação interna — como pedidos de tradução, resumo ou perguntas de conhecimento geral. O roteador é capaz de alocar esse tipo de pergunta como “Fonte Externa”, com exemplos desse tipo de consulta incluídos nos exemplos de few-shot.
Geração da Resposta
Uma vez identificado o domínio (departamento), uma nova busca é feita, agora restrita à documentação daquele departamento. Os chunks recuperados e a pergunta do usuário são enviados ao LLM, que gera uma resposta personalizada. As URLs dos documentos usados também são apresentadas ao usuário, caso ele deseje se aprofundar.
Se o usuário não estiver satisfeito com a resposta, ele pode ser direcionado ao portal do departamento para abertura de um ticket.
Métricas
Seis meses após o lançamento da ferramenta para todos os colaboradores, os resultados foram:
A qualidade do roteador — ou seja, sua capacidade de identificar corretamente o departamento responsável pela dúvida — é medida com base em Precisão (78%) e Recall (77%).
Em relação à qualidade das respostas, os responsáveis por cada departamento auditam regularmente as respostas fornecidas pela ferramenta para identificar oportunidades de melhoria na documentação. Atualmente, 74% das respostas para domínios internos foram classificadas como precisas.
Conclusão / Próximos Passos
A solução tem se mostrado um grande sucesso na empresa, sendo amplamente adotada pelos Nubankers, reduzindo tanto o tempo necessário para encontrar informações quanto o número de tickets abertos.
Como próximos passos, estamos trabalhando continuamente na qualidade do roteador para melhorar as métricas de ponta a ponta. Também estamos trabalhando na integração da ferramenta com nossos sistemas corporativos, o que permitirá automatizar a execução de tarefas, como:
No próximo post, vamos compartilhar os esforços que estão sendo feitos em relação à governança de conteúdo: como identificar documentações duplicadas, inconsistentes, perguntas frequentes e lacunas de informação.
Referências
[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.
Conheça nossas oportunidades