मल्टी-डेटाबेस पर्सिस्टेंस की मदद से, एक इंटेलिजेंट ई-कॉमर्स कैटलॉग बनाना

1. परिचय

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

इस कोडलैब में, आपको एक ऐसा पॉलीग्लॉट पावरहाउस बनाना होगा जो इन चीज़ों को एक साथ जोड़ता हो:

  • AlloyDB: यह लेन-देन से जुड़े डेटा को मैनेज करने के लिए एक बेहतरीन टूल है. इससे डेटा को तेज़ी से और एक जैसा बनाए रखने में मदद मिलती है. साथ ही, इमेज एंबेडिंग की सुविधा भी मिलती है.
  • Google Cloud पर MongoDB Atlas: यह आपकी ज़रूरत के हिसाब से काम करने वाली, स्कीमा-एग्नोस्टिक कैटलॉग लेयर है.
  • Cloud Storage: रीयल-टाइम में ट्रेंड का अनुमान लगाने के लिए, आपका एनालिटिकल ब्रेन.
  • BigQuery: यह आपका हाई-रिज़ॉल्यूशन वाला डिजिटल वेयरहाउस है.

"सीक्रेट सॉस"? आपको डेटाबेस के लिए एमसीपी टूलबॉक्स का इस्तेमाल करना होगा, ताकि Cloud Run पर चल रहे डेटा सोर्स को बेहतर तरीके से व्यवस्थित और इंटिग्रेट किया जा सके. इसके बाद, एजेंट डेवलपमेंट किट (एडीके) का इस्तेमाल करके, मल्टी-एजेंट चैट ऐप्लिकेशन को डिप्लॉय करना होगा. आप सिर्फ़ एक खोज बार नहीं बना रहे हैं, बल्कि एक इंटेलिजेंट रीटेल ब्रेन बना रहे हैं. यह कॉन्टेक्स्ट को समझता है, सीमाओं का ध्यान रखता है, और रॉ डेटा और उपयोगकर्ता के इंटेंट के बीच के अंतर को कम करता है.

उपयोगकर्ता की ऐसी क्वेरी जिसका जवाब देना नामुमकिन है

स्टैंडर्ड ई-कॉमर्स एजेंट, कई तरह के लॉजिक को एक साथ प्रोसेस नहीं कर पाते. जैसे, नेगेटिव कंस्ट्रेंट, विज़ुअल समानता, और रीयल-टाइम इन्वेंट्री को एक साथ प्रोसेस करना. उदाहरण के लिए, आम तौर पर मुझे किसी खुदरा साइट से इस तरह बात करनी होती है:

"नमस्ते, मैं ऊंचाई वाली जगहों पर फ़ोटोग्राफ़ी करने के लिए एक ट्रिप प्लान कर रहा हूं. मुझे ‘AeroGlow Pro' जैसे स्टाइल वाले कुछ ऐसे बैकपैक दिखाओ जो मौसम के हिसाब से खराब न हों. हालांकि, उनमें चमड़े का कोई कॉम्पोनेंट नहीं होना चाहिए. साथ ही, मुझे यह भी बताओ कि क्या वे वाकई स्टॉक में हैं और क्या अन्य फ़ोटोग्राफ़रों ने समीक्षाओं में स्ट्रैप की मज़बूती के बारे में शिकायत की है."

इस क्वेरी को "एजेंट किलर" क्यों कहा जाता है:

  • विज़ुअल समानता (AlloyDB + Vector Search): "AeroGlow Pro से मिलती-जुलती स्टाइल" के लिए, इमेज एंबेडिंग की तुलना करनी होगी.
  • नेगेटिव कंस्ट्रेंट (MongoDB): "बिना किसी लेदर के" के लिए, फ़्लेक्सिबल और नेस्ट किए गए एट्रिब्यूट के ज़रिए फ़िल्टर करने की ज़रूरत होती है. आम तौर पर, ये एट्रिब्यूट स्टैंडर्ड एसक्यूएल स्कीमा में नहीं होते.
  • रीयल-टाइम इन्वेंट्री (AlloyDB): "असल में स्टॉक में है" के लिए, लाइव ट्रांज़ैक्शन की जांच ज़रूरी है, न कि पुराने सर्च इंडेक्स की.
  • सिमैंटिक सिंथेसिस (BigQuery + मल्टी-एजेंट): "स्ट्रैप की मज़बूती" के लिए समीक्षाओं का विश्लेषण करने के लिए, एजेंट को BigQuery से मिले अनस्ट्रक्चर्ड फ़ीडबैक की खास जानकारी तुरंत देनी होगी.

ज़्यादातर रीटेल बॉट सिर्फ़ ‘बैकपैक' और ‘लेदर' को देखेंगे और लेदर के 10 बैकपैक दिखाएंगे. हम इसे कैसे रोक रहे हैं?

ऐसा इसलिए, क्योंकि हम सिर्फ़ कीवर्ड मैच नहीं करते. हम एमसीपी टूलबॉक्स का इस्तेमाल कर रहे हैं, ताकि हमारे एजेंट इन सभी सोर्स में मौजूद डेटा को ‘समझ’ सकें. जैसे, AlloyDB में मौजूद लेन-देन का डेटा और MongoDB में मौजूद अलग-अलग एट्रिब्यूट. चलिए, इसे बनाते हैं!

आपको क्या करना होगा

  • मुख्य प्रॉडक्ट डेटा के लिए, AlloyDB क्लस्टर को प्रोविज़न करना
  • सेमी-स्ट्रक्चर्ड प्रॉडक्ट की जानकारी को स्टोर करने के लिए, Google Cloud पर MongoDB Atlas को कॉन्फ़िगर करना
  • प्रॉडक्ट की इमेज दिखाने के लिए, Cloud Storage बकेट बनाएं
  • डेटा को एक जैसा ऐक्सेस देने के लिए, Cloud Run पर डेटाबेस के लिए MCP Toolbox डिप्लॉय करें
  • डेटा का विश्लेषण करने के लिए, ईटीएल प्रोसेस चलाकर डेटा को BigQuery में पुश करना
  • एआई एजेंट से नैचुरल लैंग्वेज में बातचीत करें.

