Knowledge Catalog मेटाडेटा की मदद से, डेटा फ़ाउंडेशन बनाना

1. परिचय

जनरेटिव एआई मॉडल, तर्क देने के लिए बेहतरीन टूल हैं. हालांकि, इनमें संस्था के बारे में जानकारी नहीं होती. अगर कोई एक्ज़ीक्यूटिव, एआई एजेंट से पूछता है कि "पहली तिमाही में हमारा रेवेन्यू कितना था?", तो एजेंट को आपके डेटा लेक में "रेवेन्यू" नाम की कई टेबल मिल सकती हैं. इनमें से कुछ, वित्तीय मामलों की सटीक रिपोर्ट हैं. कुछ, मार्केटिंग के रीयल-टाइम अनुमान हैं. साथ ही, कई ऐसे सैंडबॉक्स हैं जिनका इस्तेमाल अब नहीं किया जा सकता.

स्पष्ट तौर पर जानकारी न होने पर, एआई एजेंट सिर्फ़ नाम के आधार पर टेबल चुन लेगा. इससे, बिना पुष्टि किए गए डेटा से "भरोसेमंद तरीके से गलत" जवाब मिलेंगे.

यह कोडलैब, दो हिस्सों वाली सीरीज़ का हिस्सा है. इसमें, गवर्नेंस के बारे में जानकारी रखने वाला GenAI एजेंट बनाने का तरीका बताया गया है.

पहले हिस्से में, डेटा फ़ाउंडेशन बनाया जाएगा. इसमें, BigQuery में एक ऐसा डेटा लेक सेट अप किया जाएगा जिसमें "गड़बड़ी वाला" डेटा मौजूद हो. साथ ही, मान्य डेटा को नॉइज़ से अलग करने के लिए, मेटाडेटा टैग (नॉलेज कैटलॉग के पहलू) लागू किए जाएंगे. इसके अलावा, Gemini CLI का इस्तेमाल करके यह जांच की जाएगी कि एलएलएम, आपके गवर्नेंस के नियमों का पालन कर रहा है या नहीं.

(इस सीरीज़ का दूसरा हिस्सा पढ़ें. इसमें बताया गया है कि मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) और Cloud Run का इस्तेमाल करके, इस लोकल प्रोटोटाइप को एंटरप्राइज़-ग्रेड के सुरक्षित वेब ऐप्लिकेशन में कैसे डिप्लॉय किया जा सकता है. 👉 दूसरा पार्ट पढ़ें)

be15d5f41f0d716c.png

ज़रूरी शर्तें

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.
  • BigQuery, Knowledge Catalog Universal Catalog, और Terraform के बारे में बुनियादी जानकारी और इनसे जुड़ी सामान्य जानकारी.
  • Google Cloud Shell का ऐक्सेस.

आपको क्या सीखने को मिलेगा

  • Terraform का इस्तेमाल करके, कई लेयर वाला डेटा लेक डिप्लॉय करें.
  • Knowledge Catalog में, मेटाडेटा के सख्त टेंप्लेट (पहलू के टाइप) डिज़ाइन करें, ताकि आधिकारिक डेटा प्रॉडक्ट को रॉ सैंडबॉक्स टेबल से अलग किया जा सके.
  • किसी भी ऐप्लिकेशन का कोड लिखने से पहले, Gemini CLI का इस्तेमाल करके, स्थानीय तौर पर गवर्नेंस के नियमों की पुष्टि करें.

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud Shell का ऐक्सेस
  • Cloud Shell में Terraform पहले से इंस्टॉल होता है.
  • Gemini CLI (Cloud Shell में पहले से इंस्टॉल होता है).

मुख्य सिद्धांत

  • नॉलेज कैटलॉग यूनिवर्सल कैटलॉग: यह मेटाडेटा को मैनेज करने की एक ही सेवा है. हम इसका इस्तेमाल, कारोबारी संदर्भ (गवर्नेंस) के साथ तकनीकी मेटाडेटा (स्कीमा) को बेहतर बनाने के लिए करते हैं.
  • पहलू का टाइप: स्ट्रक्चर्ड मेटाडेटा टेंप्लेट. फ़्री-टेक्स्ट टैग के उलट, पहलू, टाइपिंग को बेहतर बनाते हैं (enum, boolean). इससे मशीनें, इनका आकलन आसानी से कर पाती हैं.

2. सेटअप और ज़रूरी शर्तें

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

