RSA Track · Module 04

GenAI on Databricks

Mosaic AI end to end - anchored to the three agents you have already shipped to production at ADM.

This is your differentiator module. Most candidates at every level can recite RAG theory; very few have shipped GenAI to production with real users, real security constraints, and real adoption pressure. You have: three agents over HR data at ADM, live in a Databricks App, governed by Unity Catalog. Your job here is to map what you built onto the current Mosaic AI vocabulary so you can talk about it the way an RSA would advise a customer - components, trade-offs, evaluation, governance - not the way a demo talks about itself.

The Mosaic AI stack, by its current names

Naming has moved fast. As of mid-2026, this is the map you should speak from. Notice how each piece corresponds to something concrete in your ADM build - that mapping is what makes your answers land.

ComponentWhat it isWhere it shows up in your ADM build
Mosaic AI Model ServingOne endpoint abstraction for custom models, foundation models, and external models. REST + low-latency serving, with inference tables for payload logging.The LLM endpoints behind the Policy RAG assistant.
Foundation Model APIsDatabricks-hosted models on pay-per-token or provisioned throughput. Pay-per-token for prototyping; provisioned throughput for predictable latency and cost at scale.Embedding and chat endpoints for retrieval and answer generation.
External models / AI GatewayGovern third-party LLMs (Azure OpenAI, Anthropic, etc.) behind the same endpoint abstraction: rate limits, payload logging, fallbacks. Naming shifted recently: the legacy "Mosaic AI Gateway" features live on serving endpoints, while the newer governance control plane is "Unity AI Gateway" (Beta as of mid-2026) - check current docs before quoting names to a customer.The pattern you would recommend when a customer insists on a specific external model but still wants central governance.
Mosaic AI Vector SearchManaged vector index that syncs from a Delta table, with hybrid keyword + vector retrieval.The policy-document chunk index behind the RAG assistant.
AI/BI GenieNatural-language Q&A over curated structured data; GA since June 2025. Generates and shows SQL.The Corporate Headcount & Salaries Data Agent.
Agent Framework / Agent BricksCode-first agent authoring (Agent Framework) versus declarative, task-first agent building (Agent Bricks, Beta since June 2025 and the flagship direction). Agent Evaluation functionality has largely converged into MLflow 3.Your router agent is the code-first pattern; know Agent Bricks well enough to position it.
MLflow 3GA, redesigned for GenAI: tracing/observability for agents running anywhere, evaluation harness with LLM judges, prompt registry.How you would harden evaluation and tracing on your agents going forward.
Databricks AppsHosted, governed web apps (Streamlit, Gradio, Dash, Flask...) running next to the data with UC-aware auth.The Streamlit UI that hosts all three agents.

RAG done properly

A production RAG system is a data engineering problem wearing an AI costume - which is exactly why your background is an advantage. Walk it as a pipeline:

1. Ingestion and chunking

Documents land in a Delta table first - raw text plus metadata (source path, document title, section, effective date, owner). Chunking is where most quality is won or lost: chunk along document structure (headings, sections, clauses) rather than fixed token windows, keep chunks self-contained, and carry metadata on every chunk so retrieval can filter and citations can point somewhere real. For policy documents, a section-level chunk with the policy name prepended retrieves far better than an arbitrary 512-token slice.

2. Embedding pipeline: Delta to Vector Search

The clean pattern is a Delta Sync Index: Vector Search watches a source Delta table (Change Data Feed enabled) and keeps the index current - embeddings computed server-side by an embedding endpoint. Triggered sync for content that changes on a schedule (policies), continuous for fresher needs.

from databricks.vector_search.client import VectorSearchClient

vsc = VectorSearchClient()
index = vsc.create_delta_sync_index(
    endpoint_name="hr-vs-endpoint",
    index_name="hr.policies.policy_chunks_idx",
    source_table_name="hr.policies.policy_chunks",   # Delta table, CDF enabled
    pipeline_type="TRIGGERED",                       # or CONTINUOUS
    primary_key="chunk_id",
    embedding_source_column="chunk_text",
    embedding_model_endpoint_name="databricks-gte-large-en",
)

