adk-samples / rag-vector-search
AGENTS.md11k starsChanged 44 days agoApache-2.0View on GitHub
A clone-and-study RAG agent grounded on Vertex AI Vector Search 2.0, with a Kubeflow Pipelines (KFP) pipeline that loads, chunks, and ingests documents into a Collection that auto-generates embeddings server-side. The hard/interesting parts are Terraform (Collection + auto-embedding config + IAM) and data handling (the ingestion pipeline); the agent itself is a thin ADK wrapper around a semantic-search tool. - The user wants explicit control over chunking/ingestion (a custom KFP pipeline) instead of a fully-managed connector. - The user needs…
- Reads credentials
1 other project uses a version of this.
Trending
More talk lately.about the whole repository
Most recently taken up by
- google/adk-recipesword for word, first seen Oct 13, 2026
Who's talking about google/adk-samples
- @stephanjanssen.be“Google just open sourced a Python Agent Development Kit @ github.com/google/adk-p... Native Streaming and …”Bluesky · Apr 9, 2025 · 12 likes
- google/adk-python“stream_query and HTTP Streaming to Vertex AI Agent Return Empty/Exhausted Responses (Works via ADK Web)”GitHub · Jul 8, 2025 · 5 reactions
- google/adk-recipes“Support running agents fully locally without Vertex AI (offline mode)”GitHub · Apr 14, 2025 · 4 reactions
- google/adk-recipes“[BUG]: Deployment of Data Science agent to Agent Engine fails ”GitHub · Oct 1, 2025 · 3 reactions
- A Hacker News story“CaMeL-Powered Secure Agent Demo with ADK”Hacker News · Aug 9, 2025 · 3 points
The biggest 5 of 32 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 32
Talked about on GitHub, Bluesky, Hacker News and Stack Overflow (32 times).
On GitHub · 23
- Jul 8, 2025stream_query and HTTP Streaming to Vertex AI Agent Return Empty/Exhausted Responses (Works via ADK Web) — google/adk-python5 reactions
- Apr 14, 2025Support running agents fully locally without Vertex AI (offline mode) — google/adk-recipes4 reactions · 7 comments
- Oct 1, 2025[BUG]: Deployment of Data Science agent to Agent Engine fails — google/adk-recipes3 reactions · 1 comment
- Oct 28, 2026docs: fix 5 broken internal anchor links and 1 dead external link — google-gemini/gemini-cli1 reaction · 4 comments
- Oct 20, 2026Update adk-samples references and python/agents discovery paths for google/adk-recipes restructure — google/agents-cli1 reaction · 2 comments
18 more on GitHub
- Oct 12, 2026list: scan the template dir we cloned, not the clone root — GoogleCloudPlatform/agent-starter-pack1 reaction
- Feb 12, 2026interrupted sometimes didn't work — google/adk-python1 reaction · 10 comments
- Jan 8, 2026Implement 5 ADK agent projects that can be easily run by newbies — addyosmani/adk-product-engineers1 reaction
- Nov 20, 2025[BUG]: deep-search/gemini-fullstack: Wrong prompt to access session state — google/adk-recipes1 reaction
- Jun 21, 2025unable to import StdioServerParameters — google/adk-recipes1 reaction · 2 comments
- Jun 17, 2025VertexAiRagRetrieval needs llama-index package — google/adk-recipes1 reaction · 3 comments
- Jun 5, 2025Bug: display_name in file uploads causes error with Google.GenAI backend (non-Vertex) — google/adk-python1 reaction · 6 comments
- May 18, 2025Missing Image — google/adk-recipes1 reaction
- Apr 11, 2025Duplicate key name — google/adk-recipes1 reaction · 1 comment
- Oct 18, 2026Fix(audit,#17387): Day4 Track2 tranche 1 -- Lab8/Lab9 reformulations honnetes, cures accents — jsboige/CoursIA0 reactions · 14 comments
- Sep 17, 2026Rename sample references to recipe across repository — google/adk-recipes0 reactions
- Sep 12, 2026docs(deep-search): fix cloud deployment instructions and scaffold path (#2575) — google/adk-recipes0 reactions · 4 comments
- Sep 12, 2026docs: fix 404 link to relocated Deep Search sample — google/adk-docs0 reactions · 1 comment
- Sep 9, 2026Add repo skills instructions and documentation links to AI issue response workflow — google/adk-recipes0 reactions
- Jul 24, 2026Fix broken adk-samples links from deleted sample agents and notebooks — google/adk-docs0 reactions · 1 comment
- Jun 12, 2026ci: run the spam-detection bot via the adk-samples reusable workflow — google/adk-go0 reactions · 1 comment
- May 27, 2026Add Deep Search Agent project to portfolio showcase — asafsilner/silner-showcase-prime0 reactions
- Feb 12, 2026fix: path typo in story teller example — google/adk-recipes0 reactions · 3 comments
On Bluesky · 4
- Apr 9, 2025Google just open sourced a Python Agent Development Kit @ github.com/google/adk-p... Native Streaming and #MCP support out of the box 👀… — @stephanjanssen.be12 likes and reposts
- Jul 12, 2026Exploring the ADK Samples repo from Google—it’s like a guidebook for building intelligent agents. Seeing multi-language support reflects… — @iam.slys.dev1 likes and repost
- Dec 9, 2025📦 google / adk-samples ⭐ 6,900 (+67) 🗒 Python A collection of sample agents built with Agent Development Kit (ADK) — @github-trending.bsky.social1 likes and repost
- May 20, 2025Explore practical use-cases & build! 🧪 Hands-on Patent Search Codelab: codelabs.developers.google.com/patent-searc... 📚 Check out sample… — @kweinmeister.bsky.social0 likes and reposts · 1 reply
On Hacker News · 3
- Aug 9, 2025CaMeL-Powered Secure Agent Demo with ADK3 points · 1 comment
- Jun 13, 2025A collection of sample agents built with Agent Development (ADK)2 points
- Aug 13, 2025CaMeL agent to protect against indirect prompt injection1 point · 1 comment
On Stack Overflow · 2
- Aug 30, 2025Google ADK SequentialAgent sub_agents not waiting for user input1 vote
- Aug 29, 2025Issue with deploying ADK Agent on Google Agent Engine0 votes
Other versions1 project uses a version of this.
Word for word · 1
- google/adk-recipes★ 11k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,843 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository43 other files it gives its agents.
- AGENTS.mdAGENTS.md
- contrib/kotlin/llm-auditor/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/sandbox/home/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/tests/eval/fixtures/alex/repos/portland-trip/AGENTS.mdAGENTS.md
- core/python/ambient-expense-agent/AGENTS.mdAGENTS.md
- core/python/ambient-quality-agent/AGENTS.mdAGENTS.md
- core/python/cross-session-memory/AGENTS.mdAGENTS.md
- core/python/deep-search/AGENTS.mdAGENTS.md
- core/python/genmedia-for-commerce/AGENTS.mdAGENTS.md
- core/python/long-horizon-harness/AGENTS.mdAGENTS.md
- core/python/oauth-user-consent-flow/AGENTS.mdAGENTS.md
- core/python/rag-agent-search/AGENTS.mdAGENTS.md
- core/python/safety-plugins/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/sandbox/home/CLAUDE.mdCLAUDE.md
- core/python/genmedia-for-commerce/CLAUDE.mdCLAUDE.md
- align-recipe-pyprojectSkill
- extract-python-environment-variablesSkill
- generate-manifestSkill
- generate-python-runnability-testSkill
- github-pr-reviewSkill
- make-python-recipe-deployableSkill
- prepare-python-recipeSkill
- repo-oracleSkill
- scaffold-python-recipeSkill
- blog-writerSkill
- content-research-writerSkill
- approvalsSkill
- coding-workflowSkill
- connected-apps-mcpSkill
- deliverablesSkill
- filesystemSkill
- recommendationsSkill
- agents-cli-aquaSkill
- custom-investigationSkill
- rcaSkill
- bootstrap-google-toolsSkill
- find-skillsSkill
- google-workspaceSkill
- policySkill
- routinesSkill
- retail-product-searchSkill
- retail-virtual-tryonSkill
The file
We split this AGENTS.md into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Minimum Score: not enforced — custom_response_quality graded 1–5 (aim ≥ 4)
- Very specific: line 96
Embeddings: never computed in the pipeline.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
RAG Agent — Vector Search
Intent
A clone-and-study RAG agent grounded on Vertex AI Vector Search 2.0, with a Kubeflow Pipelines (KFP) pipeline that loads, chunks, and ingests documents into a Collection that auto-generates embeddings server-side. The hard/interesting parts are Terraform (Collection + auto-embedding config + IAM) and data handling (the ingestion pipeline); the agent itself is a thin ADK wrapper around a semantic-search tool.
When To Use
- The user wants explicit control over chunking/ingestion (a custom KFP pipeline) instead of a fully-managed connector.
- The user needs semantic/vector search over their own documents with server-side auto-embedding (Vector Search 2.0).
- The user wants a reproducible BigQuery-staged ingestion + Terraform example.
Eval
- Scenarios Path:
tests/eval/datasets/(config:tests/eval/eval_config.yaml) - Minimum Score: not enforced —
custom_response_qualitygraded 1–5 (aim ≥ 4)
End-to-end flow
- Terraform (
make setup-infra) enables APIs, creates a pipeline GCS bucket, a runner service account + IAM, and a VS 2.0 Collection whosetext_embeddingfield is configured to auto-embed withgemini-embedding-001. - Ingestion (
make data-ingestion) runs a KFP pipeline that fetches docs, converts HTML→markdown, chunks them, stages + dedups them in BigQuery, then batch-creates data objects in the Collection. Embeddings are generated by the Collection, not the pipeline (objects are sent with empty vectors). - Agent (
make playground) answers questions; itsretrieve_docstool runs semantic search over the Collection and feeds chunks back to Gemini.
Most interesting files to study (in order)
Data ingestion (the bulk of the logic)
data_ingestion/data_ingestion_pipeline/components/process_data.py— the core transform. A KFP@componentthat: fetches data (a synthetic Q&A CTE in BigQuery — the documented place to swap in your own source), converts HTML→ markdown (markdownify), chunks withRecursiveCharacterTextSplitter(chunk_size=1500,chunk_overlap=20), writes a time-partitioned incremental table, and builds a deduped table (latestcreation_timestampperquestion_id). Note the deterministicchunk_id=question_id__<index>that makes re-ingestion idempotent.data_ingestion/data_ingestion_pipeline/components/ingest_data.py— how data lands in VS 2.0: reads the deduped table and callsbatch_create_data_objectswith emptyvectors: {}(auto-embedding), capped at 250 objects/batch, swallowingAlreadyExistsso re-runs skip existing chunks.data_ingestion/data_ingestion_pipeline/pipeline.py— KFP wiring:process_data→ingest_datawithset_retry. Small but shows the DAG and parameters.data_ingestion/data_ingestion_pipeline/submit_pipeline.py— run modes:--local(KFPSubprocessRunner, whatmake data-ingestionuses) vs remote (aiplatform.PipelineJob.submit), plus--cron-schedule/--schedule-onlyforPipelineJobSchedule. Readparse_argsfor the env-var contract.data_ingestion/README.md— the ingestion runbook (local + remote).
Terraform (provisioning + the embedding config)
infra/terraform/scripts/setup_vector_search_collection.py— the most important infra file. Defines the Collection'sdata_schema(question_id,text_chunk,full_text_md) and thevector_schema.text_embeddingauto-embedding config:dense_vectordimensions=3072,vertex_embedding_configmodel_id=gemini-embedding-001,text_template="{text_chunk}",task_type=RETRIEVAL_DOCUMENT. Idempotent via aget_collectioncheck. (delete_vector_search_collection.pyis the teardown.)infra/terraform/vector_search.tf— the pipeline bucket plus anull_resourcethat runs the create script on apply and the delete script ondestroy(local-exec+triggers). Good example of wrapping an API not yet in the provider.infra/terraform/vector_search_iam.tf+vector_search_variables.tf— runner service account and itspipelines_roles(BigQuery, Storage, Vertex AI,vectorsearch.dataObjectWriter), assigned viasetproduct.infra/terraform/apis.tf— enabled services (notevectorsearch.googleapis.com) and the Vertex AI service identity.locals.tf,variables.tf,datastore_outputs.tf,vars/env.tfvarsare the supporting scaffolding.
Agent (thin layer — read last)
app/retrievers.py—search_collection():SemanticSearchwithsearch_field="text_embedding",task_type="RETRIEVAL_QUERY",top_k, andoutput_fields(question_id,text_chunk,full_text_md). These fields must match the schema set insetup_vector_search_collection.py— that symmetry between write-side and read-side is the key thing to notice.app/agent.py— ADKAgent(Geminigemini-flash-latest) exposing theretrieve_docstool (wrapssearch_collectionwith error handling); readsVECTOR_SEARCH_COLLECTIONfrom env.app/__init__.pyexportsapp.
Data handling
- Chunking: recursive character splitting (1500/20). Tune in
pipeline.pydefaults orprocess_dataargs. - BigQuery staging: an append-only incremental table feeds a replace-mode
deduped table (one row per chunk from the latest ingestion of each
question_id) — the deduped table is the ingestion source of truth. - Embeddings: never computed in the pipeline. Objects ship with empty vectors
and VS 2.0 embeds them server-side using the Collection's
text_embeddingconfig. The read path uses the same model implicitly viaRETRIEVAL_QUERY. - Idempotency: deterministic
chunk_id+AlreadyExistsskip means re-runs don't duplicate. Caveat: if a doc's chunk count shrinks, orphaned chunks from a prior run are not deleted.
Gotchas / things to know
- Order matters:
make setup-infra→make data-ingestion→ query. Querying before ingestion returns "No relevant documents found." google-cloud-vectorsearchis the v1beta preview API (vectorsearch_v1beta).- The integration test (
tests/integration/test_agent.py) makes a live Gemini call; it is skipped without ADC, and the retriever is mocked whenINTEGRATION_TEST=TRUE(set bymake test). app/agent.pyloads.envand resolves the project fromGOOGLE_CLOUD_PROJECT, falling back togoogle.auth.default()at import when it is unset — so credential-less imports fail unless that var is set (the test imports lazily to allow skipping).- The default dataset is synthetic Q&A generated inline in BigQuery; replace
the CTE in
process_data.fetch_sample_datato ingest real documents. tests/eval/eval_config.yamluses theagents-clieval format (LLM-judgecustom_response_quality+ a turn-count function); it is not wired intomake test.
Where to run things
Makefile targets: make setup-infra (provision), make install,
make data-ingestion (run the KFP pipeline locally), make playground
(local ADK web UI), make test, make lint.
Eval lives under tests/eval/ (eval_config.yaml + datasets/).
Reuse (copy as-is)
infra/terraform/(Collection + IAM) is self-contained — copy the whole directory (includingscripts/) and setproject_idinvars/env.tfvars. Requiresuvfor thelocal-execprovisioner scripts.data_ingestion/is an independent, self-contained KFP project (its ownpyproject.toml+uv.lock) — copy the directory and run it standalone. Point it at your Collection via--project/--region/--collection-id, and swap thefetch_sample_dataCTE inprocess_data.pyfor your own source.deployment/cloudbuild.yamlschedules the ingestion pipeline in CI viasubmit_pipeline.py(a recurring Vertex AIPipelineJobSchedule) — copy it and set the_*substitutions.- There is no code coupling to
app/: the agent reaches the Collection purely through theVECTOR_SEARCH_COLLECTIONenv var.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