Cloud Shell चालू करें

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

Google Cloud Shell टर्मिनल का स्क्रीनशॉट. इसमें दिखाया गया है कि एनवायरमेंट कनेक्ट हो गया है

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

एनवायरमेंट शुरू करें

Cloud Shell खोलें और अपने प्रोजेक्ट के वैरिएबल सेट करें, ताकि यह पक्का किया जा सके कि सभी कमांड सही इंफ़्रास्ट्रक्चर को टारगेट कर रही हैं.

export PROJECT_ID=$(gcloud config get-value project)
gcloud config set project $PROJECT_ID
export REGION="us-central1"

एपीआई चालू करना

नीचे दिए गए निर्देश को पूरा करने के लिए, Google Cloud की ज़रूरी सेवाएं चालू करें.

gcloud services enable \
  artifactregistry.googleapis.com \
  bigqueryunified.googleapis.com \
  cloudaicompanion.googleapis.com \
  cloudbuild.googleapis.com \
  cloudresourcemanager.googleapis.com \
  datacatalog.googleapis.com \
  run.googleapis.com

रिपॉज़िटरी का क्लोन बनाना

GitHub रिपॉज़िटरी से, इन्फ़्रास्ट्रक्चर कोड और ऑटोमेशन स्क्रिप्ट पाएं. Cloud Shell में डिस्क स्पेस बचाने के लिए, हम सिर्फ़ उस फ़ोल्डर को डाउनलोड करेंगे जिसकी ज़रूरत इस लैब के लिए है.

# Perform a shallow clone to get only the latest repository structure without the full history
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
# Specify and download only the folder we need for this lab
git sparse-checkout set data-analytics/governance-context
cd data-analytics/governance-context

"मेसी" डेटा लेक बनाना

असल दुनिया में, डेटा एनवायरमेंट में अक्सर गड़बड़ियां होती हैं. असल डेटा जैसा दिखने वाला डेटा बनाने के लिए, हमें "आधिकारिक" डेटा मार्ट और "सैंडबॉक्स" टेबल के ऐसे डेटा की ज़रूरत होती है जिस पर भरोसा नहीं किया जा सकता.

हम इस एनवायरमेंट को डिप्लॉय करने के लिए, Terraform का इस्तेमाल करेंगे. कॉन्फ़िगरेशन से ये दो काम किए जाते हैं:

  • बुनियादी ढांचा: यह Knowledge Catalog के पहलू के टाइप और BigQuery डेटासेट/टेबल बनाता है.
  • डेटा लोड करना: यह BigQuery INSERT जॉब चलाता है, ताकि टेबल बनाने के तुरंत बाद उनमें सैंपल डेटा भर दिया जाए.
  1. terraform डायरेक्ट्री पर जाएं और उसे शुरू करें.
cd terraform
terraform init
  1. कॉन्फ़िगरेशन लागू करें. इसमें एक मिनट लग सकता है.
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve

चेकपॉइंट: अब आपके पास पूरी तरह से भरा हुआ, लेकिन बिना किसी नियम के इस्तेमाल किया जाने वाला डेटा लेक है. एआई के लिए, हर टेबल एक जैसी दिखती है.

3. मैनेजमेंट लागू करना

यह इंजीनियरिंग का सबसे अहम चरण है. फ़िलहाल, टेबल finance_mart.fin_monthly_closing_internal और analyst_sandbox.tmp_data_dump_v2_final_real, एलएलएम को एक जैसी दिखती हैं. ये सिर्फ़ कॉलम वाले ऑब्जेक्ट होते हैं.

गवर्नेंस इंजीनियर के तौर पर, आपको इन टेबल में पहलू (सर्टिफ़ाइड मेटाडेटा लेबल) जोड़ना होगा, ताकि इन्हें अलग-अलग किया जा सके. किसी असली एंटरप्राइज़ में, सीआई/सीडी पाइपलाइन की मदद से इसे अपने-आप होने वाली प्रोसेस के तौर पर सेट अप किया जाता है. हम स्क्रिप्ट की मदद से, उस ऑटोमेशन को सिम्युलेट करेंगे.

गवर्नेंस पेलोड जनरेट करना

नॉलेज कैटलॉग के पहलू की कुंजियां, दुनिया भर में यूनीक होनी चाहिए. इनके पहले आपके प्रोजेक्ट आईडी होना चाहिए. ./generate_payloads.sh स्क्रिप्ट, YAML मेटाडेटा फ़ाइलों को डाइनैमिक तरीके से जनरेट करेगी.

