RAG agentique avec ADK et BigQuery VECTOR_SEARCH
Stocker morceaux et embeddings dans une table BigQuery, chercher avec VECTOR_SEARCH combiné à des filtres SQL paramétrés, et confier à un agent ADK la décision de chercher, la reformulation et le choix des filtres, avec un budget de recherches et un nettoyage vérifié.
Dans un RAG « classique », chaque question déclenche la même recherche avec le texte brut de la question. Un RAG agentique confie ces choix à un agent : faut-il chercher ? avec quels mots ? dans quelle catégorie ? faut-il réessayer autrement ? Ce lab le construit avec deux briques que beaucoup d'équipes ont déjà : BigQuery pour stocker et chercher, ADK pour l'agent.
Fil rouge : l'assistant documentaire de la société fictive Nimbus Conseil, avec un piège volontaire (deux versions de la politique de télétravail, 2024 et 2026) que seuls les filtres SQL résolvent proprement.
Pour qui ?
- Développeurs Python à l'aise avec SQL et les embeddings.
- Vous avez déjà écrit un agent ADK avec un outil (sinon : Construire un agent IA de A à Z).
- Projet Google Cloud avec BigQuery et Vertex AI activés.
Architecture
flowchart TB
subgraph Indexation["python bq_rag.py load"]
MD["docs/*.md"] --> SP["split_sections"] --> EM["gemini-embedding-001 (768 dims, europe-west1)"]
EM --> T[("BigQuery lab_rag_bq.chunks")]
end
subgraph Question["python agent.py ..."]
U["Utilisateur"] --> AG["Agent ADK (gemini-2.5-flash)"]
AG -->|"décide, reformule, filtre"| TOOL["rechercher_documents(requete, categorie, annee_min)"]
TOOL --> QE["Embedding de la requête"] --> VS["VECTOR_SEARCH + WHERE paramétré"]
VS --> T
TOOL -->|"extraits + distance"| AG
AG --> R["Réponse citée"]
end
Prérequis
- Python 3.10+,
pip install -r files/requirements.txt,gcloud auth application-default login. - Région
europe-west1pour le dataset et pour les modèles (vérifié :gemini-2.5-flashetgemini-embedding-001y répondent ;gemini-embedding-2y renvoie 404).
Programme
| Module | Leçon | Durée |
|---|---|---|
| 1. Cas d'usage et architecture | Du RAG classique au RAG agentique | 25 min |
| 2. Construire pas à pas | Morceaux et embeddings dans BigQuery | 35 min |
| VECTOR_SEARCH, filtres SQL et index | 40 min | |
| L'agent ADK qui décide | 40 min | |
| 3. Tester et exploiter | Tester, évaluer, chiffrer et nettoyer | 40 min |
En local ou sur GCP ?
| En local | Sur GCP (ce lab) | |
|---|---|---|
pytest (découpage, SQL, outil, budget de recherches) | Oui, sans réseau | — |
| Embeddings, table, VECTOR_SEARCH, agent | — | Oui, Vertex AI + BigQuery |
| Coût | 0 € | quelques centimes (≈ 120 Ko lus par recherche) |
Code : bq_rag.py, agent.py, test_bq_rag.py, documents fictifs dans files/docs/.
الموارد
- example.env.example1 KB
- pyagent.py4 KBعرض
- pybq_rag.py7 KBعرض
- txtrequirements.txt1 KBعرض
- pytest_bq_rag.py5 KBعرض
المراجع
- BigQuery : introduction à la recherche vectorielledocs.cloud.google.com
- BigQuery : fonction VECTOR_SEARCHdocs.cloud.google.com
- BigQuery : gérer les index vectorielsdocs.cloud.google.com
- Vertex AI : obtenir des embeddings de textedocs.cloud.google.com
- ADK : outils fonctionsadk.dev
- ADK : état de session (préfixes temp:, user:, app:)adk.dev
- Agentic Retrieval-Augmented Generation: A Survey on Agentic RAG (Singh et al., 2025)arxiv.org