Visit Sinki.ai for Enterprise Databricks Services | Simplify Your Data Journey
Jellyfish Technologies Logo

Building RAG Agent with Google ADK and Vertex AI

building-rag-agent-with-google-adk-and-vertex-ai

Creating an intelligent assistant that can search and reason across your document collections is now more accessible than ever. In this guide, we walk through how to build a Retrieval-Augmented Generation (RAG) agent using Google’s Agent Development Kit (ADK) and Vertex AI.

Why RAG, and Why Now?

Retrieval-Augmented Generation gives your AI assistant a memory that extends beyond its initial training. It combines the power of a language model with the ability to query specific, up-to-date data from your documents. This results in more accurate, contextual, and source-cited answers.

By integrating Google’s ADK with Vertex AI’s RAG Engine, we get:

  • A seamless, conversational interface.
  • Document search across multiple collections.
  • Clear citations for every response.
  • A quick setup process.

Architecture Overview

Here’s how the system components fit together:

  1. Google Cloud Storage – Stores your original files securely.
  2. Vertex AI RAG Engine – Processes, indexes, and retrieves document content.
  3. ADK Agent – Interfaces with users and orchestrates the retrieval and generation process.

The result is an agent that can:

  • Organize documents into searchable collections (corpora).
  • Answer queries using the most relevant source documents.
  • Provide transparent and verifiable answers.

Prerequisites

Before you begin, make sure you have:

  • Python 3.11+
  • A Google Cloud project with billing enabled.
  • A Gemini API key from Google AI Studio.

Project Structure

We recommend the following structure:

my-rag-project/

├── rag/

│ ├── agent.py

│ ├── config/

│ │ └── settings.py

│ └── tools/

│ ├── document_tools.py

│ └── storage_tools.py

└── README.md

Step-by-Step Implementation

1. Configuration

A robust configuration ensures flexibility. In settings.py, define:

# Google Cloud and Embedding Config
PROJECT_ID = "your-google-cloud-project"
LOCATION = "us-central1"
EMBEDDING_MODEL = "text-embedding-004"

# Search & Filtering Parameters
MAX_RESULTS_PER_QUERY = 10
SIMILARITY_THRESHOLD = 0.5

# Cloud Storage Settings
STORAGE_CLASS = "STANDARD"
DEFAULT_CONTENT_TYPE = "application/pdf"

2. Document Collection Management

Create and manage document collections:

def create_document_collection(name, description=None, embedding_model=None):
    embedding_config = configure_embedding_model(embedding_model or EMBEDDING_MODEL)
    collection = create_corpus(
        display_name=name,
        description=description or f"Document collection: {name}",
        embedding_model_config=embedding_config
    )
    return {
        "success": True,
        "collection_id": extract_id_from_name(collection.name)
    }

3. Cloud File Uploads

Uploading documents to Cloud Storage:

def upload_document_to_cloud(bucket_name, file_data, filename):
    storage_client = initialize_storage_client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(filename)
    blob.upload_from_string(
        file_data,
        content_type=determine_content_type(filename)
    )
    return {
        "cloud_location": f"gs://{bucket_name}/{filename}"
    }

4. RAG Agent Definition

Define your agent and wire up its tools:

from adk import Agent, FunctionTool

rag_agent = Agent(
    name="DocumentAssistant",
    model="gemini-1.5-pro",
    description="Search and retrieve answers from document collections.",
    instruction=\"\"\"
    - Search all document collections by default.
    - Provide source citations.
    - Use clear and concise language.
    \"\"\",
    tools=[
        FunctionTool(create_document_collection),
        FunctionTool(upload_document_to_cloud),
        FunctionTool(search_across_collections),
        # add more tools as needed
    ]
)

Usage Example

Create a Collection:

“Create a collection called ‘AI Research Papers’.”

Upload a Document:

“Upload embeddings_paper.pdf to ‘AI Research Papers’.”

Ask a Question:

“What are the best practices for using prompt engineering in AI models?”

The agent will:

  • Search across collections.
  • Retrieve the most relevant sources.
  • Generate a cited response.

Tips for Success

  • Use PDFs for reliable text extraction.
  • Run gcloud auth application-default login to ensure proper authentication.
  • Monitor GCP quotas if handling large volumes.
  • Adjust SIMILARITY_THRESHOLD for better precision or recall.

Scaling Further

Once your base system is working, consider:

  • Adding support for additional file formats.
  • Creating user-specific document access.
  • Automating document ingestion (e.g., from email or Drive).
  • Setting up scheduled retraining of the embedding index.

Conclusion

With the ADK and Vertex AI RAG engine, building a capable and scalable document assistant is now highly achievable. This system empowers you to organize, search, and understand large bodies of documents in a conversational, citation-backed manner.

Start small. Iterate. And scale as your needs grow. Let your documents work for you — intelligently.

Thinking about developing an AI-powered application? Jellyfish Technologies is here to help you build custom, scalable, and innovative solutions tailored to your business needs. Let’s connect and bring your AI vision to life.

Share this article
Want to speak with our solution experts?
Jellyfish Technologies

Modernize Legacy System With AI: A Strategy for CEOs

Download the eBook and get insights on CEOs growth strategy

    Let's Talk

    We believe in solving complex business challenges of the converging world, by using cutting-edge technologies.