Knowledge Catalog (sebelumnya Dataplex Universal Catalog) mengelola metadata untuk aset data di seluruh organisasi. Metadata ini memberikan konteks yang digunakan agen untuk menemukan, memahami, dan membuat kueri data yang diperlukan untuk menjawab pertanyaan pengguna.
Meskipun Knowledge Catalog mengelola resource, melacak skema teknis, serta membuat deskripsi dan profil data secara otomatis, konteks bisnis yang berharga sering kali berada di lokasi lain, seperti:
- Dokumen dan wiki internal
- Repositori kode
- Saluran komunikasi seperti Google Chat dan Slack
Anda dapat membuat agen AI untuk mengekstrak konteks dari sumber ini dan terus memperkaya metadata Anda dalam skala besar. Tutorial ini menggunakan kode contoh dari repositori dataplex-labs untuk menunjukkan cara membuat agen yang melakukan hal berikut:
- Mengekstrak konteks: Mengekstrak konteks bisnis dari pusat informasi, dokumen, kode, atau chat untuk memperkaya metadata teknis.
- Buat dokumentasi: Membuat dokumentasi untuk tabel BigQuery berdasarkan konteks yang diekstrak dan sumber informasi lainnya.
- Meningkatkan penelusuran dan penemuan: Memublikasikan dokumentasi yang dihasilkan ke Katalog Pengetahuan, sehingga entri lebih mudah ditemukan dan dipahami melalui penelusuran.
Sebelum memulai
Untuk menjalankan agen penambahan informasi Katalog Pengetahuan, Anda harus memenuhi persyaratan berikut:
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menggunakan agen pengayaan, minta administrator untuk memberi Anda peran IAM berikut di Google Cloud project iam.gserviceaccount.comAnda:
-
Untuk mengelola contoh resource BigQuery:
BigQuery Data Editor (
roles/bigquery.dataEditor) -
Untuk menelusuri metadata katalog:
Dataplex Viewer (
roles/dataplex.viewer) -
Untuk mengelola metadata katalog:
Dataplex Catalog Editor (
roles/dataplex.catalogEditor) -
Untuk mengakses fitur Vertex AI (Gemini LLM API):
Pengguna Vertex AI (
roles/aiplatform.user) -
Untuk menggunakan API layanan:
Pengguna Service Usage (
roles/serviceusage.serviceUsageConsumer)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk menggunakan agen pengayaan. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menggunakan agen pengayaan:
-
bigquery.projects.get/createDatasets -
dataplex.projects.search -
dataplex.entryGroups.get/updateEntries -
aiplatform.endpoints.predict -
serviceusage.services.use
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Mengaktifkan API
Untuk menggunakan agen pengayaan Knowledge Catalog, aktifkan API berikut di project Anda:
- BigQuery API
- Knowledge Catalog API
- Vertex AI API
- Service Usage API
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin
(roles/serviceusage.serviceUsageAdmin),
yang berisi izin serviceusage.services.enable. Pelajari cara memberikan
peran.
Menginstal dependensi
Anda memerlukan paket dan alat Python berikut untuk menjalankan contoh:
google-adk(Agent Development Kit (ADK))google-cloud-dataplexKlien Python Knowledge Cataloggoogle-authmengelola Kredensial Default Aplikasimcp[cli]untuk membangun server MCP contohgclouduntuk autentikasi dan konfigurasi. Untuk menginstal Google Cloud CLI, lihat dokumentasi Google Cloud SDK.
Menyiapkan lingkungan
Konfigurasi
gclouddan login:gcloud auth application-default login gcloud config set core/project PROJECT_IDGanti kode berikut:
PROJECT_IDdengan ID project Anda
Buat clone repositori
dataplex-labsdan buka direktori sumber contoh:git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git cd dataplex-labs/knowledge_catalog_enrichment_agent/srcUntuk menginstal dependensi, gunakan skrip yang disediakan yang menyiapkan lingkungan virtual Python dan variabel lingkungan yang diperlukan:
source env.sh --installUntuk membuat set data BigQuery sampel bernama
kc_sample_analyticsdi regionusproject cloud Anda, jalankan skripcreate_data.py:python3 ../sample/data/create_data.pyContoh ini juga menyertakan sejumlah dokumen dalam direktori
sample/docs. Dokumen ini membentuk pusat informasi lokal. Agen pengayaan menggunakan pusat informasi ini untuk mengekstrak informasi dan membuat dokumentasi.
Download metadata
Mulai dengan menjalankan alat download untuk mengekstrak snapshot metadata dari Knowledge Catalog untuk set data BigQuery dan tabelnya. Tindakan ini akan membuat artefak metadata lokal.
Argumen --dir menentukan direktori tempat file metadata ditulis.
python3 -m enrichment.download \
--dir ../sample/metadata.initial \
--dataset ${KC_ENRICH_SAMPLE_PROJECT}.kc_sample_analytics
Skrip ini membuat satu file Markdown per tabel di direktori sample/metadata menggunakan konvensi penamaan berikut: <project_id>.<dataset_id>.<table_id>.md.
Memperkaya metadata
Setelah membuat file Markdown lokal, jalankan agen pengayaan. Agen melakukan iterasi pada setiap file, menemukan informasi yang relevan dengan tabel, dan meringkas temuan beserta kutipan untuk membuat file Markdown yang diperbarui.
--dir: Menentukan direktori yang berisi file metadata lokal.--output-dir: Menentukan direktori target untuk file metadata yang diperbarui.--config-dir: Menentukan direktori yang berisi petunjuk agen, alat MCP, dan keahlian.
python3 -m enrichment.enrich \
--dir ../sample/metadata.initial \
--output-dir ../sample/metadata.new \
--config-dir ../sample/config
Meninjau metadata
File metadata yang telah dipertkaya berisi dokumentasi yang dihasilkan agen. Tinjau dan ubah file sesuai kebutuhan sebelum memublikasikan perubahan ke Katalog Pengetahuan.
git diff --no-index ../sample/metadata.initial ../sample/metadata.new
Memublikasikan metadata
Jalankan alat publikasi untuk men-deploy metadata yang telah di-enrich ke Knowledge Catalog.
python3 -m src.enrichment.publish --dir ../sample/metadata.new
Menyesuaikan untuk data Anda
Pada langkah sebelumnya, Anda menggunakan argumen --config-dir untuk mengarahkan agen ke direktori ../sample/config untuk konfigurasinya. Dengan cara ini, agen mengetahui tempat menemukan informasi dan cara berinteraksi dengan berbagai sumber.
Contoh ini dilengkapi dengan konfigurasi default yang menginstruksikan agen untuk menggunakan server MCP lokal guna mengakses file di basis pengetahuan lokal (sample/docs). Untuk menerapkan alur kerja ini di lingkungan Anda, Anda dapat menyesuaikan file konfigurasi ini untuk menghubungkan agen ke wiki internal, repositori kode, Google Drive, atau sistem lainnya.
Direktori sample/config/ berisi file berikut:
sample/config/
├─ instructions.md
├─ mcp.json
└─ skills/
└─ kb-search/
└─ SKILL.md
instructions.md: Melengkapi petunjuk dasar agen dengan detail yang relevan dengan organisasi Anda, seperti memintanya untuk menelusuri pusat informasi tertentu.mcp.json: Mengonfigurasi server MCP yang dapat digunakan agen untuk mengakses alat bagi sumber informasi Anda, seperti alat untuk membaca file dari direktori lokal.SKILL.md: Menjelaskan cara agen harus menggunakan alat tertentu untuk berinteraksi dengan sumber informasi, seperti menggunakanlist_contents,read_file, dansearch_contentuntuk menemukan informasi dalam dokumen lokal.
Mempelajari contoh kode Knowledge Catalog
Alat download dan publish di bagian alur pengayaan menggunakan Knowledge Catalog API untuk membaca dan menulis metadata.
Bagian ini membahas cara kerja API ini sehingga Anda dapat mengadaptasi contoh untuk integrasi Anda sendiri.
Menelusuri dan mengambil metadata
Contoh ini menggunakan API berikut untuk menelusuri dan mengambil metadata:
SearchEntriesuntuk mengambil metadata entri dan lokasi untuk set data.ListEntriesuntuk mencantumkan tabel BigQuery dalam EntryGroup Katalog.GetEntryuntuk mengambil metadata tertentu untuk setiap tabel BigQuery.
Kode berikut menunjukkan cara menelusuri set data untuk menemukan grup entri, mencantumkan semua tabel yang ada di dalamnya, dan mengambil metadata spesifiknya:
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]
)
)
Mengupdate metadata tabel
Kode berikut menunjukkan cara memublikasikan dokumentasi yang dihasilkan ke aspek Ringkasan untuk tabel dan memperbarui metadatanya:
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],
)
)
Langkah berikutnya
- Pelajari lebih lanjut cara menggunakan metadata.
- Gunakan Gemini CLI untuk menguji konteks data Anda.
- Pelajari cara mengelola aspek dan memperkaya metadata.
- Pelajari class dan metode lain yang tersedia di library klien Knowledge Catalog untuk Python.
- Coba kasus penggunaan Knowledge Catalog lainnya.