ई-कॉमर्स मल्टी डेटाबेस आर्किटेक्चर

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

  • Chrome जैसा कोई वेब ब्राउज़र
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट
  • Google Cloud पर MongoDB Atlas का मुफ़्त खाता

2. शुरू करने से पहले

Google Cloud प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके क्लाउड प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें.

Cloud Shell शुरू करना

Cloud Shell, Google Cloud में चलने वाला एक कमांड-लाइन एनवायरमेंट है. इसमें ज़रूरी टूल पहले से मौजूद होते हैं.

  1. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.
  2. Cloud Shell से कनेक्ट होने के बाद, अपनी पुष्टि की जांच करें:
    gcloud auth list
    
  3. पुष्टि करें कि आपका प्रोजेक्ट कॉन्फ़िगर किया गया है:
    gcloud config get project
    
  4. अगर आपका प्रोजेक्ट उम्मीद के मुताबिक सेट नहीं है, तो उसे सेट करें:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

वैरिएबल सेट करना

Cloud Shell में, अपने प्रोजेक्ट आईडी और प्रोजेक्ट नंबर के लिए एनवायरमेंट वैरिएबल सेट करें:

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

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

सभी ज़रूरी एपीआई चालू करने के लिए, यह कमांड चलाएं:

gcloud services enable \
  alloydb.googleapis.com \
  bigquery.googleapis.com \
  storage.googleapis.com \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com \
  iam.googleapis.com \
  secretmanager.googleapis.com \
  compute.googleapis.com \
  servicenetworking.googleapis.com \
  aiplatform.googleapis.com

3. Cloud Storage सेट अप करना

Cloud Storage, बिना स्ट्रक्चर वाली मीडिया ऐसेट के लिए एक बड़े स्टोर के तौर पर काम करता है. जैसे, प्रॉडक्ट की इमेज.

  1. Google Cloud Console में, Cloud Storage पर जाएं और बकेट बनाएं पर क्लिक करें.
  2. अपनी बकेट को दुनिया भर में यूनीक नाम दें, जैसे कि -ecommerce-images.
  3. बनाएं पर क्लिक करें.
  4. डेमो ऐप्लिकेशन को बिना पुष्टि के इमेज ऐक्सेस करने की अनुमति देने के लिए, इस बकेट को सार्वजनिक तौर पर ऐक्सेस करने से रोकें विकल्प से सही का निशान हटाएं. इसके बाद, पुष्टि करें पर क्लिक करें.
  5. अनुमतियां टैब पर जाएं.
  6. अनुमतियां में जाकर, ऐक्सेस दें पर क्लिक करें.
  7. नए मुख्य खाते में, allUsers डालें.
  8. कोई भूमिका चुनें में जाकर, Cloud Storage > स्टोरेज ऑब्जेक्ट व्यूअर को चुनें.
  9. सेव करें पर क्लिक करें. इसके बाद, सार्वजनिक ऐक्सेस की अनुमति दें पर क्लिक करके, इस बात की पुष्टि करें कि आपको संसाधन को सार्वजनिक करना है.
  10. Cloud Shell में, बकेट के नाम को किसी वैरिएबल में सेव करें:
    export BUCKET=<your-bucket-name>
    
    की जगह, अपनी बनाई गई बकेट का नाम डालें.

प्लेसहोल्डर की इमेज अपलोड करना

प्रोजेक्ट में, बेहतरीन विज़ुअल अनुभव के लिए प्लेसहोल्डर इमेज का इस्तेमाल किया जाता है.

  1. अपने Cloud Shell में, रिपॉज़िटरी को क्लोन करें:
    git clone https://github.com/AbiramiSukumaran/polyglot-persist-ecommerce.git
    
  2. UploadImages फ़ोल्डर पर जाएं:
    cd polyglot-persist-ecommerce/UploadImages
    
  3. सैंपल इमेज को अपनी बकेट में अपलोड करें:
    gcloud storage cp *.jpg gs://$BUCKET/
    

4. AlloyDB सेट अप करना

AlloyDB, स्ट्रक्चर्ड, ट्रांज़ैक्शनल, और ज़रूरी डेटा के लिए एकमात्र भरोसेमंद सोर्स के तौर पर काम करता है. जैसे, प्रॉडक्ट आईडी, नाम, SKU, कीमतें, और इन्वेंट्री. AlloyDB, एआई एजेंट को एक जैसी चीज़ें खोजने की सुविधाएं भी देता है. इससे सुझाव देने और नैचुरल लैंग्वेज में क्वेरी करने में मदद मिलती है.

AlloyDB क्लस्टर को प्रोविज़न करना

  1. Google Cloud Console में, AlloyDB for PostgreSQL पर जाएं.
  2. क्लस्टर बनाएं पर क्लिक करें.
  3. क्लस्टर आईडी के लिए, ecommerce-cluster डालें.
  4. postgres उपयोगकर्ता के लिए एक मज़बूत पासवर्ड सेट करें. सीखने के लिए, alloydb का इस्तेमाल किया जा सकता है.
  5. डेटाबेस वर्शन के लिए, डिफ़ॉल्ट सेटिंग को बनाए रखें.
  6. Region के लिए, us-central1 (या अपनी पसंद का इलाका) चुनें.

