1. खास जानकारी
मास्टर डेटा मैनेजमेंट क्या है?
मास्टर डेटा मैनेजमेंट (एमडीएम) का मतलब है कि आपके संगठन के सबसे ज़रूरी डेटा के लिए, भरोसेमंद सोर्स ऑफ़ ट्रुथ बनाना. कल्पना करें कि एक लाइब्रेरी है, जिसमें हर किताब (डेटा पॉइंट) को सही तरीके से लेबल किया गया है. साथ ही, वह अप-टू-डेट है और उसे आसानी से ढूंढा जा सकता है.
मास्टर डेटा, कारोबार की मुख्य और बुनियादी इकाइयों को दिखाता है. ये इकाइयां, कंपनी के कामकाज के लिए ज़रूरी होती हैं. मास्टर डेटा के मुख्य एलिमेंट यहां दिए गए हैं:
- कारोबार से जुड़ी इकाइयां: ऐसी इकाइयां जिनके इर्द-गिर्द आपका कारोबार घूमता है. जैसे, ग्राहक, प्रॉडक्ट, सप्लायर, जगहें, और कर्मचारी. ये सभी संज्ञाएं हैं
- आइडेंटिफ़ायर: यूनीक आइडेंटिफ़ायर. इनसे यह पक्का किया जाता है कि हर इकाई अलग हो और सभी सिस्टम में उसे ट्रैक किया जा सके
- एट्रिब्यूट: ये ऐसी विशेषताएं होती हैं जिनसे हर इकाई के बारे में जानकारी मिलती है. उदाहरण के लिए, किसी ग्राहक का पता, किसी प्रॉडक्ट की कीमत वगैरह.
मास्टर डेटा को बेहतर तरीके से समझने के लिए, आइए इसकी तुलना लेन-देन के डेटा से करते हैं. लेन-देन से जुड़े डेटा में, अलग-अलग इवेंट (खरीदारी, शिपमेंट वगैरह) कैप्चर किए जाते हैं. वहीं, मास्टर डेटा से उन इवेंट के बारे में जानकारी मिलती है. इसके लिए, इसमें शामिल इकाइयों के बारे में बताया जाता है. उदाहरण के लिए, बिक्री से जुड़ा लेन-देन, ग्राहक, प्रॉडक्ट, और सेल्सपर्सन के मास्टर डेटा से लिंक होता है.
रणनीतिक फ़ैसले लेने के लिए, मज़बूत एमडीएम को लागू करना ज़रूरी है. हालांकि, यह मुश्किल और संसाधन-गहन हो सकता है. यहाँ जनरेटिव एआई की अहम भूमिका होती है. ख़ास तौर पर, Gemini 1.0 Pro, Gemini 1.0 Pro Vision, और Gemini 1.5 Pro जैसे मॉडल का इस्तेमाल किया जाता है.
2. मकसद
इस कोडलैब में, आपको यह दिखाया जाएगा कि BigQuery के सार्वजनिक डेटासेट में उपलब्ध citibike_stations डेटा के लिए, Gemini 1.0 Pro, मास्टर डेटा मैनेजमेंट ऐप्लिकेशन को कैसे आसान बनाता है. जैसे, डेटा को बेहतर बनाना और डुप्लीकेट डेटा हटाना.
इस्तेमाल की जाने वाली सुविधाएं
- BigQuery का सार्वजनिक डेटासेट
bigquery-public-data.new_york_citibike. - Gemini का फ़ंक्शन कॉलिंग फ़ीचर (यह एक Java Cloud फ़ंक्शन है. यह citibike_stations डेटा के साथ उपलब्ध निर्देशांकों के लिए, Reverse Geocoding API का इस्तेमाल करके पते की जानकारी हासिल करता है).
- डुप्लीकेट की पहचान करने के लिए, BigQuery में Vertex AI Embeddings API और Vector Search का इस्तेमाल किया जाता है.
आपको क्या बनाना है
- आपको इस्तेमाल के उदाहरण के लिए, एक BigQuery डेटासेट बनाना होगा. इस डेटासेट में, आपको सार्वजनिक डेटासेट टेबल
bigquery-public-data.new_york_citibike.citibike_stationsसे मिले डेटा की मदद से एक लैंडिंग टेबल बनानी होगी. - आपको Cloud फ़ंक्शन को डिप्लॉय करना होगा. इसमें पते को स्टैंडर्ड फ़ॉर्मैट में बदलने के लिए, Gemini की फ़ंक्शन कॉलिंग की सुविधा शामिल है.
- आपको बेहतर बनाए गए पते के डेटा को लैंडिंग टेबल में सेव करना होगा. ये टेबल, इस डेमो के लिए उपलब्ध कराए गए दो सोर्स से मिली हैं.
- आपको पते के डेटा पर, BigQuery से Vertex AI Embeddings API को कॉल करना होगा.
- डुप्लीकेट रिकॉर्ड की पहचान करने के लिए, BigQuery वेक्टर सर्च का इस्तेमाल किया जाएगा.
इस डायग्राम में, डेटा के फ़्लो और इसे लागू करने के चरणों के बारे में बताया गया है.

