- Início
- Pensamento
- Genie: Como a Uber Organizou Dados para IA que Funciona
Genie: Como a Uber Organizou Dados para IA que Funciona
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:
- Recebe pergunta via Slack
- Gera embedding usando Ada Embeddings Model
- Busca chunks mais relevantes no Vector DB
- 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
-
RAG é mais rápido para MVP: Não requer dados curados para começar. Fine-tuning pode vir depois.
-
Qualidade dos docs importa mais que o LLM: Avalie e melhore a documentação continuamente. Garbage in, garbage out.
-
Feedback loop desde o dia 1: Integre coleta de feedback no fluxo. Use sistemas de streaming para dados em tempo real.
-
LLM as Judge para avaliação em escala: Permite medir alucinações e relevância sem depender só de feedback manual.
-
Cite fontes em cada resposta: Estruture prompts com sub-contextos + URLs. Reduz alucinações e aumenta confiança.
-
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