# RAG Agent — Agent Platform Vector Search

A starter RAG agent that answers questions grounded on documents indexed in
**Agent Platform Vector Search** (Vector Search 2.0). A Kubeflow Pipelines (KFP)
ingestion pipeline loads, chunks, and imports your documents into a Vector
Search 2.0 Collection, where embeddings are auto-generated by the Collection's
configured embedding model.

## Agent Details
| Attribute | Detail |
| :-- | :-- |
| Interaction Type | Conversational |
| Complexity | Intermediate |
| Agent Type | Single Agent |
| Components | Tools, RAG, Terraform, Evaluation, Ingestion Pipeline |

## How it works
- `app/agent.py` — ADK agent wiring the `retrieve_docs` tool.
- `app/retrievers.py` — `search_collection()` runs semantic search against the
  Vector Search 2.0 Collection via `vectorsearch_v1beta` (or returns a mock when
  `INTEGRATION_TEST=TRUE`).
- `data_ingestion/` — a KFP pipeline (`data_ingestion_pipeline/`) that loads,
  chunks, and ingests documents into the Collection; run it with
  `make data-ingestion`.
- `infra/terraform/` — provisions the Vector Search 2.0 Collection (via
  `scripts/setup_vector_search_collection.py`) and a pipeline GCS bucket.

## Setup
1. `cp .env.example .env` and edit values.
2. Provision the Collection: edit `infra/terraform/vars/env.tfvars`, then
   `make setup-infra`.
3. Ingest documents into the Collection: `make data-ingestion`.

## Run

```bash
make install && make playground
```

Select the `app` folder.

## Test
`make test` runs the integration test. The retriever is mocked
(`INTEGRATION_TEST=TRUE`), but the agent still makes a live Gemini call, so
Google Cloud credentials (ADC) and Vertex AI access are required. Without
credentials the test is skipped.

## CI/CD

`deployment/cloudbuild.yaml` schedules the data-ingestion pipeline on Vertex AI
Pipelines via the sample's own `submit_pipeline.py` (it creates/updates a
recurring `PipelineJobSchedule` with `SCHEDULE_ONLY=TRUE`; it does not run the
pipeline inline). Wire it to a Cloud Build trigger, or run `gcloud builds submit
--config deployment/cloudbuild.yaml --substitutions=...` (see the file header
for the full substitution list). To deploy the agent itself, use the ADK-native
path — e.g. `uv run adk deploy cloud_run .` or `adk deploy agent_engine` (not
the deprecated agent-starter-pack tooling).

## Looking for something else?
See [`rag-agent-search`](../rag-agent-search) for an Agent Platform Search
(Discovery Engine) variant with a GCS data connector, or
[`multiformat-hybrid-rag`](../../python/agents/multiformat-hybrid-rag) for a production hybrid
(semantic + keyword) system.
