Knowledge Catalog (לשעבר Dataplex Universal Catalog) מנהל את המטא-נתונים של נכסי הנתונים בארגון. המטא-נתונים האלה מספקים את ההקשר שבו הנציגים משתמשים כדי לגלות, להבין ולשאול את הנתונים שנדרשים כדי לענות על שאלות של משתמשים.
Knowledge Catalog מנהל משאבים באופן אוטומטי, עוקב אחרי סכימות טכניות ויוצר תיאורים ופרופילים של נתונים, אבל ההקשר העסקי החשוב נמצא בדרך כלל במקומות אחרים, כמו:
- מסמכים פנימיים ודפי ויקי
- מאגרי המקורות של הקוד
- ערוצי תקשורת כמו Google Chat ו-Slack
אתם יכולים ליצור סוכני AI שיחלצו הקשר מהמקורות האלה ויעשירו את המטא-נתונים שלכם באופן רציף ובקנה מידה נרחב. במדריך הזה נשתמש בקוד לדוגמה מהמאגר knowledge-catalog כדי להראות איך יוצרים נציג שמבצע את הפעולות הבאות:
- חילוץ הקשר: חילוץ הקשר עסקי ממאגרי ידע, ממסמכים, מקוד או מצ'אט כדי להעשיר את המטא-נתונים הטכניים.
- יצירת מסמכי תיעוד: יצירת מסמכי תיעוד לטבלאות ב-BigQuery על סמך ההקשר שחולץ ומקורות מידע אחרים.
- שיפור החיפוש והגילוי: פרסום מסמכים שנוצרו ב-Knowledge Catalog, כדי שיהיה קל יותר למצוא ולהבין את הרשומות באמצעות חיפוש.
לפני שמתחילים
כדי להפעיל את סוכן ההעשרה של Knowledge Catalog, אתם צריכים לעמוד בדרישות הבאות:
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לשימוש בסוכן ההעשרה, אתם צריכים לבקש מהאדמין לתת לכם את התפקידים הבאים ב-IAM ב Google Cloud פרויקט iam.gserviceaccount.com:
-
כדי לנהל משאבים לדוגמה ב-BigQuery:
עריכה של נתוני BigQuery (
roles/bigquery.dataEditor) -
כדי לחפש מטא-נתונים בקטלוג:
צפייה ב-Dataplex (
roles/dataplex.viewer) -
כדי לנהל את המטא-נתונים של הקטלוג:
עריכת קטלוג Dataplex (
roles/dataplex.catalogEditor) -
כדי לגשת לתכונות של Vertex AI (ממשקי Vertex AI Gemini API):
משתמש ב-Vertex AI (
roles/aiplatform.user) -
כדי להשתמש בממשקי API של שירותים:
צרכן של שימוש בשירות (
roles/serviceusage.serviceUsageConsumer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות כדי להשתמש בסוכן ההעשרה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להשתמש בסוכן ההעשרה, נדרשות ההרשאות הבאות:
-
bigquery.projects.get/createDatasets -
dataplex.projects.search -
dataplex.entryGroups.get/updateEntries -
aiplatform.endpoints.predict -
serviceusage.services.use
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הפעלת ממשקי ה-API
כדי להשתמש בסוכן להעשרת נתונים של Knowledge Catalog, צריך להפעיל את ממשקי ה-API הבאים בפרויקט:
- BigQuery API
- Dataplex API
- Vertex AI API
- Service Usage API
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
התקנת יחסי תלות
כדי להריץ את הדוגמה, צריך את הכלים והחבילות הבאים של Python:
-
google-adk(ערכה לפיתוח סוכנים (ADK)) - לקוח Python של
google-cloud-dataplexKnowledge Catalog -
google-authמנהל את Application Default Credentials -
mcp[cli]ליצירת שרת MCP לדוגמה -
gcloudלאימות ולהגדרה. כדי להתקין את Google Cloud CLI, קראו את המאמר בנושא Google Cloud SDK.
הגדרת הסביבה
מגדירים את
gcloudונכנסים לחשבון:gcloud auth application-default login gcloud config set core/project PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_IDבמזהה הפרויקט
-
משכפלים את המאגר
knowledge-catalogועוברים לספריית קובצי המקור לדוגמה:git clone https://github.com/GoogleCloudPlatform/knowledge-catalog.git cd knowledge-catalog/samples/enrichment/srcכדי להתקין את הרכיבים התלויים, משתמשים בסקריפט שמגדיר סביבה וירטואלית של Python ואת משתני הסביבה הנדרשים:
source env.sh --installכדי ליצור קבוצת נתונים לדוגמה ב-BigQuery בשם
kc_sample_analyticsבאזורusשל הפרויקט בענן, מריצים את הסקריפטcreate_data.py:python3 ../sample/data/create_data.pyהדוגמה כוללת גם כמה מסמכים בספרייה
sample/docs. המסמכים האלה יוצרים מאגר ידע מקומי. סוכן ההעשרה משתמש במאגר הידע הזה כדי לחלץ מידע וליצור מסמכים.
הורדת מטא-נתונים
קודם כל, מריצים את כלי ההורדה כדי לחלץ תמונת מצב של המטא-נתונים מ-Knowledge Catalog למערך הנתונים ב-BigQuery ולטבלאות שלו. הפעולה הזו יוצרת פריטי מטא-נתונים מקומיים.
הארגומנט --dir מציין את הספרייה שבה נכתבים קובצי המטא-נתונים.
python3 -m enrichment.download \
--dir ../sample/metadata.initial \
--dataset ${KC_ENRICH_SAMPLE_PROJECT}.kc_sample_analytics
הסקריפט יוצר קובץ Markdown אחד לכל טבלה בספרייה sample/metadata, לפי מוסכמת מתן השמות הבאה: <project_id>.<dataset_id>.<table_id>.md.
העשרת המטא-נתונים
אחרי שיוצרים את קובצי ה-Markdown המקומיים, מריצים את סוכן ההעשרה. הסוכן עובר על כל קובץ, מוצא מידע שרלוונטי לטבלאות ומסכם את הממצאים יחד עם ציטוטים כדי ליצור קובצי Markdown מעודכנים.
-
--dir: מציין את הספרייה שמכילה את קובצי המטא-נתונים המקומיים. -
--output-dir: מציין את ספריית היעד של קובצי המטא-נתונים המעודכנים. -
--config-dir: מציין את הספרייה שמכילה את ההוראות לסוכן, את כלי ה-MCP ואת הסקילים.
python3 -m enrichment.enrich \
--dir ../sample/metadata.initial \
--output-dir ../sample/metadata.new \
--config-dir ../sample/config
בדיקת המטא-נתונים
קובצי המטא-נתונים המועשרים מכילים את התיעוד שהסוכן יצר. בודקים את הקבצים ומשנים אותם לפי הצורך לפני שמפרסמים את השינויים ב-Knowledge Catalog.
git diff --no-index ../sample/metadata.initial ../sample/metadata.new
פרסום המטא-נתונים
מפעילים את כלי הפרסום כדי לפרוס את המטא-נתונים המועשרים ב-Knowledge Catalog.
python3 -m src.enrichment.publish --dir ../sample/metadata.new
התאמה אישית של הנתונים
בשלב הקודם, השתמשתם בארגומנט --config-dir כדי להפנות את הסוכן לספרייה ../sample/config בשביל ההגדרות שלו. ככה הסוכן יודע איפה למצוא מידע ואיך לתקשר עם מקורות שונים.
הדוגמה כוללת הגדרת ברירת מחדל שמורה לסוכן להשתמש בשרת MCP מקומי כדי לגשת לקבצים במאגר הידע המקומי (sample/docs). כדי להחיל את תהליך העבודה הזה בסביבה שלכם, אתם יכולים להתאים אישית את קובצי התצורה האלה כדי לחבר את הסוכן לוויקי הפנימי, למאגרי המקורות של הקוד, ל-Google Drive או למערכות אחרות.
הספרייה sample/config/ מכילה את הקבצים הבאים:
sample/config/
├─ instructions.md
├─ mcp.json
└─ skills/
└─ kb-search/
└─ SKILL.md
-
instructions.md: מוסיפה להוראות הבסיסיות של הנציג פרטים שרלוונטיים לארגון, כמו הנחיה לחפש במאגר ידע ספציפי. -
mcp.json: מגדיר שרתי MCP שהנציג יכול להשתמש בהם כדי לגשת לכלים של מקורות המידע, כמו כלי לקריאת קבצים מספרייה מקומית. -
SKILL.md: מתאר איך הנציג צריך להשתמש בכלים ספציפיים כדי לקיים אינטראקציה עם מקור מידע, כמו שימוש ב-list_contents, ב-read_fileוב-search_contentכדי למצוא מידע במסמכים מקומיים.
עיון בקוד לדוגמה של Knowledge Catalog
הכלים download ו-publish בקטע של תהליך ההעשרה משתמשים בממשקי ה-API של Knowledge Catalog כדי לקרוא ולכתוב מטא-נתונים.
בקטע הזה מוסבר איך ממשקי ה-API האלה פועלים, כדי שתוכלו להתאים את הדוגמה לשילובים שלכם.
חיפוש ואחזור של מטא-נתונים
הדוגמה משתמשת בממשקי ה-API הבאים כדי לחפש ולאחזר מטא-נתונים:
-
SearchEntriesכדי לאחזר את המטא-נתונים של הרשומה והמיקום של מערך הנתונים. -
ListEntriesכדי למנות טבלאות ב-BigQuery בתוך EntryGroup בקטלוג. -
GetEntryכדי לאחזר את המטא-נתונים הספציפיים של כל טבלה ב-BigQuery.
הקוד הבא מראה איך לחפש קבוצת נתונים כדי לאתר את קבוצת הרשומות שלה, להציג את כל הטבלאות שהיא מכילה ולאחזר את המטא-נתונים הספציפיים שלהן:
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]
)
)
עדכון המטא-נתונים של הטבלה
הקוד הבא מראה איך לפרסם את התיעוד שנוצר בהיבט Overview של טבלה ולעדכן את המטא-נתונים שלה:
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],
)
)
המאמרים הבאים
- מידע נוסף על עבודה עם מטא-נתונים
- משתמשים ב-Antigravity CLI כדי לבדוק את הקשר הנתונים.
- מידע נוסף על ניהול היבטים והעשרת מטא-נתונים
- אפשר לבדוק מחלקות ו-methods אחרות שזמינות בספריית הלקוח של Knowledge Catalog ל-Python.
- תרחישים לדוגמה נוספים של Knowledge Catalog