The architectural point to make: because the index syncs from Delta, the document corpus inherits the same lineage, governance, and pipeline discipline as every other table in the lakehouse. No side-channel vector database to govern separately.

3. Hybrid retrieval, grounding, citations

The Employee Policy RAG Assistant at ADM is your concrete version of all of this: policy documents chunked into Delta, synced into Mosaic AI Vector Search, answered through LLM endpoints - and every answer carries citations back to the source policy. When an interviewer asks "how do you handle hallucination?", you don't theorize: HR questions touch leave, pay, and compliance, so you made citation non-negotiable and grounded answers strictly in retrieved policy text. An uncited answer about parental leave is a liability, not a feature.

4. Evaluation: the part that separates shipped from demoed

import mlflow
from mlflow.genai.scorers import Correctness, RelevanceToQuery, Safety

results = mlflow.genai.evaluate(
    data=golden_set,            # question, expected_facts, source_doc
    predict_fn=policy_rag_agent,
    scorers=[Correctness(), RelevanceToQuery(), Safety()],
)
# Gate releases on these scores; rerun on every prompt or index change.

The demo-RAG trap. A weekend RAG demo and a production RAG system look identical in a screenshot. The differences: fixed-size chunking with no metadata (retrieval quality collapses on real corpora), no golden set (so "it seems better" is the entire QA process), a stale index because nobody owns the sync, and no tracing (so the first bad answer in front of a VP is undebuggable). If you can name these failure modes unprompted, you sound like someone who has been burned by them - which is the point.

Genie spaces: NL analytics over structured data

RAG answers "what does the document say?"; AI/BI Genie answers "what does the data say?" - natural language to SQL over curated tables. The craft is in the word curated:

Your Corporate Headcount & Salaries Data Agent is a Genie space over PeopleSoft and SAP labor data - and you deliberately kept the generated SQL visible to users. That decision is a story about trust engineering: HR analysts shouldn't have to accept a black box telling them headcount numbers that feed real decisions, but they can accept an assistant whose work they can check. The design bet was that verifiability earns adoption. That's a consulting insight, not just a feature choice - use it.

Treat a Genie space like a product, not a config. Review the question log weekly: wrong answers become new instructions or trusted assets; unanswerable questions reveal missing gold tables. Curation is an ongoing loop, and "who owns the Genie space?" is a question that instantly elevates a customer conversation.

Agent patterns: routing, tools, guardrails

Real questions don't sort themselves into "structured" and "unstructured" - users ask whatever they ask. Hence the supervisor/router pattern:

Position Agent Bricks correctly when asked: it's the declarative, task-first way to build this class of agent (describe the task, bring the data, let the platform optimize), in Beta since mid-2025. You built yours code-first with explicit routing - which means you can explain what the abstraction is doing under the hood. That's the stronger position, not the weaker one.

Databricks Apps: where the UI lives

Databricks Apps hosts custom web UIs - Streamlit, Gradio, Dash, Flask - inside the platform: serverless hosting, workspace identity, UC-aware authorization, no separate web infrastructure to stand up or secure. For your build it meant the Streamlit front end, the embedded Genie space, and Databricks dashboards all live behind one login, one permission model, and zero extra infrastructure tickets. The alternative - an external web app holding service credentials into the lakehouse - is a security review you no longer have to have.

Governing GenAI: where most deployments stall

The single most important sentence in your governance story: the agent never has more privilege than the person asking.

Your strongest security story: the headcount agent answers over salary data. You enforced Unity Catalog row- and column-level permissions on the underlying HR tables, so the same question - "average salary in my org" - returns what each user is entitled to see and nothing more. Compensation detail for authorized HR users; masked or filtered results for everyone else. No prompt engineering involved: security lives in the data layer, where it can't be jailbroken. When an interviewer or a customer CISO asks "how do you stop the agent leaking sensitive data?", this is a production answer, not a slideware answer.

Case study: three agents, one architecture