प्राइमरी इंस्टेंस को कॉन्फ़िगर करना

  1. इंस्टेंस आईडी के लिए, ecommerce-cluster-primary डालें.
  2. ज़ोन के हिसाब से उपलब्धता में जाकर, सिंगल ज़ोन को चुनें.
  3. मशीन सीरीज़ के लिए, N2 चुनें. इसके बाद, मशीन टाइप के लिए, 4 vCPU, 32 GB चुनें.
  4. निजी आईपी कनेक्टिविटी में, प्राइवेट सर्विसेज़ ऐक्सेस (पीएसए) को चुनें. इसके बाद, default नेटवर्क को चुनें. अगर डिफ़ॉल्ट नेटवर्क पहले से सेट नहीं है, तो इसे बनाने के लिए नेटवर्क सेटअप की पुष्टि करें पर क्लिक करें.
  5. सार्वजनिक आईपी कनेक्टिविटी में जाकर, सार्वजनिक आईपी चालू करें चेकबॉक्स को चुनें. इससे एमसीपी टूलबॉक्स, इस कोडलैब में सही तरीके से कनेक्ट हो पाएगा. कंसोल, password.enforce_complexity फ़्लैग को अपने-आप चालू कर देता है. AlloyDB को सार्वजनिक आईपी के लिए इसकी ज़रूरत होती है.
  6. अनुमति वाले बाहरी नेटवर्क में, 0.0.0.0/0 डालें. मुझे जोखिमों की जानकारी है चेकबॉक्स को चुनें और सेव करें पर क्लिक करें.
  7. क्लस्टर बनाएं पर क्लिक करें.

डेटाबेस को शुरू करना

  1. बाईं ओर मौजूद नेविगेशन मेन्यू में, AlloyDB Studio पर क्लिक करें.
  2. डेटाबेस ड्रॉप-डाउन में, postgres को चुनें.
  3. डेटाबेस में साइन इन करने के लिए, पहले से मौजूद पुष्टि करने की सुविधा को चुनें.
  4. उपयोगकर्ता नाम के लिए, postgres उपयोगकर्ता का इस्तेमाल करें.
  5. पासवर्ड के लिए, वह पासवर्ड डालें जो आपने पहले सेट किया था.
  6. प्रमाणित करें पर क्लिक करें.
  7. एडिटर व्यू में, बिना टाइटल वाला नया क्वेरी टैब खोलें.
  8. यहां दिए गए डीडीएल को कॉपी करें और Run पर क्लिक करें:
    CREATE TABLE products_core_table (
      product_id UUID PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      sku VARCHAR(50) UNIQUE NOT NULL,
      price NUMERIC(10, 2) NOT NULL,
      stock INT NOT NULL
    );
    
  9. अपने Cloud Shell में, प्रोजेक्ट के रूट फ़ोल्डर पर जाएं:
    cd ~/polyglot-persist-ecommerce
    
  10. अपने Cloud Shell में alloydb_insert_queries.sql फ़ाइल खोलें और इंसर्ट क्वेरी कॉपी करें.
    cat alloydb_insert_queries.sql
    
  11. बिना टाइटल वाली क्वेरी के नए टैब में, सिर्फ़ INSERT स्टेटमेंट चिपकाएं और Run पर क्लिक करें.
  12. बिना टाइटल वाली क्वेरी के नए टैब में, यहां दिया गया डीडीएल कॉपी करें. इसके बाद, products_core_table टेबल पर इंडेक्स बनाने के लिए, Run पर क्लिक करें:
    CREATE INDEX idx_products_core_sku ON products_core_table(sku);
    

एआई एजेंट के लिए इमेज एंबेडिंग बनाएं, ताकि वह मिलते-जुलते प्रॉडक्ट फ़ेच कर सके

एआई एजेंट इंटिग्रेशन, मिलते-जुलते प्रॉडक्ट फ़ेच करने के लिए इमेज एंबेडिंग का इस्तेमाल करता है. एंबेडिंग, multimodalembedding@001 मॉडल का इस्तेमाल करके जनरेट की जाती हैं और AlloyDB डेटाबेस में सेव की जाती हैं. एंबेडिंग, 1408 डाइमेंशन वाले वेक्टर होते हैं. इन्हें img_embeddings कॉलम में सेव किया जाता है.

एम्बेडिंग जनरेट करने से पहले, हमें AlloyDB सेवा खाते को ज़रूरी भूमिकाएं देनी होंगी, ताकि वह Cloud Storage को ऐक्सेस कर सके.

Cloud Storage को ऐक्सेस करने के लिए, AlloyDB सेवा खाते को भूमिकाएं असाइन करें

AlloyDB सेवा खाते को वे भूमिकाएं दें जिनकी ज़रूरत Cloud Storage से इमेज पढ़ने और Vertex AI एंबेडिंग जनरेट करने के लिए होती है:

for role in roles/storage.objectUser roles/storage.objectViewer roles/aiplatform.user; do
  gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-alloydb.iam.gserviceaccount.com" \
    --role=$role --condition=None
done

एक्सटेंशन चालू करना

इस ऐप्लिकेशन को बनाने के लिए, हम pgvector और google_ml_integration एक्सटेंशन का इस्तेमाल करेंगे. pgvector एक्सटेंशन की मदद से, वेक्टर एंबेडिंग को सेव किया जा सकता है और खोजा जा सकता है. google_ml_integration एक्सटेंशन, ऐसे फ़ंक्शन उपलब्ध कराता है जिनका इस्तेमाल करके, Vertex AI के अनुमान लगाने वाले एंडपॉइंट को ऐक्सेस किया जा सकता है. इससे एसक्यूएल में अनुमान मिलते हैं. इन एक्सटेंशन को चालू करने के लिए, ये डीडीएल चलाएं:

  1. Google Cloud Console में, AlloyDB for PostgreSQL पर जाएं.
  2. बाईं ओर मौजूद नेविगेशन मेन्यू में, AlloyDB Studio पर क्लिक करें.
  3. एडिटर व्यू में, बिना टाइटल वाला नया क्वेरी टैब खोलें.
  4. यहां दिए गए डीडीएल को कॉपी करें और Run पर क्लिक करें:
    CREATE EXTENSION IF NOT EXISTS vector;
    CREATE EXTENSION IF NOT EXISTS google_ml_integration;
    