cd ..
chmod +x ./generate_payloads.sh
./generate_payloads.sh

आउटपुट:

इससे "./aspect_payloads" नाम का एक फ़ोल्डर बन जाता है. इसमें चार YAML फ़ाइलें होती हैं. इनमें गवर्नेंस के अलग-अलग लेवल (गोल्ड/इंटरनल, गोल्ड/पब्लिक, सिल्वर/रीयलटाइम, ब्रॉन्ज़/सैंडबॉक्स) के बारे में बताया गया होता है.

सीएलआई की मदद से पहलुओं को लागू करना

स्क्रिप्ट चलाने से पहले, आइए देखते हैं कि हम प्रोसेस को आसान बनाने के लिए, असल में क्या लागू कर रहे हैं. इंटरनल फ़ाइनेंस पेलोड का स्ट्रक्चर देखने के लिए, यह कमांड चलाएं:

cat aspect_payloads/fin_internal.yaml

इसमें आपको यह कॉन्टेंट दिखेगा.

your-project-id.us-central1.official-data-product-spec:
  data:
    product_tier: GOLD_CRITICAL
    data_domain: FINANCE
    usage_scope: INTERNAL_ONLY
    update_frequency: DAILY_BATCH
    is_certified: true

ध्यान दें कि इस YAML में कारोबार के कॉन्टेक्स्ट को साफ़ तौर पर बताया गया है. जैसे, is_certified: true फ़्लैग सेट करना और GOLD_CRITICAL टियर असाइन करना. एआई को टेबल के नाम के आधार पर सिर्फ़ अनुमान लगाने के बजाय, आकलन करने के लिए साफ़ तौर पर स्ट्रक्चर्ड नियम देना.

अब ऐप्लिकेशन स्क्रिप्ट चलाएं. यह BigQuery टेबल के ज़रिए दोहराता है और इस रिजिड मेटाडेटा को अटैच करने के लिए, gcloud dataplex entries update कमांड को एक्ज़ीक्यूट करता है.

chmod +x ./apply_governance.sh
./apply_governance.sh

पुष्टि करना (ज़रूरी नहीं)

आगे बढ़ने से पहले, पुष्टि करें कि कंसोल में मेटाडेटा सही तरीके से लागू किया गया हो.

  1. Google Cloud Console में, Knowledge Catalog Universal Catalog पेज खोलें. अगर आपको बाईं ओर मौजूद नेविगेशन मेन्यू में "Knowledge Catalog Universal Catalog" नहीं दिखता है, तो Google Cloud Console विंडो में सबसे ऊपर मौजूद खोज बार का इस्तेमाल करें. इसके बाद, Knowledge Catalog टाइप करें और "सबसे ज़्यादा खोजे गए नतीजे" या "प्रॉडक्ट और पेज" में जाकर नतीजे चुनें.
  2. fin_monthly_closing_internal खोजें. आपको नतीजों में BigQuery टेबल दिखनी चाहिए. टेबल की ज़्यादा जानकारी वाले पेज पर जाने के लिए, टेबल के नाम पर क्लिक करें.

13d068a8cd0bfda9.png

  1. टेबल के ज़्यादा जानकारी वाले पेज पर, सबसे नीचे मौजूद "ज़रूरी नहीं हैं, लेकिन काम के टैग और पहलू" सेक्शन ढूंढें.
  2. आपको official-data-product-spec पहलू दिखेगा. पुष्टि करें कि वैल्यू, "गोल्ड इंटरनल" के उस उदाहरण से मेल खाती हैं जिसे हमने लागू किया था.

56726f62e1ac311a.png

अब आपने पुष्टि कर ली है कि तकनीकी रूप से एक जैसी BigQuery टेबल (fin_monthly_closing_internal और tmp_data_dump_v2_final_real) को मशीन से पढ़े जा सकने वाले मेटाडेटा के हिसाब से अलग-अलग किया गया है.

4. एजेंट को कॉन्फ़िगर करना और उसका प्रोटोटाइप बनाना

हम वेब ऐप्लिकेशन बनाने से पहले, अपने गवर्नेंस लॉजिक की पुष्टि स्थानीय तौर पर करेंगे. हम यह काम दूसरे हिस्से में करेंगे. हमें नॉलेज कैटलॉग एक्सटेंशन इंस्टॉल करना होगा और सिस्टम प्रॉम्प्ट को कॉन्फ़िगर करना होगा.