Present your ADM GenAI work as one coherent system, not three disconnected projects.

                    HR users (UC identity)
                            |
              Databricks App  -  Streamlit UI
        (embedded Genie space + AI/BI dashboards)
                            |
                  Multi-Agent Assistant
                 (LLM intent router agent)
                  /                    \
   "How many analysts          "How much parental
    joined in Q1?"              leave do I get?"
          |                            |
   Genie Space agent            Policy RAG agent
   PeopleSoft + SAP             Vector Search index
   labor data (gold)            policy_chunks (Delta sync)
   SQL shown to user            LLM endpoint, answers
          |                     with citations
          \                    /
           Unity Catalog governance
   row/column security, audit, lineage - one
   permission model across both data paths
  1. Structured path. The Headcount & Salaries agent is a curated Genie space over PeopleSoft and SAP labor data, generated SQL exposed for verification, RLS/column masks enforcing who sees compensation.
  2. Unstructured path. The Policy RAG assistant retrieves from a Vector Search index synced from Delta and answers through LLM endpoints with citations to the source policy.
  3. Router. The combined assistant classifies intent and dispatches, so users get one front door instead of learning which bot does what.
  4. Surface. Everything ships as a Databricks App with a custom Streamlit UI, embedded Genie space, and dashboards - one governed entry point, no external hosting.
  5. Governance. Unity Catalog underneath both paths: identical permissions whether a user queries directly, asks Genie, or asks the router.

"Walk me through a GenAI system you've taken to production." Structure: (1) the user problem - HR teams needed self-service answers across structured workforce data and unstructured policy documents; (2) the architecture - the diagram above, narrated structured path, unstructured path, router, app surface; (3) the two hard problems - trust (solved with visible SQL and citations) and security (solved with UC row/column permissions so the agent inherits the asker's entitlements); (4) operations - what you'd deepen next, such as MLflow 3 tracing and a formal golden-set gate on every prompt or index change. Four beats, under three minutes, every claim concrete.

"How do you evaluate whether an agent is good enough to ship?" Outline: define "good" per backend - for text-to-SQL, execution accuracy against curated question/SQL pairs and trusted-asset coverage of the must-be-right questions; for RAG, groundedness, correctness, and citation accuracy against a golden set sourced from real user questions. Use LLM judges (MLflow 3 scorers) for scale, calibrated against human labels. Gate releases on scores, trace everything in production, and feed bad production answers back into the golden set. Close with the differentiator: evaluation is a regression suite, not a launch ritual - it reruns on every change.

Talking about GenAI without hype

The fastest way to lose credibility in an RSA interview is breathless GenAI talk. The fastest way to build it is to sound like someone who has operated this in production. Lead with evaluation rigor, security inheritance, and user trust mechanics; mention models last. Say "we made the agent show its work because verifiability drives adoption" rather than "we leveraged cutting-edge AI." And be precise about what's yours: agents, Genie, Vector Search, Apps, and UC security are production experience; Agent Bricks and Unity AI Gateway you should discuss fluently as current platform direction, not claim as shipped work.

Executive questions you should expect - and good answers

Exec questionWeak answerStrong answer
"What about hallucination?" "The models are getting much better." "We don't rely on the model being right - we constrain it. Structured questions run real SQL the user can read; document questions are grounded in retrieved text with citations; high-stakes questions hit pre-approved trusted queries. And we measure groundedness against a golden set before and after every change."
"Is our data safe? Does it train someone's model?" "The vendor says it's secure." "Access control lives in Unity Catalog, beneath the agent - the agent can only see what the asking user could query directly, including row- and column-level rules. Endpoints are governed with payload logging and audit; external models, if used, sit behind the gateway under the same controls. Your data isn't used to train foundation models."
"Where's the ROI?" "AI will transform everything." "Pick a workflow with measurable toil - questions a team answers manually today - and instrument it: questions answered in self-service, deflected requests, time-to-answer, and weekly active users. Run pay-per-token until usage justifies provisioned throughput, so cost scales with proven adoption rather than ahead of it."

In customer conversations, "show the SQL / show the citation" is your universal trust answer, and "the agent inherits the user's permissions" is your universal security answer. Both come from things you actually shipped, both survive hostile follow-up questions, and together they answer roughly half of everything an executive will ask about GenAI.

Where to go next: Reference Architectures places this agent stack inside the broader platform patterns you'll be asked to whiteboard, and Consulting Craft covers how to run the discovery conversations where these exec questions actually come up.