एंबेडिंग की मदद से डेटाबेस को शुरू करना

  1. products_core_table में img_embeddings कॉलम जोड़ें.
    ALTER TABLE products_core_table
    ADD COLUMN img_embeddings vector(1408);
    
  2. अपनी बकेट का नाम डालकर, एंबेड करने की क्वेरी को प्रिंट करें:
    cd ~/polyglot-persist-ecommerce
    sed "s/<STORAGE_BUCKET_NAME>/$BUCKET/g" alloydb_generate_embeddings.sql
    
  3. आउटपुट को कॉपी करें और उसे AlloyDB Studio के नए क्वेरी टैब में चिपकाएं. इसके बाद, चलाएं पर क्लिक करें. इसमें करीब एक मिनट लगता है. अगर समयसीमा खत्म हो जाती है, तो इसे फिर से चलाएं. जिन प्रॉडक्ट में पहले से एंबेडिंग मौजूद हैं उन्हें छोड़ दिया जाता है.

5. Google Cloud पर MongoDB Atlas सेट अप करना

MongoDB में प्रॉडक्ट की ज़्यादा जानकारी और सेमी-स्ट्रक्चर्ड जानकारी सेव की जाती है. साथ ही, इसमें उपयोगकर्ता के व्यवहार से जुड़ा डेटा सेव किया जाता है. जैसे, क्लिक और व्यू.

MongoDB क्लस्टर बनाना

  1. MongoDB Atlas में साइन इन करें. अगर ज़रूरी हो, तो बिना किसी शुल्क के खाता बनाएं.
  2. Deploy your cluster पर जाकर, Free को चुनें. (Atlas, पैसे चुकाकर ली जाने वाली सदस्यता को पहले से चुनता है. पक्का करें कि आपने मुफ़्त वाला विकल्प चुना हो.)
  3. सेवा देने वाली कंपनी के लिए, Google Cloud चुनें. इसके बाद, इलाका के लिए, Iowa (us-central1) चुनें.
  4. Name के लिए, ecommerce-cluster डालें और Preload sample dataset को अनचेक करें.
  5. Create Deployment पर क्लिक करें.

ऐक्सेस की अनुमति देना और डेटाबेस उपयोगकर्ता बनाना

Atlas, Connect to ecommerce-cluster डायलॉग बॉक्स खोलता है.

  1. कोई दूसरा आईपी पता जोड़ें पर क्लिक करें. इसके बाद, 0.0.0.0/0 डालें और उसे जोड़ें.
  2. उपयोगकर्ता नाम के लिए store-user और पासवर्ड के लिए storeuser डालें. इसके बाद, डेटाबेस उपयोगकर्ता बनाएं पर क्लिक करें.
  3. कनेक्शन का तरीका चुनें पर क्लिक करें. इसके बाद, ड्राइवर और क्लाइंट लाइब्रेरी पर क्लिक करें.
  4. अपने ऐप्लिकेशन में इस कनेक्शन स्ट्रिंग का इस्तेमाल करें में जाकर, कनेक्शन स्ट्रिंग को कॉपी करें. ऐसा लगता है कि mongodb+srv://store-user:@ecommerce-cluster.xxxxx.mongodb.net/. को storeuser से बदलें और स्ट्रिंग को सेव करें. इसका इस्तेमाल tools.yaml में किया जाएगा.

डेटाबेस और कलेक्शन बनाना

  1. बाईं ओर मौजूद नेविगेशन पैनल में, डेटा एक्सप्लोरर पर क्लिक करें. इसके बाद, डेटाबेस बनाएं पर क्लिक करें और जानकारी डालें:
    • डेटाबेस का नाम: ecommerce_db
    • कलेक्शन का नाम: product_details_collection
  2. डेटाबेस बनाएं पर क्लिक करें.
  3. डेटा एक्सप्लोरर में, कलेक्शन का नाम चुनें.
  4. डेटा जोड़ें (+) आइकॉन पर क्लिक करें. इसके बाद, दस्तावेज़ शामिल करें पर क्लिक करें.
  5. product_details_export.json से JSON कॉन्टेंट कॉपी करें और उसे Insert Document एडिटर डायलॉग में चिपकाएं.
  6. Atlas एक बैनर दिखाता है, जिसमें टेक्स्ट को शेल सिंटैक्स में बदलने का विकल्प होता है. CONVERT पर क्लिक करें, फिर Insert पर क्लिक करें. पुष्टि करें कि 192 दस्तावेज़ जोड़े गए हैं.
  7. डेटा एक्सप्लोरर में, ecommerce_db डेटाबेस के बगल में मौजूद, कलेक्शन बनाएं (+) पर क्लिक करें.
  8. कलेक्शन के नाम के तौर पर user_interactions_collection डालें और कलेक्शन बनाएं पर क्लिक करें.
  9. डेटा एक्सप्लोरर में, user_interactions_collection कलेक्शन को चुनें.
  10. डेटा जोड़ें (+) आइकॉन पर क्लिक करें. इसके बाद, दस्तावेज़ शामिल करें पर क्लिक करें.
  11. user_interactions_export.json से JSON कॉन्टेंट को कॉपी करें और उसे Insert Document एडिटर डायलॉग में चिपकाएं.
  12. Atlas एक बैनर दिखाता है, जिसमें टेक्स्ट को शेल सिंटैक्स में बदलने का विकल्प होता है. CONVERT पर क्लिक करें, फिर Insert पर क्लिक करें. पुष्टि करें कि 211 दस्तावेज़ जोड़े गए हैं.