एक्सटेंशन इंस्टॉल करना

Cloud Shell में, Knowledge Catalog एक्सटेंशन इंस्टॉल करें. यह आपसे पुष्टि करने के लिए कहेगा और सेटअप की जानकारी मांगेगा.

export DATAPLEX_PROJECT="${PROJECT_ID}"

gemini extensions install https://github.com/gemini-cli-extensions/dataplex

(इंस्टॉलेशन स्वीकार करने के लिए, Y टाइप करें. इसके बाद, प्रॉम्प्ट मिलने पर अपना प्रोजेक्ट आईडी डालें).

नीति फ़ाइल तय करना

GEMINI.md फ़ाइल में, ऐसे लॉजिक शामिल होते हैं जो इंसानों के लिए बनाए गए नियमों (जैसे, "मुझे सुरक्षित डेटा चाहिए") को तकनीकी नियमों में बदलते हैं.

फ़िलहाल, यह फ़ाइल सामान्य है. एजेंट को यह पता होना चाहिए कि किस Google Cloud प्रोजेक्ट में खोज करनी है, ताकि वह सार्वजनिक इंटरनेट या अन्य कॉन्टेक्स्ट से टेबल न खोजे.

  1. अपनी PROJECT_ID को नीति फ़ाइल में इंजेक्ट करें.
envsubst < GEMINI.md > GEMINI.md.tmp && mv GEMINI.md.tmp GEMINI.md
  1. फ़ाइल की जांच करें, ताकि आपको उस एल्गोरिदम के बारे में पता चल सके जिसे हम एआई को सिखा रहे हैं.
cat GEMINI.md

इस फ़ाइल में दो बातों पर ध्यान दें:

  1. प्रोजेक्ट का दायरा: दूसरे चरण की जांच करें. पक्का करें कि projectid:${PROJECT_ID} को आपके असली प्रोजेक्ट आईडी (e.g., projectid:my-lab-project) से बदल दिया गया हो. अगर इस वैरिएबल को नहीं बदला जाता है, तो एजेंट उन सभी प्रोजेक्ट में खोज करेगा जिनका आपके पास ऐक्सेस है. इससे गलत जवाब मिलेंगे.
  2. एल्गोरिदम: फ़ेज़ 1 / फ़ेज़ 2 के लॉजिक पर ध्यान दें. हमने मॉडल को साफ़ तौर पर बताया है कि उसे एसक्यूएल का अनुमान नहीं लगाना है. उसे सबसे पहले सही टैग की परिभाषा (फ़ेज़ 1) खोजनी होगी. इसके बाद ही, वह डेटा (फ़ेज़ 2) खोज पाएगा.

एजेंट को शुरू करना और टेस्ट के उदाहरण

Gemini CLI सेशन शुरू करें. इस बार, सिस्टम कॉन्टेक्स्ट के तौर पर अपनी गवर्नेंस नीति लोड करें.

gemini

88dc6e826a34b033.png

ध्यान दें: आपको कई कॉन्टेक्स्ट फ़ाइलें लोड होती हुई दिख सकती हैं. जैसे, GEMINI.md और अन्य. यह आम बात है. सीएलआई, इस प्रोजेक्ट के खास नियमों के लिए लोकल GEMINI.md को लोड करता है. साथ ही, Knowledge Catalog एक्सटेंशन के लिए डिफ़ॉल्ट निर्देशों को भी लोड करता है.

इंस्टॉलेशन की पुष्टि करना

/mcp desc टाइप करके पुष्टि करें कि नॉलेज कैटलॉग एक्सटेंशन चालू है. आपको dataplex, कॉन्फ़िगर किए गए एमसीपी सर्वर के तौर पर दिखेगा. इसमें उपलब्ध टूल भी दिखेंगे.

169a5627263863ca.png

टेस्ट के उदाहरण (प्रोटोटाइपिंग)

यह पुष्टि करने के लिए कि एजेंट आपके नियमों का पालन कर रहा है, एजेंट के चालू सेशन में एक-एक करके यहां दिए गए प्रॉम्प्ट चिपकाएं.

  • पहला विकल्प (सीएफ़ओ के डेटा की पुष्टि करना):
"We are preparing the deck for an internal Board of Directors meeting next week. I need the numbers to be absolutely finalized, trustworthy, and kept strictly confidential. Which table is safe to use?"

