# bhancockio/adk-rag-agent architecture

> Architecture diagram of the GitHub repository bhancockio/adk-rag-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bhancockio/adk-rag-agent
- Repository: https://github.com/bhancockio/adk-rag-agent

## Overview

This is a Vertex AI RAG agent: users ask knowledge questions or manage document corpora, and the ADK agent dispatches the request to a specialized tool. Querying retrieves matching corpus contexts; management tools create, ingest, inspect, list, and delete corpus data. The tools use shared corpus-name/state helpers and configuration defaults. The README documents Google Drive and GCS ingestion. Utility source was not sampled, so helper behavior and any additional internal wiring are shown only where tool code supports them.

Main entry points: [`rag_agent/agent.py`](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/agent.py) (RAG agent), [`rag_agent/tools/utils.py`](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/utils.py) (Corpus helpers), [`rag_agent/tools/rag_query.py`](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/rag_query.py) (Query corpus), [`rag_agent/tools/create_corpus.py`](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/create_corpus.py) (Create corpus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_agent["Agent interface"]
  node_agent["RAG agent<br/>[agent.py]"]
end

subgraph group_query["RAG querying"]
  node_query_tool["Query corpus<br/>[rag_query.py]"]
end

subgraph group_corpora["Corpus management"]
  node_list["List corpora<br/>[list_corpora.py]"]
  node_create["Create corpus<br/>[create_corpus.py]"]
  node_ingest["Add data<br/>[add_data.py]"]
  node_info["Corpus details<br/>[get_corpus_info.py]"]
  node_delete_doc["Delete document<br/>[delete_document.py]"]
  node_delete_corpus["Delete corpus<br/>[delete_corpus.py]"]
end

subgraph group_shared["Shared support"]
  node_utils["Corpus helpers<br/>[utils.py]"]
  node_config["RAG defaults<br/>[config.py]"]
  node_init["Vertex initialization<br/>[__init__.py]"]
end

node_user(("User"))
node_gemini["Gemini model"]
node_vertex[("Vertex AI RAG")]

node_user -->|"requests"| node_agent
node_agent -->|"uses model"| node_gemini
node_agent -->|"dispatches query"| node_query_tool
node_agent -->|"dispatches listing"| node_list
node_agent -->|"dispatches creation"| node_create
node_agent -->|"dispatches ingestion"| node_ingest
node_agent -->|"dispatches inspection"| node_info
node_agent -->|"dispatches deletion"| node_delete_doc
node_agent -->|"dispatches deletion"| node_delete_corpus
node_query_tool -->|"checks corpus"| node_utils
node_query_tool -->|"reads defaults"| node_config
node_query_tool -->|"retrieves contexts"| node_vertex
node_query_tool -->|"returns results"| node_agent
node_list -->|"lists corpora"| node_vertex
node_create -->|"checks corpus"| node_utils
node_create -->|"reads model default"| node_config
node_create -->|"creates corpus"| node_vertex
node_ingest -->|"checks corpus"| node_utils
node_ingest -->|"reads chunk defaults"| node_config
node_ingest -->|"imports files"| node_vertex
node_info -->|"checks corpus"| node_utils
node_info -->|"lists files"| node_vertex
node_delete_doc -->|"checks corpus"| node_utils
node_delete_doc -->|"deletes file"| node_vertex
node_delete_corpus -->|"checks corpus"| node_utils
node_delete_corpus -->|"deletes corpus"| node_vertex
node_init -->|"initializes client"| node_vertex

click node_agent "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/agent.py"
click node_query_tool "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/rag_query.py"
click node_list "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/list_corpora.py"
click node_create "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/create_corpus.py"
click node_ingest "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/add_data.py"
click node_info "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/get_corpus_info.py"
click node_delete_doc "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/delete_document.py"
click node_delete_corpus "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/delete_corpus.py"
click node_utils "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/utils.py"
click node_config "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/config.py"
click node_init "https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/__init__.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_agent,node_user toneBlue
class node_query_tool,node_vertex toneAmber
class node_list,node_create,node_ingest,node_info,node_delete_doc,node_delete_corpus toneMint
class node_utils,node_config,node_init toneRose
class node_gemini toneIndigo
```

## Components

### Agent interface

- [RAG agent](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/agent.py): `rag_agent/agent.py`

### RAG querying

- [Query corpus](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/rag_query.py): `rag_agent/tools/rag_query.py`

### Corpus management

- [List corpora](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/list_corpora.py): `rag_agent/tools/list_corpora.py`
- [Create corpus](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/create_corpus.py): `rag_agent/tools/create_corpus.py`
- [Add data](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/add_data.py): `rag_agent/tools/add_data.py`
- [Corpus details](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/get_corpus_info.py): `rag_agent/tools/get_corpus_info.py`
- [Delete document](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/delete_document.py): `rag_agent/tools/delete_document.py`
- [Delete corpus](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/delete_corpus.py): `rag_agent/tools/delete_corpus.py`

### Shared support

- [Corpus helpers](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/tools/utils.py): `rag_agent/tools/utils.py`
- [RAG defaults](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/config.py): `rag_agent/config.py`
- [Vertex initialization](https://github.com/bhancockio/adk-rag-agent/blob/main/rag_agent/__init__.py): `rag_agent/__init__.py`

### Other components

- **User**
- **Gemini model**
- **Vertex AI RAG**

## Connections

- User → RAG agent: requests
- RAG agent → Gemini model: uses model
- RAG agent → Query corpus: dispatches query
- RAG agent → List corpora: dispatches listing
- RAG agent → Create corpus: dispatches creation
- RAG agent → Add data: dispatches ingestion
- RAG agent → Corpus details: dispatches inspection
- RAG agent → Delete document: dispatches deletion
- RAG agent → Delete corpus: dispatches deletion
- Query corpus → Corpus helpers: checks corpus
- Query corpus → RAG defaults: reads defaults
- Query corpus → Vertex AI RAG: retrieves contexts
- Query corpus → RAG agent: returns results
- List corpora → Vertex AI RAG: lists corpora
- Create corpus → Corpus helpers: checks corpus
- Create corpus → RAG defaults: reads model default
- Create corpus → Vertex AI RAG: creates corpus
- Add data → Corpus helpers: checks corpus
- Add data → RAG defaults: reads chunk defaults
- Add data → Vertex AI RAG: imports files
- Corpus details → Corpus helpers: checks corpus
- Corpus details → Vertex AI RAG: lists files
- Delete document → Corpus helpers: checks corpus
- Delete document → Vertex AI RAG: deletes file
- Delete corpus → Corpus helpers: checks corpus
- Delete corpus → Vertex AI RAG: deletes corpus
- Vertex initialization → Vertex AI RAG: initializes client