6. BigQuery सेट अप करना

BigQuery, उपयोगकर्ताओं के पुराने व्यवहार से जुड़े डेटा को इकट्ठा और उसका विश्लेषण करता है. इससे, बेहतर रिपोर्ट और सुझाव जनरेट किए जाते हैं.

डेटासेट बनाना

  1. Google Cloud Console में, BigQuery पर जाएं.
  2. एक्सप्लोरर पैनल में अपने प्रोजेक्ट आईडी के बगल में, तीन बिंदुओं वाले मेन्यू पर क्लिक करें. इसके बाद, डेटासेट बनाएं को चुनें.
  3. डेटासेट आईडी के लिए, ecommerce_analytics डालें.
  4. डेटा की लोकेशन के लिए, US (multiple regions) चुनें (tools.yaml कॉन्फ़िगरेशन के लिए, US लोकेशन ज़रूरी है).
  5. डेटासेट बनाएं पर क्लिक करें.

Analytics टेबल बनाना

  1. BigQuery फ़ाइल फ़ोल्डर में एक नई क्वेरी खोलें.
  2. उपयोगकर्ताओं को प्रॉडक्ट इंटरैक्शन से जोड़ने वाली समरी टेबल बनाने के लिए, यह एसक्यूएल स्टेटमेंट चलाएं:
CREATE TABLE ecommerce_analytics.user_product_interactions (
    user_id STRING DEFAULT 'any user',
    product_id STRING,
    interaction_score INT
);

Compute सेवा खाते को भूमिकाएं असाइन करना

Compute के डिफ़ॉल्ट सेवा खाते को वे भूमिकाएं दें जिनकी ज़रूरत MCP Toolbox और ऐप्लिकेशन को है:

for role in \
  roles/bigquery.dataEditor \
  roles/bigquery.jobUser \
  roles/secretmanager.secretAccessor \
  roles/alloydb.client \
  roles/serviceusage.serviceUsageConsumer \
  roles/storage.objectViewer \
  roles/aiplatform.user \
  roles/artifactregistry.writer; do
  gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
    --role="$role" \
    --condition=None
done

इसके अलावा, कंसोल में आईएएम और एडमिन > आईएएम पर जाएं. इसके बाद, ऐक्सेस दें पर क्लिक करें, सेवा खाता डालें, और वही भूमिकाएं जोड़ें.

7. ऐप्लिकेशन को शुरू से लेकर आखिर तक समझें

हर कॉम्पोनेंट एक-दूसरे के साथ कैसे काम करता है, यह जानने के लिए हम एक ई-कॉमर्स ऐप्लिकेशन बनाएंगे. इसमें कई डेटाबेस और सेवाओं का इस्तेमाल किया जाएगा. इस ऐप्लिकेशन को Python (Flask) बैकएंड के साथ बनाया गया है. इसमें Google Cloud की कई सेवाएं और डेटाबेस इंटिग्रेट किए गए हैं.

डायरेक्ट्री के स्ट्रक्चर को समझना

अगले सेक्शन में, आपको polyglot-persist-ecommerce रिपॉज़िटरी को क्लोन करना होगा. इसके बाद, ऐप्लिकेशन को स्थानीय तौर पर चलाने के लिए, इसका इस्तेमाल करना होगा. ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करने के बाद, हम MCP Toolbox और ऐप्लिकेशन, दोनों को Cloud Run पर डिप्लॉय करेंगे.

इस डायरेक्ट्री में डाउनलोड की गई फ़ाइलें देखें. यहां हाई लेवल डायरेक्ट्री दी गई हैं:

  • UploadImages: इसमें इमेज ऐसेट सेव की जाती हैं. इनका इस्तेमाल मुख्य रूप से, दस्तावेज़ों या ई-कॉमर्स प्रॉडक्ट कैटलॉग के विज़ुअल कॉन्टेंट के लिए किया जाता है.
  • static: इसमें ऐप्लिकेशन की स्टैटिक वेब ऐसेट सेव होती हैं. जैसे, सीएसएस और JavaScript फ़ाइलें. इनका इस्तेमाल, यूज़र इंटरफ़ेस को स्टाइल करने और उसे इंटरैक्टिव बनाने के लिए किया जाता है ( सोर्स).
  • templates: इसमें एचटीएमएल टेंप्लेट (जैसे, Flask के लिए Jinja2) सेव होते हैं. इनका इस्तेमाल Python ऐप्लिकेशन, ई-कॉमर्स कैटलॉग के लिए वेब पेजों को डाइनैमिक तौर पर रेंडर करने के लिए करता है ( सोर्स).

इस रिपॉज़िटरी में मौजूद फ़ाइलें, मल्टीडीबी ई-कॉमर्स ऐप्लिकेशन को बनाने, कॉन्फ़िगर करने, और डिप्लॉय करने के लिए एक साथ काम करती हैं. app.py जैसी मुख्य फ़ाइलें, SQL और JSON फ़ाइलों में तय किए गए अलग-अलग डेटा सोर्स को इंटिग्रेट करके, बैकएंड को मैनेज करती हैं. वहीं, कॉन्फ़िगरेशन फ़ाइलें यह पक्का करती हैं कि क्लाउड एनवायरमेंट में डिप्लॉयमेंट आसानी से हो:

  • app.py: Flask बैकएंड और मल्टी-डेटाबेस इंटिग्रेशन को मैनेज करता है.
  • agentengine.py: Vertex AI एजेंट को शुरू और कॉन्फ़िगर करने के लिए मुख्य लॉजिक.
  • .env: डेटाबेस और स्टोरेज कनेक्शन के लिए सीक्रेट सेव करता है.
  • tools.yaml: यह मल्टीडीबी डेटाबेस ऑपरेशन के लिए, एमसीपी टूलबॉक्स को कॉन्फ़िगर करता है.
  • Dockerfile: कंटेनर इमेज और एनवायरमेंट सेटअप के बारे में बताता है.
  • requirements.txt: इसमें ऐप्लिकेशन रनटाइम के लिए ज़रूरी Python लाइब्रेरी की सूची होती है.
  • tools.yaml: एमसीपी टूलबॉक्स के लिए कॉन्फ़िगरेशन.
  • Procfile: इससे डिप्लॉयमेंट के लिए, प्रोडक्शन को लागू करने के कमांड तय होते हैं.
  • alloydb_insert_queries.sql: इसमें रिलेशनल डेटा के लिए एसक्यूएल क्वेरी होती हैं.
  • product_details_export.json और user_interactions_export.json: NoSQL डेटाबेस के लिए JSON डेटा का सैंपल उपलब्ध कराता है.
  • README.md: यह सेटअप, डिप्लॉयमेंट, और प्रोजेक्ट को समझने में मदद करता है.