अनुमानित जवाब: क्वेरी fin_monthly_closing_internal, क्योंकि यह अपने पहलू में GOLD_CRITICAL (सटीक) और INTERNAL_ONLY (बोर्ड मीटिंग) से सिमैंटिक तौर पर मैच करती है.

  • दूसरी स्थिति (सार्वजनिक तौर पर जानकारी ज़ाहिर करना):
"I need to share our quarterly financial summary with an external consulting firm. It is critical that we do not leak any raw or internal metrics. Which dataset is officially scrubbed and explicitly approved for external sharing?"

अनुमानित जवाब: एजेंट को महीने के हिसाब से तय की गई कीमत वाली इंटरनल टेबल को अनदेखा करना चाहिए. साथ ही, सिर्फ़ fin_quarterly_public_report को चुनना चाहिए, क्योंकि सिर्फ़ यही ऐसेट EXTERNAL_READY के तौर पर टैग की गई है.

  • तीसरा उदाहरण (ऑपरेशनल ज़रूरतें):
"My dashboard needs to show what's happening right now with our ad spend. I can't wait for the overnight load. What do you recommend?"

अनुमानित: एजेंट mkt_realtime_campaign_performance को चुनता है, क्योंकि इससे REALTIME_STREAMING अपडेट का अंतराल का पता चलता है. साथ ही, यह फ़ाइनेंस डेटा के GOLD_CRITICAL टियर को प्राथमिकता देता है.

  • डी (सैंडबॉक्स एक्सपेरिमेंट):
"I'm just playing around with some new ML models and need a lot of raw data. It doesn't need to be perfect, just a sandbox environment."

अनुमानित जवाब: एजेंट, tmp_data_dump_v2_final_real को चुनता है, क्योंकि यह अपने पहलू में BRONZE_ADHOC (रॉ डेटा) और is_certified: false (सैंडबॉक्स एनवायरमेंट) से सिमैंटिक तौर पर मेल खाता है.

(Gemini सेशन से बाहर निकलने के लिए, /quit टाइप करें)

5. बधाई हो! आगे क्या करना है?

आपने डेटा को मैनेज करने के लिए एक फ़ाउंडेशन तैयार कर लिया है. साथ ही, यह साबित कर दिया है कि एआई, लोकल सीएलआई प्रोटोटाइप का इस्तेमाल करके, मेटाडेटा से जुड़े नियमों का पालन कर सकता है!

अब आप एक चेकपॉइंट पर पहुंच गए हैं. कृपया अगला चरण चुनें:

पहला विकल्प: मुझे अभी दूसरे चरण पर जाना है!

अगर आपको इस लोकल प्रोटोटाइप को मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) और Cloud Run का इस्तेमाल करके, सुरक्षित और प्रोडक्शन-ग्रेड वेब ऐप्लिकेशन में बदलना है, तो:

👉 पार्ट 2 के कोडलैब का लिंक

विकल्प B: मुझे दूसरा हिस्सा बाद में पूरा करना है या मुझे सिर्फ़ पहला हिस्सा पूरा करना था.

अगर आपको आज के लिए काम बंद करना है और क्लाउड की लागत से बचना है, तो आपको अपने संसाधनों को हटाना होगा.

चिंता न करें! दूसरे हिस्से में, हम आपको "फ़ास्ट-ट्रैक स्क्रिप्ट" देंगे. इससे पहले हिस्से के एनवायरमेंट को सिर्फ़ दो मिनट में फिर से बनाया जा सकेगा. इससे आपको वहीं से शुरू करने में मदद मिलेगी जहां आपने छोड़ा था.

👉 'स्टोरेज में जगह बनाएं' सेक्शन पर जाएं.

6. स्टोरेज में जगह बनाएं (सिर्फ़ विकल्प B के लिए)

अगर आपको आगे काम नहीं करना है, तो शुल्क से बचने के लिए संसाधनों को बंद करें.

डेटा लेक को डिस्ट्रॉय करना (Terraform)

अगर आप फ़िलहाल Gemini सीएलआई एनवायरमेंट में हैं, तो Ctrl+C को दो बार दबाकर या /quit टाइप करके सेशन से बाहर निकलें. इसके बाद, ये निर्देश चलाएं:

cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve

Gemini के सीएलआई एक्सटेंशन को अनइंस्टॉल करना और डिवाइस में मौजूद फ़ाइलें हटाना

gemini extensions uninstall dataplex
cd ~
rm -rf ~/devrel-demos