Knowledge Catalog (anciennement Dataplex Universal Catalog) gère les métadonnées des actifs de données dans toute l'organisation. Ces métadonnées fournissent le contexte que les agents utilisent pour découvrir, comprendre et interroger les données nécessaires pour répondre aux questions des utilisateurs.
Bien que Knowledge Catalog gère automatiquement les ressources, effectue le suivi des schémas techniques et génère des descriptions et des profils de données, un contexte métier précieux réside souvent dans d'autres emplacements, tels que :
- Les documents et wikis internes
- Les dépôts de code
- Les canaux de communication tels que Google Chat et Slack
Vous pouvez créer des agents d'IA pour extraire le contexte de ces sources et enrichir en continu vos métadonnées à grande échelle. Ce tutoriel utilise un exemple de code du dépôt dataplex-labs pour vous montrer comment créer un agent qui effectue les opérations suivantes :
- Extraire le contexte : extrait le contexte métier des bases de connaissances, des documents, du code ou des discussions pour enrichir les métadonnées techniques.
- Générer de la documentation : génère de la documentation pour les tables BigQuery en fonction du contexte extrait et d'autres sources d'informations.
- Améliorer la recherche et la découverte : publie la documentation générée dans Knowledge Catalog, ce qui permet de trouver et de comprendre plus facilement les entrées grâce à la recherche.
Avant de commencer
Pour exécuter l'agent d'enrichissement Knowledge Catalog, vous devez remplir les conditions suivantes :
Rôles requis
Pour obtenir les autorisations nécessaires pour utiliser l'agent d'enrichissement, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre Google Cloud projet iam.gserviceaccount.com:
-
Pour gérer les exemples de ressources BigQuery :
Éditeur de données BigQuery (
roles/bigquery.dataEditor) -
Pour rechercher des métadonnées de catalogue:
Lecteur Dataplex (
roles/dataplex.viewer) -
Pour gérer les métadonnées de catalogue :
Éditeur de catalogue Dataplex (
roles/dataplex.catalogEditor) -
Pour accéder aux fonctionnalités de Vertex AI (API LLM Gemini) :
Utilisateur Vertex AI (
roles/aiplatform.user) -
Pour utiliser les API de service :
Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour utiliser l'agent d'enrichissement. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Vous devez disposer des autorisations suivantes pour utiliser l'agent d'enrichissement :
-
bigquery.projects.get/createDatasets -
dataplex.projects.search -
dataplex.entryGroups.get/updateEntries -
aiplatform.endpoints.predict -
serviceusage.services.use
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Activer les API
Pour utiliser l'agent d'enrichissement Knowledge Catalog, activez les API suivantes dans votre projet :
- API BigQuery
- API Knowledge Catalog
- API Vertex AI
- API Service Usage
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui
contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer
des rôles.
Installer des dépendances
Vous avez besoin des packages et outils Python suivants pour exécuter l'exemple :
google-adk(Agent Development Kit (ADK))google-cloud-dataplexClient Python Knowledge Cataloggoogle-authgère les identifiants par défaut de l'applicationmcp[cli]pour créer un exemple de serveur MCPgcloudpour l'authentification et la configuration. Pour installer Google Cloud CLI, consultez la documentation sur Google Cloud SDK.
Configurer l'environnement
Configurez
gcloudet connectez-vous :gcloud auth application-default login gcloud config set core/project PROJECT_IDRemplacez les éléments suivants :
PROJECT_IDpar l'ID de votre projet
Clonez le dépôt
dataplex-labset accédez au répertoire source de l'exemple :git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git cd dataplex-labs/knowledge_catalog_enrichment_agent/srcPour installer les dépendances, utilisez le script fourni qui configure un environnement virtuel Python et les variables d'environnement nécessaires :
source env.sh --installPour créer un exemple d'ensemble de données BigQuery nommé
kc_sample_analyticsdans la régionusde votre projet cloud, exécutez le scriptcreate_data.py:python3 ../sample/data/create_data.pyL'exemple inclut également un certain nombre de documents dans le répertoire
sample/docs. Ces documents forment une base de connaissances locale. L'agent d'enrichissement utilise cette base de connaissances pour extraire des informations et générer de la documentation.
Télécharger les métadonnées
Commencez par exécuter l'outil de téléchargement pour extraire un instantané des métadonnées de Knowledge Catalog pour l'ensemble de données BigQuery et ses tables. Cette opération crée des artefacts de métadonnées locaux.
L'argument --dir spécifie le répertoire dans lequel les fichiers de métadonnées sont écrits.
python3 -m enrichment.download \
--dir ../sample/metadata.initial \
--dataset ${KC_ENRICH_SAMPLE_PROJECT}.kc_sample_analytics
Le script crée un fichier Markdown par table dans le répertoire sample/metadata en utilisant la convention d'attribution de noms suivante : <project_id>.<dataset_id>.<table_id>.md.
Enrichir les métadonnées
Une fois les fichiers Markdown locaux créés, exécutez l'agent d'enrichissement. L'agent itère sur chaque fichier, recherche les informations pertinentes pour les tables et résume les résultats avec des citations pour générer des fichiers Markdown mis à jour.
--dir: spécifie le répertoire contenant les fichiers de métadonnées locaux.--output-dir: spécifie le répertoire cible pour les fichiers de métadonnées mis à jour.--config-dir: spécifie le répertoire contenant les instructions de l'agent, les outils MCP et les compétences.
python3 -m enrichment.enrich \
--dir ../sample/metadata.initial \
--output-dir ../sample/metadata.new \
--config-dir ../sample/config
Examiner les métadonnées
Les fichiers de métadonnées enrichis contiennent la documentation produite par l'agent. Examinez et modifiez les fichiers si nécessaire avant de publier les modifications dans Knowledge Catalog.
git diff --no-index ../sample/metadata.initial ../sample/metadata.new
Publier les métadonnées
Exécutez l'outil de publication pour déployer les métadonnées enrichies dans Knowledge Catalog.
python3 -m src.enrichment.publish --dir ../sample/metadata.new
Personnaliser pour vos données
À l'étape précédente, vous avez utilisé l'argument --config-dir pour indiquer à l'agent le répertoire ../sample/config pour sa configuration. C'est ainsi que l'agent sait où trouver des informations et comment interagir avec différentes sources.
L'exemple est fourni avec une configuration par défaut qui indique à l'agent d'utiliser un serveur MCP local pour accéder aux fichiers de la base de connaissances locale (sample/docs). Pour appliquer ce workflow dans votre environnement, vous pouvez personnaliser ces fichiers de configuration afin de connecter l'agent à vos wikis internes, dépôts de code, Google Drive ou autres systèmes.
Le répertoire sample/config/ contient les fichiers suivants :
sample/config/
├─ instructions.md
├─ mcp.json
└─ skills/
└─ kb-search/
└─ SKILL.md
instructions.md: augmente les instructions de base de l'agent avec des informations pertinentes pour votre organisation, par exemple en lui indiquant de rechercher une base de connaissances spécifique.mcp.json: configure les serveurs MCP que l'agent peut utiliser pour accéder aux outils de vos sources d'informations, par exemple un outil permettant de lire des fichiers à partir d'un répertoire local.SKILL.md: décrit comment l'agent doit utiliser des outils spécifiques pour interagir avec une source d'informations, par exemple en utilisantlist_contents,read_fileetsearch_contentpour trouver des informations dans des documents locaux.
Explorer l'exemple de code Knowledge Catalog
Les outils download et publish de la section sur le flux d'enrichissement utilisent les API Knowledge Catalog pour lire et écrire des métadonnées.
Cette section explique le fonctionnement de ces API afin que vous puissiez adapter l'exemple à vos propres intégrations.
Rechercher et récupérer des métadonnées
L'exemple utilise les API suivantes pour rechercher et récupérer des métadonnées :
SearchEntriespour récupérer les métadonnées d'entrée et d'emplacement de l'ensemble de données.ListEntriespour énumérer les tables BigQuery dans un EntryGroup de catalogue.GetEntrypour récupérer les métadonnées spécifiques de chaque table BigQuery.
Le code suivant montre comment rechercher un ensemble de données pour localiser son groupe d'entrées, lister toutes les tables qu'il contient et récupérer leurs métadonnées spécifiques :
import google.cloud.dataplex_v1 as dataplex
BIGQUERY_TABLE_TYPE = "projects/dataplex-types/locations/global/entryTypes/bigquery-table"
OVERVIEW_ASPECT_TYPE = "projects/dataplex-types/locations/global/aspectTypes/overview"
catalog = dataplex.CatalogServiceClient()
dataset_reference = '...' # project_id.dataset_id
project_id, dataset_id = dataset_reference.split('.')
# 1. Search for dataset to determine its location
search_response = catalog.search_entries(
request=dataplex.SearchEntriesRequest(
name=f"projects/{project_id}/locations/global",
query=f"type=dataset name={dataset_id}",
page_size=1
)
)
dataset_entry = search_response.results[0].dataplex_entry
location_id = dataset_entry.entry_source.location
# 2. List resources in the underlying group
entry_group_name = f"projects/{project_id}/locations/{location_id}/entryGroups/@bigquery"
entry_filter = f'parent_entry="{dataset_entry.name}"'
list_response = catalog.list_entries(
request=dataplex.ListEntriesRequest(
parent=entry_group_name,
entry_filter=entry_filter,
)
)
# 3. Retrieve metadata for each table in the list
for table_entry in list_response.entries:
entry = catalog.get_entry(
request=dataplex.GetEntryRequest(
name=table_entry.name,
view="CUSTOM",
aspect_types=[OVERVIEW_ASPECT_TYPE]
)
)
Mettre à jour les métadonnées d'une table
Le code suivant montre comment publier la documentation générée dans l'aspect « Présentation » d'une table et mettre à jour ses métadonnées :
import google.cloud.dataplex_v1 as dataplex
import google.protobuf.field_mask_pb2 as field_mask_pb2
import google.protobuf.json_format as jsonpb
OVERVIEW_ASPECT_TYPE = "projects/dataplex-types/locations/global/aspectTypes/overview"
OVERVIEW_ASPECT_KEY = "dataplex-types.global.overview"
catalog = dataplex.CatalogServiceClient()
table_reference = "..." # project_id.dataset_id.table_id
project_id, dataset_id, table_id = table_reference.split('.')
entry_data = {
"name": f"bigquery.googleapis.com/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}",
"aspects": {
OVERVIEW_ASPECT_KEY: {
"aspectType": OVERVIEW_ASPECT_TYPE,
"data": {
"content": "...", # content parsed from local markdown file
"contentType": "MARKDOWN"
}
}
}
}
entry = dataplex.Entry()
jsonpb.ParseDict(entry_data, entry._pb)
catalog.update_entry(
request=dataplex.UpdateEntryRequest(
entry=entry,
update_mask=field_mask_pb2.FieldMask(paths=["aspects"]),
aspect_keys=[OVERVIEW_ASPECT_KEY],
)
)
Étape suivante
- En savoir plus sur l'utilisation des métadonnées.
- Utiliser Gemini CLI pour tester le contexte de vos données.
- Découvrir comment gérer les aspects et enrichir les métadonnées.
- Explorer d'autres classes et méthodes disponibles dans la bibliothèque cliente Knowledge Catalog pour Python.
- Découvrir d'autres cas d'utilisation de Knowledge Catalog.