आवेदन की प्रोसेस शुरू से लेकर आखिर तक

  • AlloyDB सेटअप: बेहतर परफ़ॉर्मेंस वाला क्लस्टर बनाएं. साथ ही, इमेज एंबेडिंग के लिए वेक्टर कॉलम के साथ products_core_table बनाने के लिए, दी गई एसक्यूएल स्क्रिप्ट का इस्तेमाल करें.
  • MongoDB Atlas सेटअप: Google Cloud पर एक क्लस्टर डिप्लॉय करें, ताकि प्रॉडक्ट के अलग-अलग एट्रिब्यूट को product_details में सेव किया जा सके. साथ ही, user_interactions में रीयल-टाइम क्लिकस्ट्रीम को लॉग किया जा सके.
  • BigQuery Analytics: इंटरैक्शन लॉग को इकट्ठा करने के लिए एक डेटासेट बनाएं. इससे, जटिल विश्लेषण वाली क्वेरी को चालू किया जा सकता है. ये क्वेरी, लाखों इवेंट में से "टॉप 5" ट्रेंडिंग आइटम की पहचान करती हैं.
  • Cloud Storage रिपॉज़िटरी: हाई रिज़ॉल्यूशन वाली प्रॉडक्ट इमेज सेव करने के लिए, एक सार्वजनिक बकेट बनाएं. साथ ही, यह पक्का करें कि हर ऐसेट को फ़्रंटएंड के लिए, साइन किए गए या सार्वजनिक यूआरएल का इस्तेमाल करके ऐक्सेस किया जा सके.
  • MCP टूलबॉक्स डिप्लॉयमेंट: टूलबॉक्स को Cloud Run पर डिप्लॉय करें. इससे यह एक मुख्य RESTful ब्रिज के तौर पर काम करेगा, जो नैचुरल लैंग्वेज इंटेंट को मल्टी-डेटाबेस क्वेरी में बदलता है.
  • Tools.yaml कॉन्फ़िगरेशन: अपने "टूल" तय करें. जैसे, get_product_core_data या get_top_5_views. इससे खास SQL और NoSQL ऑपरेशन को आसान और एजेंट के लिए आसानी से पढ़े जा सकने वाले नामों से मैप किया जा सकता है.
  • Flask बैकएंड लॉजिक: app.py रूट लागू करें, जो MCP टूलबॉक्स के साथ इंटरफ़ेस करते हैं. ये रूट, डेटा वापस पाने की प्रोसेस को मैनेज करते हैं और यूआई के लिए एपीआई के तौर पर काम करते हैं.
  • मल्टी-एजेंट ऑर्केस्ट्रेशन: कोड में ADK एजेंट कॉन्फ़िगर करें, ताकि उपयोगकर्ता के मकसद को समझा जा सके. साथ ही, अलग-अलग सोर्स से मिलने वाली खुदरा कारोबार से जुड़ी मुश्किल क्वेरी को हल करने के लिए, सही "टूल" चुना जा सके.
  • फ़्रंटएंड इंटिग्रेशन: एक index.html इंटरफ़ेस बनाएं, जिसमें प्रॉडक्ट कैटलॉग के साथ-साथ इंटरैक्शन रिकॉर्ड करने की सुविधा हो. साथ ही, प्रॉडक्ट की परफ़ॉर्मेंस के आंकड़े समझने के लिए Analytics टैब और एक खास "एजेंट टैब" हो. यह टैब, ADK मल्टी-एजेंट चैट का इस्तेमाल करता है, ताकि बातचीत के ज़रिए खरीदारी का बेहतरीन अनुभव मिल सके.

अब ऑर्केस्ट्रेशन और डिप्लॉयमेंट लागू करते हैं.

8. MCP Toolbox को सेट अप करना और Cloud Run पर डिप्लॉय करना

एमसीपी टूलबॉक्स, हमारे कई डेटा सोर्स को ऐब्स्ट्रैक्ट करता है. इससे हमारा ऐप्लिकेशन, डेटा को एक जैसा फ़ेच और राइट कर पाता है.

एमसीपी टूलबॉक्स को लोकल डिवाइस पर इंस्टॉल करना

एमसीपी टूलबॉक्स बाइनरी को अपनी होम डायरेक्ट्री में डाउनलोड करें और इसे एक्ज़ीक्यूटेबल बनाएं:

export VERSION=1.15.0
curl -L -o ~/toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox
chmod +x ~/toolbox

tools.yaml को कॉन्फ़िगर करना