3. ज़रूरी शर्तें
4. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें .
- आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें bq पहले से लोड होता है. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.

- Cloud Shell से कनेक्ट होने के बाद, यह देखने के लिए कि आपकी पुष्टि हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट किया गया है, इस कमांड का इस्तेमाल करें:
gcloud auth list
- यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं.
gcloud config list project
- अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
- एपीआई चालू करने के लिए, Gemini for Google Cloud Marketplace पर जाएं. Cloud Shell टर्मिनल में, इस कमांड का भी इस्तेमाल किया जा सकता है:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- पक्का करें कि BigQuery, BigQuery Connection, Cloud Functions, Cloud Run, Vertex AI, और Cloud Build API चालू हों. gcloud कमांड के बजाय, कंसोल का इस्तेमाल करके भी यह काम किया जा सकता है. इसके लिए, इस लिंक पर जाएं.
gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.
5. BigQuery डेटासेट और बाहरी कनेक्शन बनाना
सबसे पहले, डेटासेट और क्लाउड रिसॉर्स कनेक्शन बनाते हैं.
BigQuery में डेटासेट, आपके ऐप्लिकेशन की सभी टेबल और ऑब्जेक्ट के लिए एक कंटेनर होता है.
डेटासेट बनाने के लिए, यह तरीका अपनाएं:
- Google Cloud Console में BigQuery पेज पर जाएं.
- एक्सप्लोरर पैनल में, वह प्रोजेक्ट चुनें जिसमें आपको डेटासेट बनाना है.
- कार्रवाइयां विकल्प (वर्टिकल तीन बिंदु वाला आइकॉन) को बड़ा करें. इसके बाद, डेटासेट बनाएं पर क्लिक करें.

