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

1. परिचय

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

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

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

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

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

be15d5f41f0d716c.png

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

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

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

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

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

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

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

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

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 का इस्तेमाल करेंगे. कॉन्फ़िगरेशन से ये दो काम किए जाते हैं:

  • इंफ़्रास्ट्रक्चर: यह Dataplex के पहलू के टाइप और 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, एलएलएम को एक जैसी दिखती हैं. ये सिर्फ़ कॉलम वाले ऑब्जेक्ट होते हैं.

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

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

Dataplex के पहलू की कुंजियां, दुनिया भर में यूनीक होनी चाहिए. इनके पहले आपके प्रोजेक्ट का आईडी होना चाहिए. ./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 में Dataplex Universal Catalog पेज खोलें. अगर आपको बाईं ओर मौजूद नेविगेशन मेन्यू में "Dataplex Universal Catalog" नहीं दिखता है, तो Google Cloud Console विंडो में सबसे ऊपर मौजूद खोज बार का इस्तेमाल करें. इसमें Dataplex टाइप करें और "सबसे ज़्यादा खोजे गए नतीजे" या "प्रॉडक्ट और पेज" में जाकर, नतीजा चुनें.
  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. एजेंट को कॉन्फ़िगर करना और उसका प्रोटोटाइप बनाना

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

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

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

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. एल्गोरिदम: पहले और दूसरे चरण के लॉजिक पर ध्यान दें. हम मॉडल को साफ़ तौर पर यह निर्देश देते हैं कि वह एसक्यूएल का अनुमान न लगाए. इसे सबसे पहले टैग की सही परिभाषा (पहला चरण) खोजनी होगी. इसके बाद ही, यह डेटा (दूसरा चरण) खोज पाएगा.

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

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

gemini

88dc6e826a34b033.png

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

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

Dataplex एक्सटेंशन चालू है या नहीं, इसकी पुष्टि करने के लिए /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 (बोर्ड मीटिंग) से सिमैंटिक तौर पर मेल खाती है.

  • परिदृश्य B (सार्वजनिक तौर पर जानकारी ज़ाहिर करना):
"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 का इस्तेमाल करके, सुरक्षित और प्रोडक्शन-ग्रेड वेब ऐप्लिकेशन में बदलना है, तो:

👉 दूसरे पार्ट के कोडलैब का लिंक

विकल्प 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 CLI एक्सटेंशन को अनइंस्टॉल करना और लोकल फ़ाइलें हटाना

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