आपको AlloyDB, MongoDB, और BigQuery के लिए ऐब्स्ट्रैक्शन तय करने होंगे. tools.yaml फ़ाइल, एमसीपी टूलबॉक्स को बताती है कि एक-दूसरे के साथ कैसे इंटरैक्ट करना है.

  1. डेटाबेस में tools.yaml पहले से मौजूद है. इसे खोलें:
    cd ~/polyglot-persist-ecommerce
    cloudshell edit tools.yaml
    
  2. ***** प्लेसहोल्डर को अपनी वैल्यू से बदलें:

    डेटाबेस

    फ़ील्ड

    उदाहरण वैल्यू

    AlloyDB/BigQuery

    project

    YOUR_PROJECT_ID

    AlloyDB

    region

    us-central1

    AlloyDB

    cluster

    ecommerce-cluster

    AlloyDB

    instance

    ecommerce-cluster-primary

    AlloyDB

    database

    postgres

    AlloyDB

    password

    alloydb

    AlloyDB

    ipType

    public (अगर यह लाइन मौजूद नहीं है, तो इसे alloydb-source के नीचे जोड़ें)

    MongoDB

    uri

    पहले से सेव की गई कनेक्शन स्ट्रिंग

  3. इमेज की झलक को अपनी बकेट पर पॉइंट करें:
    sed -i "s/ecommerce-app-images/$BUCKET/g" tools.yaml
    

अपने टूल के यूज़र इंटरफ़ेस (यूआई) की जांच करना

  1. यूज़र इंटरफ़ेस (यूआई) दिखाने के लिए, अपने Cloud Shell टर्मिनल में टूलबॉक्स को स्थानीय तौर पर चलाएं:
    ~/toolbox --config tools.yaml --ui --enable-api
    
  2. Cloud Shell में, वेब की झलक > पोर्ट बदलें पर क्लिक करें. इसके बाद, 5000 डालें और खुलने वाले यूआरएल के आखिर में /ui जोड़ें.

आपको एमसीपी टूलबॉक्स का यह यूज़र इंटरफ़ेस (यूआई) दिखेगा:

एमसीपी टूलबॉक्स का यूज़र इंटरफ़ेस

काम पूरा होने के बाद, लोकल टूलबॉक्स को बंद करने के लिए Ctrl+C दबाएं.

Cloud Run पर डिप्लॉय करें

एमसीपी टूलबॉक्स को Cloud Run पर डिप्लॉय करें, ताकि यह एक सुरक्षित और मैनेज की जा रही सेवा के तौर पर उपलब्ध हो सके. इसका इस्तेमाल करके, हमारा ऐप्लिकेशन डेटाबेस से क्वेरी कर सकता है. हम कॉन्फ़िगरेशन को Secret Manager में सेव करेंगे, ताकि कनेक्शन की संवेदनशील जानकारी को सुरक्षित रखा जा सके.

  1. tools.yaml कॉन्फ़िगरेशन को Google Secret Manager पर अपलोड करें:
    gcloud secrets create tools --data-file=tools.yaml
    
    अगर बाद में tools.yaml में बदलाव किया जाता है, तो नया वर्शन अपलोड करें. इसके लिए:
    gcloud secrets versions add tools --data-file=tools.yaml
    
  2. सार्वजनिक एमसीपी टूलबॉक्स कंटेनर इमेज का इस्तेमाल करके डिप्लॉय करें:
    gcloud run deploy toolbox \
        --image us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION \
        --region us-central1 \
        --service-account ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
        --set-secrets "/app/tools.yaml=tools:latest" \
        --args="--config=/app/tools.yaml","--address=0.0.0.0","--port=8080","--ui","--enable-api" \
        --allow-unauthenticated
    
    --enable-api उस REST API को चालू करता है जिसका इस्तेमाल वेब ऐप्लिकेशन करता है.
  3. टूलबॉक्स का यूआरएल सेव करें:
    export TOOLBOX_URL=$(gcloud run services describe toolbox --region us-central1 --format='value(status.url)')
    echo $TOOLBOX_URL
    
    टूल देखने के लिए, अपने ब्राउज़र में $TOOLBOX_URL/ui खोलें.

9. ई-कॉमर्स ऐप्लिकेशन सेट अप करना और उसे Cloud Run पर डिप्लॉय करना

डेटाबेस चालू होने और MCP Toolbox ऐब्स्ट्रैक्शन डिप्लॉय होने के बाद, हम Flask वेब ऐप्लिकेशन चला सकते हैं!

प्रॉडक्ट कैटलॉग दिखाने के लिए, Flask ऐप्लिकेशन डेटा को प्रोसेस करता है. इसके लिए, वह यह तरीका अपनाता है:

  1. मुख्य डेटा फ़ेच करना: AlloyDB (list_products_core) से प्रॉडक्ट की पूरी सूची फ़ेच करता है.
  2. ज़्यादा जानकारी फ़ेच करना: MongoDB (list_all_product_details) से प्रॉडक्ट की पूरी जानकारी फ़ेच करता है.
  3. सूचियों को जोड़ना: दो सूचियों को जोड़ता है.
  4. मीडिया जोड़ना: हर आइटम में Cloud Storage इमेज का यूआरएल जोड़ता है.

एजेंट इंजन बनाना

  1. डिपेंडेंसी इंस्टॉल करें:
    cd ~/polyglot-persist-ecommerce
    pip install -r requirements.txt
    
    ध्यान दें: पैकेज को रिज़ॉल्व और इंस्टॉल करने में कुछ मिनट लग सकते हैं.
  2. Vertex AI Reasoning Engine का इस्तेमाल करके, एआई एजेंट को शुरू और रजिस्टर करें:
    export REASONING_ENGINE_LOCATION=us-central1
    export APP_NAME=$(python agentengine.py)
    echo $APP_NAME
    
    आउटपुट कुछ ऐसा दिखेगा:
    projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856
    

ऐप्लिकेशन, एनवायरमेंट वैरिएबल से अपनी सेटिंग पढ़ता है. इन्हें नीचे दिए गए डिप्लॉय कमांड में पास किया जाता है. इसलिए, आपको .env में बदलाव करने की ज़रूरत नहीं है.