- डेटासेट आईडी फ़ील्ड में
mdm_geminiडालें. - जगह के टाइप को
Multi-regionके तौर पर सेट करें और डिफ़ॉल्ट वैल्यू स्वीकार करें. डिफ़ॉल्ट वैल्यूUS(multiple regions in United States.होती है - डेटासेट बनाएं पर क्लिक करें.
- देखें कि डेटासेट बन गया हो और एक्सप्लोरर पैनल में आपके प्रोजेक्ट आईडी के नीचे दिख रहा हो.
Cloud फ़ंक्शन के साथ इंटरैक्ट करने के लिए, BigQuery कनेक्शन की ज़रूरत होती है. रिमोट फ़ंक्शन बनाने के लिए, आपको BigQuery कनेक्शन बनाना होगा. इस कोडलैब में, हम BigLake कनेक्शन का इस्तेमाल करके, Cloud Functions के ज़रिए BigQuery से मॉडल को ऐक्सेस करेंगे. BigLake कनेक्शन की मदद से, बाहरी डेटा सोर्स को कनेक्ट किया जा सकता है. साथ ही, BigQuery के फ़ाइन-ग्रेन्ड ऐक्सेस कंट्रोल और सुरक्षा को बनाए रखा जा सकता है. हमारे मामले में, यह Vertex AI Gemini Pro API है.
BigLake कनेक्शन बनाने के लिए, यह तरीका अपनाएं:
- BigQuery पेज के एक्सप्लोरर पैनल में, जोड़ें पर क्लिक करें.

- बाहरी डेटा सोर्स से कनेक्शन पर क्लिक करें.
- कनेक्शन टाइप की सूची में, Vertex AI रिमोट मॉडल, रिमोट फ़ंक्शन, और BigLake (क्लाउड रिसॉर्स) चुनें.
- कनेक्शन आईडी फ़ील्ड में, कनेक्शन का नाम
gemini-bq-connके तौर पर डालें. - जगह के टाइप को
Multi-regionके तौर पर सेट करें और डिफ़ॉल्ट वैल्यू स्वीकार करें. डिफ़ॉल्ट वैल्यूUS(multiple regions in United States.होती है - कनेक्शन बनाएं पर क्लिक करें.
- कनेक्शन पर जाएं पर क्लिक करें. इसके बाद, कनेक्शन की जानकारी वाले पैनल में, सेवा खाते का आईडी कॉपी करें.

- आईएएम और एडमिन पेज पर जाएं और ऐक्सेस दें पर क्लिक करें.
- सेवा खाते के आईडी को नए प्रिंसिपल फ़ील्ड में चिपकाएं.
- भूमिका की सूची से
Vertex AI userभूमिका चुनें. इसके बाद, सेव करें पर क्लिक करें.

आपने अब डेटासेट और BigQuery कनेक्शन बना लिया है.
6. Gemini की फ़ंक्शन कॉल करने की सुविधा (Java Cloud Function) डिप्लॉय करना
Gemini की फ़ंक्शन कॉलिंग की सुविधा के साथ Java Cloud Function को डिप्लॉय करने के लिए, यह तरीका अपनाएं.
- नीचे दिए गए निर्देश का इस्तेमाल करके, अपने Cloud Shell टर्मिनल से github repository को क्लोन करें:
git clone https://github.com/AbiramiSukumaran/GeminiFunctionCalling
- प्लेसहोल्डर
YOUR_API_KEYऔरYOUR_PROJECT_IDको अपनी वैल्यू से बदलें.
अगर आपने यहां दिया गया ब्लॉग पढ़ा है, तो आपको पता चलेगा कि फ़ंक्शन कॉलिंग की सुविधा, Reverse Geocoding API का इस्तेमाल करती है. यहां दिए गए निर्देशों का पालन करके, अपना API_KEY बनाया जा सकता है.
- Cloud Shell टर्मिनल में, नई क्लोन की गई प्रोजेक्ट डायरेक्ट्री GeminiFunctionCalling पर जाएं. इसके बाद, Cloud Function को बनाने और डिप्लॉय करने के लिए, यह स्टेटमेंट चलाएं:
gcloud functions deploy gemini-fn-calling --gen2 --region=us-central1 --runtime=java11 --source=. --entry-point=cloudcode.helloworld.HelloWorld --trigger-http
"Allow unauthenticated invocations" सवाल पूछे जाने पर, "y" बोलें. हमारा सुझाव है कि आप अपने एंटरप्राइज़ ऐप्लिकेशन के लिए पुष्टि करने की सुविधा सेट अप करें. हालांकि, यह एक डेमो ऐप्लिकेशन है. इसलिए, हम बिना पुष्टि किए आगे बढ़ेंगे.
आउटपुट, इस फ़ॉर्मैट में एक REST यूआरएल होता है:
https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling
- इस Cloud फ़ंक्शन को टेस्ट करने के लिए, टर्मिनल में यह कमांड चलाएं:
gcloud functions call gemini-fn-calling --region=us-central1 --gen2 --data '{"calls":[["40.714224,-73.961452"]]}'
रैंडम सैंपल के प्रॉम्प्ट का जवाब:
'{"replies":["{ \"DOOR_NUMBER\": \"277\", \"STREET_ADDRESS\": \"Bedford Ave\", \"AREA\":
null, \"CITY\": \"Brooklyn\", \"TOWN\": null, \"COUNTY\": \"Kings County\", \"STATE\":
\"NY\", \"COUNTRY\": \"USA\", \"ZIPCODE\": \"11211\", \"LANDMARK\": null}}```"]}'
इस Cloud Function के अनुरोध और जवाब के पैरामीटर, BigQuery के रिमोट फ़ंक्शन इनवोकेशन के साथ काम करने वाले तरीके से लागू किए जाते हैं. इसे सीधे तौर पर BigQuery डेटा से इस्तेमाल किया जा सकता है. इसका मतलब है कि अगर आपका डेटा इनपुट (अक्षांश और देशांतर का डेटा) BigQuery में है, तो डेटा पर रिमोट फ़ंक्शन को कॉल किया जा सकता है. साथ ही, फ़ंक्शन का जवाब पाया जा सकता है. इस जवाब को सीधे तौर पर BigQuery में सेव या प्रोसेस किया जा सकता है.
- इस डिप्लॉय किए गए Cloud फ़ंक्शन को चालू करने वाला रिमोट फ़ंक्शन बनाने के लिए, BigQuery से यह DDL चलाएं:
CREATE OR REPLACE FUNCTION
`mdm_gemini.MDM_GEMINI` (latlng STRING) RETURNS STRING
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (
endpoint = 'https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling', max_batching_rows = 1
);
बनाए गए नए रिमोट फ़ंक्शन का इस्तेमाल करने के लिए, टेस्ट क्वेरी:
SELECT mdm_gemini.MDM_GEMINI(latlong) from mdm_gemini.CITIBIKE_STATIONS limit 1;
अगर BigQuery में बनाए गए नए रिमोट फ़ंक्शन का इस्तेमाल करने वाली टेस्ट क्वेरी, Cloud Functions की अनुमतियों से जुड़ी समस्या की वजह से काम नहीं करती है, तो Google Cloud Console से Cloud Functions पर जाएं. इसके बाद, "gemini-fn-calling" नाम का डिप्लॉय किया गया Cloud Function ढूंढें. अनुमतियां टैब पर जाएं. प्रिंसिपल के तौर पर "allUsers" जोड़ें और "Cloud Functions Invoker" की भूमिका असाइन करें, ताकि यह पक्का किया जा सके कि Cloud Functions को सभी उपयोगकर्ता ऐक्सेस कर सकें. ऐसा सिर्फ़ इसलिए किया जा रहा है, क्योंकि यह एक डेमो ऐप्लिकेशन है.
7. समस्या हल करने का तरीका आज़माएं
अगर आपके पास रिवर्स जियोकोडिंग फ़ंक्शन को कॉल करने के लिए ज़रूरी API_KEY नहीं है या किसी वजह से Cloud Function डिप्लॉय नहीं किया गया है, तो इसके विकल्प के तौर पर यह तरीका आज़माया जा सकता है:
- डेटाबेस से CITIBIKE_STATIONS.csv फ़ाइल को अपने Cloud Shell प्रोजेक्ट फ़ोल्डर में डाउनलोड करें और उस फ़ोल्डर में जाएं.
- Cloud Shell टर्मिनल में, यहां दिया गया निर्देश इस्तेमाल करके, csv फ़ाइल से डेटा को अपने नए BigQuery डेटासेट
mdm_geminiमें एक्सपोर्ट करें:
bq load --source_format=CSV --skip_leading_rows=1 mdm_gemini.CITIBIKE_STATIONS ./CITIBIKE_STATIONS.csv \ name:string,latlng:string,capacity:numeric,num_bikes_available:numeric,num_docks_available:numeric,last_reported:timestamp,full_address_string:string
8. टेबल बनाना और पते के डेटा को बेहतर बनाना
पहला चरण: टेबल बनाना
अहम जानकारी: अगर आपने वर्कअराउंड का इस्तेमाल किया है, तो इस चरण को छोड़ दें. ऐसा इसलिए, क्योंकि आपने पहले ही टेबल बना ली होगी.
अगर आपने वर्कअराउंड का इस्तेमाल नहीं किया है, तो BigQuery एसक्यूएल एडिटर में यह DDL चलाएं:
CREATE TABLE mdm_gemini.CITIBIKE_STATIONS as (
select name, latitude || ',' || longitude as latlong, capacity, num_bikes_available, num_docks_available,last_reported,
'' as full_address_string
from bigquery-public-data.new_york_citibike.citibike_stations) ;
अब टेबल में मौजूद अक्षांश और देशांतर के निर्देशांकों पर रिमोट फ़ंक्शन लागू करके, पते के डेटा को बेहतर बनाते हैं. डेटा के लिए ये शर्तें सेट करें:
- साल 2024 में शिकायत की गई
- उपलब्ध साइकल की संख्या > 0
- कपैसिटी > 100
यह क्वेरी चलाएं:
update `mdm_gemini.CITIBIKE_STATIONS`
set full_address_string = `mdm_gemini.MDM_GEMINI`(latlong)
where EXTRACT(YEAR FROM last_reported) = 2024 and num_bikes_available > 0 and capacity > 100;
दूसरा चरण: बाइक स्टेशन की जगह की जानकारी के डेटा के लिए दूसरा सोर्स बनाना
अगर आपने टेबल बनाने के लिए, किसी अन्य तरीके का इस्तेमाल किया है, तब भी इस चरण को न छोड़ें.
इस चरण में, आपको इस कोडलैब के लिए, बाइक स्टेशन की जगह की जानकारी का दूसरा सोर्स बनाना होगा. इससे यह पता चलता है कि एमडीएम, कई सोर्स से डेटा इकट्ठा करके एक साथ लाता है और सबसे सटीक जानकारी की पहचान करता है.
BigQuery SQL एडिटर में, यहां दिए गए DDL चलाएं. इससे, लोकेशन डेटा का दूसरा सोर्स बनाया जा सकेगा. इसमें दो रिकॉर्ड होंगे. आइए, इस टेबल का नाम mdm_gemini.CITIBIKE_STATIONS_SOURCE2 रखते हैं और इसमें दो रिकॉर्ड डालते हैं.
CREATE TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE2 (name STRING(55), address STRING(1000), embeddings_src ARRAY<FLOAT64>);
insert into mdm_gemini.CITIBIKE_STATIONS_SOURCE2 VALUES ('Location broadway and 29','{ "DOOR_NUMBER": "1593", "STREET_ADDRESS": "Broadway", "AREA": null, "CITY": "New York", "TOWN": null, "COUNTY": "New York County", "STATE": "NY", "COUNTRY": "USA", "ZIPCODE": "10019", "LANDMARK": null}', null);
insert into mdm_gemini.CITIBIKE_STATIONS_SOURCE2 VALUES ('Allen St & Hester','{ "DOOR_NUMBER": "36", "STREET_ADDRESS": "Allen St", "AREA": null, "CITY": "New York", "TOWN": null, "COUNTY": "New York County", "STATE": "NY", "COUNTRY": "USA", "ZIPCODE": "10002", "LANDMARK": null}', null);
9. पते के डेटा के लिए एम्बेडिंग जनरेट करना
एम्बेडिंग, ज़्यादा डाइमेंशन वाले संख्यात्मक वेक्टर होते हैं. ये किसी इकाई को दिखाते हैं. जैसे, कोई टेक्स्ट या ऑडियो फ़ाइल. मशीन लर्निंग (एमएल) मॉडल, इस तरह की इकाइयों के बारे में सिमैंटिक्स को एन्कोड करने के लिए एम्बेडिंग का इस्तेमाल करते हैं, ताकि उनके बारे में तर्क देना और उनकी तुलना करना आसान हो सके. उदाहरण के लिए, क्लस्टरिंग, क्लासिफ़िकेशन, और सुझाव देने वाले मॉडल में, एम्बेडिंग स्पेस में मौजूद वेक्टर के बीच की दूरी को मापना एक सामान्य ऑपरेशन है. इससे, सिमैंटिक तौर पर सबसे मिलते-जुलते आइटम का पता लगाया जा सकता है. Vertex AI का Text Embeddings API, Vertex AI पर जनरेटिव एआई का इस्तेमाल करके टेक्स्ट एम्बेडिंग बनाने की सुविधा देता है. टेक्स्ट एम्बेडिंग, टेक्स्ट को संख्या के तौर पर दिखाने का तरीका है. इससे शब्दों और वाक्यांशों के बीच के संबंध का पता चलता है. Vertex AI Text Embeddings के बारे में ज़्यादा जानने के लिए, यहां क्लिक करें.
- Vertex AI Text Embeddings API के लिए रिमोट मॉडल बनाने के लिए, नीचे दिया गया डीडीएल चलाएं:
CREATE OR REPLACE MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (ENDPOINT = 'textembedding-gecko@latest');
- अब रिमोट एम्बेडिंग मॉडल तैयार है. आइए, पहली सोर्स फ़ाइल के लिए एम्बेडिंग जनरेट करें और उसे इस क्वेरी का इस्तेमाल करके टेबल में सेव करें:
CREATE TABLE `mdm_gemini.CITIBIKE_STATIONS_SOURCE1` AS (
SELECT *
FROM ML.GENERATE_EMBEDDING(
MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`,
( select name, full_address_string as content from `mdm_gemini.CITIBIKE_STATIONS`
where full_address_string is not null )
)
);
नई टेबल बनाने के बजाय, एम्बेडिंग के नतीजे वाले फ़ील्ड को उसी mdm_gemini.CITIBIKE_STATIONS टेबल में सेव किया जा सकता है जिसे आपने पहले बनाया था.
- टेबल CITIBIKE_STATIONS_SOURCE2 में मौजूद पते के डेटा के लिए एम्बेडिंग जनरेट करने के लिए,यह क्वेरी चलाएं:
update `mdm_gemini.CITIBIKE_STATIONS_SOURCE2` a set embeddings_src =
(
SELECT ml_generate_embedding_result
FROM ML.GENERATE_EMBEDDING(
MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`,
( select name, address as content from `mdm_gemini.CITIBIKE_STATIONS_SOURCE2` ))
where name = a.name) where name is not null;
इससे दूसरे सोर्स के लिए एम्बेडिंग बननी चाहिए. ध्यान दें कि हमने एम्बेडिंग फ़ील्ड को उसी टेबल CITIBIKE_STATIONS_SOURCE2 में बनाया है.
- सोर्स डेटा टेबल 1 और 2 के लिए जनरेट किए गए एम्बेडिंग को विज़ुअलाइज़ करने के लिए, यह क्वेरी चलाएं:
select name,address,embeddings_src from `mdm_gemini.CITIBIKE_STATIONS_SOURCE2`;
select name,content,ml_generate_embedding_result from `mdm_gemini.CITIBIKE_STATIONS_SOURCE1`;
अब डुप्लीकेट की पहचान करने के लिए, वेक्टर सर्च करते हैं.
10. डुप्लीकेट पतों का पता लगाने के लिए, वेक्टर सर्च की सुविधा का इस्तेमाल करना
इस चरण में, आपको mdm_gemini.CITIBIKE_STATIONS_SOURCE1 टेबल के ml_generate_embedding_result कॉलम में मौजूद पते के एम्बेडिंग में से, टॉप दो एम्बेडिंग ढूंढने होंगे. ये एम्बेडिंग, mdm_gemini.CITIBIKE_STATIONS_SOURCE2 टेबल के embeddings_src कॉलम में मौजूद डेटा की हर लाइन से मेल खाने चाहिए.
इसके लिए, यह क्वेरी चलाएं:
select query.name name1,base.name name2,
/* (select address from mdm_gemini.CITIBIKE_STATIONS_SOURCE2 where name = query.name) content1, base.content content2, */
distance
from VECTOR_SEARCH(
TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE1,
'ml_generate_embedding_result',
(SELECT * FROM mdm_gemini.CITIBIKE_STATIONS_SOURCE2),
'embeddings_src',
top_k => 2
) where query.name <> base.name
order by distance desc;
वह टेबल जिससे हम क्वेरी कर रहे हैं: mdm_gemini.CITIBIKE_STATIONS_SOURCE1 फ़ील्ड परml_generate_embedding_result
वह टेबल जिसका इस्तेमाल हम बेस टेबल के तौर पर करते हैं: mdm_gemini.CITIBIKE_STATIONS_SOURCE2, embeddings_src फ़ील्ड पर
top_k: इससे, सबसे मिलते-जुलते आइटम की संख्या तय की जाती है. डिफ़ॉल्ट रूप से, यह वैल्यू 10 पर सेट होती है. नेगेटिव वैल्यू को इनफ़िनिटी माना जाता है. इसका मतलब है कि सभी वैल्यू को आस-पास की वैल्यू माना जाता है और उन्हें दिखाया जाता है.
distance_type: यह दो वेक्टर के बीच की दूरी का हिसाब लगाने के लिए, इस्तेमाल की जाने वाली मेट्रिक का टाइप तय करता है. यूक्लिडियन और कोसाइन दूरी के टाइप इस्तेमाल किए जा सकते हैं. डिफ़ॉल्ट रूप से, यह यूक्लिडियन पर सेट होता है.
क्वेरी का नतीजा यह है:

जैसा कि आप देख सकते हैं, इसमें CITIBIKE_STATIONS_SOURCE1 से CITIBIKE_STATIONS_SOURCE2 में मौजूद दो लाइनों के लिए, दो सबसे नज़दीकी डुप्लीकेट (दूसरे शब्दों में, सबसे मिलते-जुलते डुप्लीकेट) दिखाए गए हैं. distance_type के बारे में कोई जानकारी नहीं दी गई है. इसलिए, यह मान लिया जाता है कि यह यूक्लिडियन है. साथ ही, दूरी को दो सोर्स के बीच पते की टेक्स्ट वैल्यू में मौजूद दूरी के तौर पर पढ़ा जाता है. सबसे कम दूरी वाले पते के टेक्स्ट सबसे मिलते-जुलते होते हैं.
यहां दी गई क्वेरी का इस्तेमाल करके, distance_type को Cosine पर सेट करते हैं:
select query.name name1,base.name name2,
/* (select address from mdm_gemini.CITIBIKE_STATIONS_SOURCE2 where name = query.name) content1, base.content content2, */
distance
from VECTOR_SEARCH(
TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE1,
'ml_generate_embedding_result',
(SELECT * FROM mdm_gemini.CITIBIKE_STATIONS_SOURCE2),
'embeddings_src',
top_k => 2,distance_type => 'COSINE'
) where query.name <> base.name
order by distance desc;
क्वेरी का नतीजा यह है:

दोनों क्वेरी (दूरी के दोनों टाइप) को दूरी के हिसाब से घटते क्रम में लगाया गया है. इसका मतलब है कि हमें नतीजों को दूरी के घटते क्रम में दिखाना है. हालांकि, आपको दिखेगा कि दूसरी क्वेरी के लिए दूरी के हिसाब से क्रम उलट गया है. क्या आपको पता है कि ऐसा क्यों होता है?
हां!! आपने सही पहचाना! कोसाइन सिमिलैरिटी में, ज़्यादा संख्या का मतलब है कि दो आइटम के बीच समानता ज़्यादा है और दूरी कम है. इयूक्लिडीन दूरी में, बड़ी संख्या का मतलब है कि वैल्यू के बीच की दूरी ज़्यादा है.
एमडीएम को समझने और यूक्लिडियन और कोसाइन के बीच के अंतर और उनके इस्तेमाल के बारे में सुझाव पाने के लिए, ब्लॉग पढ़ें.
11. व्यवस्थित करें
इस पोस्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
- अगर आपको अपना प्रोजेक्ट बनाए रखना है, तो ऊपर दिए गए चरणों को छोड़ दें. इसके बाद, Cloud Functions पर जाकर Cloud Function मिटाएं. इसके लिए, फ़ंक्शन की सूची में से उस फ़ंक्शन को चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
12. बधाई हो
बधाई हो! आपने Gemini 1.0 Pro और फ़ंक्शन कॉलिंग का इस्तेमाल करके, एमडीएम की कुछ गतिविधियों को आसान और असरदार बनाने का तरीका दिखाया है. साथ ही, आपने जनरेटिव एआई की भरोसेमंद और सटीक क्षमताओं के बारे में बताया है. अब आपको इसके बारे में पता चल गया है. इसलिए, इस सुविधा को लागू करने के अन्य तरीकों या एमडीएम की अन्य सुविधाओं का इस्तेमाल करें. क्या आपके पास ऐसे डेटासेट हैं जिनकी पुष्टि की जा सकती है? क्या आपके पास ऐसी जानकारी है जिसे जनरेटिव एआई के जवाबों में शामिल किया जा सकता है? क्या आपके पास ऐसे टास्क हैं जिन्हें जनरेटिव एआई के जवाबों में शामिल किए गए स्ट्रक्चर्ड कॉल की मदद से अपने-आप पूरा किया जा सकता है? ज़्यादा जानकारी के लिए, Vertex AI, BigQuery के रिमोट फ़ंक्शन, Cloud Functions, एम्बेडिंग, और वेक्टर सर्च के दस्तावेज़ देखें. इस प्रोजेक्ट के लिए, GitHub repo यहां दिया गया है. हमें बताएं कि आपने इस लर्निंग का इस्तेमाल करके क्या बनाया!