Governança como Vantagem

Genie: Como a Uber Organizou Dados para IA que Funciona

TV
Thiago Victorino
12 min de leitura

Na Uber, times como o Michelangelo mantinham canais Slack para suporte interno. O volume de perguntas era enorme: 45.000 perguntas por mês. Usuários esperavam muito tempo por respostas, informações ficavam fragmentadas em wikis, Stack Overflow interno e docs, e as mesmas perguntas eram feitas repetidamente.

A solução? Genie, um copiloto Gen AI on-call que transformou o suporte interno.

A Decisão Arquitetural: RAG vs Fine-tuning

A Uber escolheu RAG (Retrieval-Augmented Generation) em vez de fine-tuning por razões práticas:

Por que não fine-tuning:

  • Requer dados curados de alta qualidade
  • Precisa de exemplos diversos para o LLM aprender
  • Exige recursos computacionais para atualizar
  • Time-to-market mais longo

Por que RAG:

  • Não requer exemplos diversos para começar
  • Fácil de atualizar com novos dados
  • Time-to-market reduzido
  • Responde com base em documentação real

Os desafios a resolver com RAG incluíam alucinações, segurança de dados e experiência do usuário.

Arquitetura: Do Dado à Resposta

O fluxo de dados do Genie pode ser generalizado como uma aplicação RAG usando Apache Spark.

Ingestão de Dados

  • Fontes: Wiki interna (Engwiki), Stack Overflow interno, documentos de requisitos
  • Processamento: Apache Spark para ETL em escala
  • Embeddings: OpenAI embedding model
  • Armazenamento: Terrablob (blob storage) + Sia (vector DB interno)

Serving (Resposta)

  • Entrada: Pergunta do usuário no Slack
  • Knowledge Service: Converte pergunta em embedding, busca chunks relevantes
  • LLM: Gera resposta usando contexto recuperado
  • Saída: Resposta com URL da fonte + botões de ação

Pipeline ETL com Apache Spark

O pipeline de ingestão tem 4 etapas:

1. Data Prep: Busca conteúdo das fontes via APIs. Output: DataFrame com URL e conteúdo.

2. Embeddings Creation: Chunking com LangChain + geração de embeddings via OpenAI usando PySpark UDFs.

3. Vector Pusher: Push dos embeddings para Terrablob. Jobs Spark para build e merge de índices.

4. Vector DB Sync: Cada leaf sincroniza e baixa o índice base do Terrablob diariamente.

Por que Spark? Processamento distribuído para grande volume, UDFs permitem integrar OpenAI, facilita orquestração de pipelines, e integração nativa com blob storage.

Knowledge Service: O Coração do Genie

O Knowledge Service é o backend que processa todas as consultas. O fluxo:

  1. Recebe pergunta via Slack
  2. Gera embedding usando Ada Embeddings Model
  3. Busca chunks mais relevantes no Vector DB
  4. Envia prompt com contexto para o LLM

Cost Tracking integrado: Cada chamada passa um UUID pelo contexto, permitindo rastrear custos por canal, time ou caso de uso. Prática recomendada: sempre implemente rastreamento de custos desde o início.

O Insight Crucial: Qualidade da Documentação

“Se a qualidade da documentação é ruim, não importa quão bom o LLM seja - não há como ter boa performance.”

A Uber criou um sistema para avaliar e melhorar a qualidade dos documentos na base de conhecimento. O sistema retorna:

  • Score de avaliação para cada documento
  • Explicação do score
  • Sugestões acionáveis de como melhorar

Reduzindo Alucinações

A estratégia principal foi estruturar prompts com sub-contextos e URLs:

Sub-contexto 1: [conteúdo]
Fonte: [URL]

Sub-contexto 2: [conteúdo]
Fonte: [URL]

Instrução: Responda APENAS usando os sub-contextos acima
e cite a URL fonte para cada resposta.

Resultado: Cada resposta inclui a URL da fonte, permitindo verificação pelo usuário.

Outras estratégias:

  • Curadoria de fontes: Só usam fontes amplamente disponíveis para engenheiros
  • Dados atualizados: Pipeline diário garante informações recentes
  • Verificação contra fontes: Mecanismos para verificar respostas contra fontes autoritativas

Sistema de Feedback Integrado

Usuários dão feedback clicando em botões na resposta do Genie:

  • Resolved: Resposta resolveu completamente o problema
  • Helpful: Ajudou parcialmente, mas precisa de mais
  • Not Helpful: Resposta errada ou não relevante
  • Not Relevant: Usuário precisa de ajuda humana

Dados em tempo real permitem identificar rapidamente problemas e ajustar o sistema.

LLM como Juiz

Para avaliar respostas em escala, a Uber usa LLM as a Judge. O LLM compara respostas contra padrões-ouro ou preferências humanas.

Métricas avaliadas:

  • Taxa de alucinação
  • Relevância da resposta
  • Cobertura do contexto
  • Qualquer métrica customizada

Resultados Desde o Lançamento

Desde setembro de 2023:

  • 154 canais Slack atendidos
  • 70.000+ perguntas respondidas
  • 48,9% taxa de utilidade
  • 13.000 horas de engenharia economizadas

Considerando salário médio de engenheiro, 13.000 horas economizadas representam um valor significativo em produtividade recuperada.

6 Insights para Replicar

  1. RAG é mais rápido para MVP: Não requer dados curados para começar. Fine-tuning pode vir depois.

  2. Qualidade dos docs importa mais que o LLM: Avalie e melhore a documentação continuamente. Garbage in, garbage out.

  3. Feedback loop desde o dia 1: Integre coleta de feedback no fluxo. Use sistemas de streaming para dados em tempo real.

  4. LLM as Judge para avaliação em escala: Permite medir alucinações e relevância sem depender só de feedback manual.

  5. Cite fontes em cada resposta: Estruture prompts com sub-contextos + URLs. Reduz alucinações e aumenta confiança.

  6. Rastreie custos por UUID: Passe identificadores em cada chamada para audit log. Permite otimização de custos.

A Lição Principal

O Genie demonstra que IA que funciona em produção não depende apenas do modelo mais avançado. Depende de:

  • Dados bem organizados
  • Documentação de qualidade
  • Feedback contínuo
  • Rastreamento de custos
  • Citação de fontes

A infraestrutura de dados é o verdadeiro diferencial competitivo.


Na Victorino Group, ajudamos empresas a organizar dados e construir agentes de IA com resultados reais. Se você quer implementar IA que funciona, vamos conversar.

Se isso faz sentido, vamos conversar

Ajudamos empresas a implementar IA sem perder o controle.

Agendar uma Conversa