Cloud Run पर फ़्रंटएंड डिप्लॉय करना

  1. आर्किटेक्चर को पूरा करने के लिए, वेब ऐप्लिकेशन को Cloud Run पर डिप्लॉय करें:
    gcloud run deploy polyglot --source . \
      --region us-central1 \
      --allow-unauthenticated \
      --set-env-vars="MCP_TOOLBOX_SERVER_URL=$TOOLBOX_URL,GCS_PRODUCT_BUCKET=$BUCKET,FALLBACK_IMAGE_URL=https://storage.googleapis.com/$BUCKET/fallback.jpg,GOOGLE_GENAI_USE_VERTEXAI=TRUE,PROJECT_ID=$PROJECT_ID,GOOGLE_CLOUD_LOCATION=global,REASONING_ENGINE_LOCATION=$REASONING_ENGINE_LOCATION,APP_NAME=$APP_NAME,MODEL=gemini-3.5-flash"
    

आपका ऐप्लिकेशन अब लाइव है! Multidb ई-कॉमर्स कैटलॉग देखने के लिए, Cloud Run से मिला सेवा यूआरएल खोलें. यूआरएल, https://polyglot-*********-uc.a.run.app/ जैसा होगा.

10. ऐप्लिकेशन को एक्सप्लोर करना

  1. सभी प्रॉडक्ट देखने के लिए, प्रॉडक्ट कैटलॉग पर क्लिक करें.
    प्रॉडक्ट कैटलॉग
  2. प्रॉडक्ट की जानकारी देखने के लिए, प्रॉडक्ट के आइकॉन पर क्लिक करें. आपको दिखेगा कि इमेज, Cloud Storage से ली गई हैं. प्रॉडक्ट की जानकारी, MongoDB से फ़ेच की गई है. वहीं, प्रॉडक्ट की इन्वेंट्री, AlloyDB से फ़ेच की गई है.प्रॉडक्ट के बारे में जानकारी
  3. प्रॉडक्ट कैटलॉग के साथ इंटरैक्ट करें, ताकि MongoDB को भेजे गए मॉक व्यू और राइट जनरेट किए जा सकें.
  4. प्रॉडक्ट के आंकड़े देखने के लिए, ईटीएल और आंकड़े पर क्लिक करें. आपको दिखेगा कि प्रॉडक्ट के आंकड़े, BigQuery से फ़ेच किए गए हैं.
    प्रॉडक्ट ईटीएल और Analytics
  5. एआई एजेंट से इंटरैक्ट करने के लिए, एआई एजेंट टैब पर क्लिक करें. नैचुरल लैंग्वेज में इस तरह के सवाल पूछें:
    I'm planning a high-altitude photography trip.
    Show me some weather-resistant backpacks similar in style to aero glow pro
    but without any leather components. Also, let me know if they are actually in
    stock and if other photographers have complained about the strap durability
    in the reviews.
    
    एआई एजेंट

खोज के नतीजों में वही प्रॉडक्ट दिख रहे हैं जो हमने खोजे थे. जैसे, चमड़े से न बना हुआ बैकपैक, जो स्टॉक में है और जिसकी समीक्षाओं में स्ट्रैप की मज़बूती को लेकर कोई शिकायत नहीं है.

एआई एजेंट

11. व्यवस्थित करें

अपने Google Cloud खाते पर लगातार लगने वाले शुल्कों से बचने के लिए, इस कोडलैब के दौरान बनाए गए संसाधनों को मिटाएं.

Cloud Shell के ये कमांड चलाएं:

gcloud run services delete toolbox --region us-central1 --quiet
gcloud run services delete polyglot --region us-central1 --quiet
gcloud secrets delete tools --quiet
bq rm -r -f -d $PROJECT_ID:ecommerce_analytics
gcloud storage rm --recursive gs://$BUCKET
gcloud alloydb clusters delete ecommerce-cluster --region us-central1 --force --quiet

इसके अलावा, एजेंट इंजन इंस्टेंस को मिटाया जा सकता है:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://us-central1-aiplatform.googleapis.com/v1/$APP_NAME?force=true"

इसके अलावा, Google Cloud Console में Vertex AI > Agent Engine पर जाकर, इंस्टेंस को मिटाया जा सकता है.

पूरे Google Cloud प्रोजेक्ट और उसके सभी संसाधनों को मिटाने के लिए, यह कमांड चलाएं:

gcloud projects delete $PROJECT_ID

12. बधाई हो

बधाई हो! आपने क्रॉस-क्लाउड मल्टीडीबी आर्किटेक्चर बना लिया है.

आपने दिखाया कि एमसीपी टूलबॉक्स, आधुनिक और खास ऐप्लिकेशन के लिए आर्किटेक्चरल ग्लू के तौर पर कैसे काम करता है. टास्क के हिसाब से सही डेटाबेस चुनने पर, आपको ये फ़ायदे मिले:

  • फ़्लेक्सिबल डेटा राइट्स: गतिविधियों के ब्यौरे के लिए MongoDB.
  • ट्रांज़ैक्शनल कंसिस्टेंसी: AlloyDB, डेटा की सुरक्षा और विश्वसनीयता को बनाए रखता है.
  • बेहतरीन परफ़ॉर्मेंस वाला Analytics: बिज़नेस इंटेलिजेंस के लिए BigQuery.
  • यूनिफ़ाइड डेवलपमेंट: एक Python बैकएंड, जो MCP टूलबॉक्स का इस्तेमाल करके सभी जटिलताओं को दूर करता है.

रेफ़रंस के लिए दस्तावेज़

Google Cloud के मिलते-जुलते प्रॉडक्ट के बारे में ज़्यादा जानें और इन कोडलैब को एक्सप्लोर करें:

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