Lesson 3 — Mise en œuvre

Installation et premier corpus

1h

This content is not translated yet. Showing the original version.

1. Préparer le projet

export PROJECT_ID="main-project-511608"
export REGION="europe-west1"

gcloud config set project "$PROJECT_ID"
gcloud services enable \
  aiplatform.googleapis.com \
  run.googleapis.com \
  storage.googleapis.com \
  artifactregistry.googleapis.com

gcloud auth application-default login

2. L'infrastructure en Terraform

resource "google_storage_bucket" "sources" {
  name                        = "${var.project_id}-rag-sources"
  location                    = var.region
  uniform_bucket_level_access = true
  versioning { enabled = true }
}

resource "google_service_account" "agent" {
  account_id   = "rag-agent"
  display_name = "Agent RAG (Cloud Run)"
}

resource "google_project_iam_member" "agent_vertex" {
  project = var.project_id
  role    = "roles/aiplatform.user"
  member  = "serviceAccount:${google_service_account.agent.email}"
}

resource "google_storage_bucket_iam_member" "agent_read" {
  bucket = google_storage_bucket.sources.name
  role   = "roles/storage.objectViewer"
  member = "serviceAccount:${google_service_account.agent.email}"
}

3. Créer le corpus et importer

import vertexai
from vertexai import rag

vertexai.init(project="main-project-511608", location="europe-west1")

corpus = rag.create_corpus(
    display_name="docs-internes",
    backend_config=rag.RagVectorDbConfig(
        rag_embedding_model_config=rag.RagEmbeddingModelConfig(
            vertex_prediction_endpoint=rag.VertexPredictionEndpoint(
                publisher_model="publishers/google/models/text-embedding-005"
            )
        )
    ),
)

rag.import_files(
    corpus.name,
    ["gs://main-project-511608-rag-sources/docs/"],
    transformation_config=rag.TransformationConfig(
        chunking_config=rag.ChunkingConfig(chunk_size=512, chunk_overlap=100)
    ),
)
print(corpus.name)

4. Configuration de l'agent

# agent.yaml
model: gemini-2.5-flash
corpus: projects/main-project-511608/locations/europe-west1/ragCorpora/1234567890
retrieval:
  top_k: 5
  vector_distance_threshold: 0.5
instructions: |
  Réponds uniquement à partir du contexte fourni.
  Cite les documents sources.

Exemple de réponse brute de retrieval_query :

{
  "contexts": {
    "contexts": [
      {
        "sourceUri": "gs://main-project-511608-rag-sources/docs/vpc-sc.md",
        "text": "Le périmètre VPC Service Controls protège...",
        "score": 0.27
      }
    ]
  }
}

Démonstration

Démo

Pour aller plus loin, une présentation vidéo :

Next