Ground Beans to Grounded Answers

Building Agentic Apps with Google and Oracle.

A working reference app that turns one chat message — “I need something bold” — into a grounded answer. The user doesn’t say “coffee”; the router recognizes the idiom, runs a vector search, and grounds the reply in real menu rows.

Vector search

Oracle 26ai HNSW index over VECTOR.

Chat routing

Flash-Lite routes grounded product, store, and availability turns.

Vertex AI

gemini-embedding-2 for retrieval; Gemini can assist selection.

        flowchart TD
    U([User question]) --> C[Litestar chat controller]
    C --> I{Flash-Lite intent}
    I -->|PRODUCT_RAG| P[Product RAG selector]
    I -->|STORE_LOCATION| S[Store lookup]
    I -->|PRODUCT_AVAILABILITY| V[Inventory lookup]
    I -->|GENERAL_CONVERSATION| A[ADK 2.0 workflow]
    P --> O[(Oracle 26ai<br/>HNSW search)]
    S --> O
    V --> O
    A -. optional tool .-> O
    O --> R[Grounded final event]
    A --> R
    R --> U
    

Product, store, and availability turns are grounded in deterministic service facts. Product RAG may use structured selection, but final product copy is rendered from Oracle rows. General conversation falls through to the ADK workflow, where the model can still use the same closure-bound tools.

Where to go next

Walkthrough

One chat message, end to end: question → embedding → Oracle → streamed answer.

Walkthrough
Concepts

Vectors in Oracle, RAG, and how the chat router chooses grounded service calls.

Vectors in Oracle
Hands-on lab

The single-file workshop guide for running Cymbal Coffee with Oracle 26ai and Vertex AI.

Hands-on Lab: Cymbal Coffee — Oracle 26ai + Vertex AI AI-Powered Agent
Antigravity MCP

Clean SQLcl and Google MCP Toolbox configuration for teaching Antigravity workflows.

MCP Configuration And Usage In Antigravity