Uber builds Enhanced Agentic-RAG (EAg-RAG) to raise Genie on-call copilot answer quality to near-human precision
Genie's initial RAG implementation, when tested against 100+ golden queries on Uber's engineering security and privacy policy documents, produced responses that were incomplete, inaccurate, or failed to retrieve relevant information — falling short of the standards needed for broader Slack channel deployment. PDF loaders also failed to preserve complex table formatting, degrading downstream chunking and retrieval quality.
Traditional PDF loaders (SimpleDirectoryLoader from LlamaIndex and PyPDFLoader from LangChain) stripped table formatting, disconnecting cells from their row and column context and degrading chunking and retrieval. Experiments with newer loaders including PdfPlumber, PyMuPDF, and LlamaParse could not provide a universal solution. SME-driven evaluation also took weeks per experiment, stalling iteration with only marginal accuracy gains.
By transitioning to an Enhanced Agentic-RAG (EAg-RAG) architecture, Uber increased the percentage of acceptable answers by a relative 27% and reduced incorrect advice by a relative 60%, enabling Genie to scale across multiple security and privacy Slack channels with a measurable reduction in on-call engineer and SME support load.
Frequently asked questions
What did this team achieve with this AI workflow?
By transitioning to an Enhanced Agentic-RAG (EAg-RAG) architecture, Uber increased the percentage of acceptable answers by a relative 27% and reduced incorrect advice by a relative 60%, enabling Genie to scale across…
What tools did this team use?
Genie, LangChain, LangGraph, LlamaIndex, LlamaParse, PdfPlumber, PyMuPDF, Michelangelo, Langfx, html2text.
What results were reported?
Acceptable answers increase: relative 27%; Incorrect advice reduction: relative 60%; Experiment evaluation time: reduced from weeks to minutes; SME and on-call engineer support load: measurable reduction (source-reported, not independently verified).
What failed first in this deployment?
Traditional PDF loaders (SimpleDirectoryLoader from LlamaIndex and PyPDFLoader from LangChain) stripped table formatting, disconnecting cells from their row and column context and degrading chunking and retrieval.
How is this it support AI workflow structured?
Enriched document ingestion → User query submitted via Slack → Query Optimizer refines query → Source Identifier narrows document scope → Hybrid vector + BM25 retrieval → Post-Processor Agent structures context → Answer generated and delivered via Slack → LLM-as-Judge automated evaluation.