1. खास जानकारी
मास्टर डेटा मैनेजमेंट क्या है?
मास्टर डेटा मैनेजमेंट (एमडीएम) का इस्तेमाल करके, अपने संगठन के सबसे ज़रूरी डेटा के लिए एक भरोसेमंद सोर्स बनाया जा सकता है. सोचिए, एक ऐसी लाइब्रेरी है जिसमें बारीकी से व्यवस्थित की गई एक लाइब्रेरी है. इसमें हर किताब (डेटा पॉइंट) को सही तरीके से लेबल किया गया है, वह अप-टू-डेट है, और उसे ढूंढना आसान है.
मास्टर डेटा उन मुख्य और बुनियादी कारोबारी इकाइयों के बारे में बताता है जो किसी कंपनी के ऑपरेशन के लिए ज़रूरी हैं. यहां मास्टर डेटा के मुख्य एलिमेंट दिए गए हैं:
- कारोबारी इकाइयां: ग्राहक, प्रॉडक्ट, सप्लायर, जगह, और कर्मचारी जैसी इकाइयां, जो आपके कारोबार के बारे में बताने वाली संज्ञा हैं
- आइडेंटिफ़ायर: ऐसे यूनीक आइडेंटिफ़ायर जिनसे यह पक्का होता है कि हर इकाई अलग है और सभी सिस्टम में उसका पता लगाया जा सकता है
- एट्रिब्यूट: हर इकाई के बारे में बताने वाली विशेषताएं, जैसे कि खरीदार का पता, प्रॉडक्ट की कीमत वगैरह.
मास्टर डेटा को बेहतर ढंग से समझने में आपकी मदद करने के लिए, आइए इसकी तुलना लेन-देन से जुड़े डेटा से करें. लेन-देन से जुड़े डेटा में अलग-अलग इवेंट, जैसे कि खरीदारी, शिपमेंट वगैरह को कैप्चर किया जाता है. वहीं, मास्टर डेटा शामिल इकाइयों को तय करके उन इवेंट के लिए संदर्भ देता है. उदाहरण के लिए, सेल्स ट्रांज़ैक्शन ग्राहक, प्रॉडक्ट, और सेल्सपर्सन के लिए मास्टर डेटा से लिंक होता है.
रणनीतिक फ़ैसले लेने के लिए मज़बूत एमडीएम को लागू करना ज़रूरी है, लेकिन यह जटिल और संसाधन की ज़रूरत वाला काम हो सकता है. ऐसे में, जनरेटिव एआई की बेहतरीन सुविधाओं का इस्तेमाल, Gemini 1.0 Pro, Gemini 1.0 Pro Vision, और Gemini 1.5 Pro जैसे मॉडल के लिए किया जाता है.
2. मकसद
इस कोडलैब में बताया गया है कि Gemini 1.0 Pro, BigQuery के सार्वजनिक डेटासेट में उपलब्ध citibike_stations डेटा के लिए, डेटा को बेहतर बनाने और डुप्लीकेट कॉपी हटाने जैसे मास्टर डेटा मैनेजमेंट ऐप्लिकेशन को कैसे आसान बनाता है.
आपको इन चीज़ों का इस्तेमाल करना होगा
- BigQuery का सार्वजनिक डेटासेट
bigquery-public-data.new_york_citibike
. - Gemini Function कॉलिंग (यह Java क्लाउड फ़ंक्शन है. यह रिवर्स Geocoding API का इस्तेमाल करके पते की जानकारी हासिल करता है. यह जानकारी, citibike_stations डेटा के साथ उपलब्ध निर्देशांकों के लिए इस्तेमाल की जाती है.
- डुप्लीकेट की पहचान करने के लिए BigQuery में Vertex AI Embeddings API और वेक्टर सर्च की सुविधा.
आपको क्या बनाना होगा
- इस्तेमाल के उदाहरण के लिए, आपको एक BigQuery डेटासेट बनाना होगा. इस डेटासेट में, सार्वजनिक डेटासेट टेबल
bigquery-public-data.new_york_citibike.citibike_stations
के डेटा के साथ एक लैंडिंग टेबल बनाई जाएगी. - ऐसे में, आपको अपने हिसाब से क्लाउड फ़ंक्शन इस्तेमाल करने होंगे. इनमें Gemini फ़ंक्शन कॉलिंग की सुविधा भी शामिल है.
- बेहतर पते का डेटा, लैंडिंग टेबल में स्टोर किया जाएगा. इस डेटा को दिखाने के लिए दिए गए दो सोर्स से लिया गया है.
- पते के डेटा पर, BigQuery से Vertex AI Embeddings API चालू किया जाएगा.
- डुप्लीकेट रिकॉर्ड की पहचान करने के लिए आप BigQuery वेक्टर खोज का इस्तेमाल करेंगे.
नीचे दिए गए डायग्राम में, डेटा के फ़्लो और उसे लागू करने के तरीके को दिखाया गया है.
3. ज़रूरी शर्तें
4. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट सिलेक्टर पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें .
- आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला एक कमांड-लाइन एनवायरमेंट है. यह पहले से लोड होकर, Google Cloud में आता है. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell को चालू करें पर क्लिक करें.
- Cloud Shell से कनेक्ट करने के बाद, यह जांच लें कि आपकी पुष्टि पहले ही हो चुकी है. साथ ही, यह देखें कि प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल किया गया हो:
gcloud auth list
- Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud कमांड को आपके प्रोजेक्ट के बारे में जानकारी है.
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 कनेक्शन, Cloud Function, Cloud Run, Vertex AI, और Cloud Build API चालू हैं या नहीं. gcloud कमांड का विकल्प इस लिंक की मदद से कंसोल के ज़रिए उपलब्ध कराया जाता है.
gcloud के लिए कमांड और इसके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.
5. BigQuery डेटासेट और बाहरी कनेक्शन बनाना
सबसे पहले, डेटासेट और क्लाउड रिसॉर्स कनेक्शन बनाएं.
BigQuery में मौजूद डेटासेट, आपके ऐप्लिकेशन की सभी टेबल और ऑब्जेक्ट के लिए एक कंटेनर होता है.
डेटासेट बनाने के लिए, ये काम करें:
- Google Cloud Console में BigQuery पेज पर जाएं.
- Explorer पैनल में, वह प्रोजेक्ट चुनें जिसमें आपको डेटासेट बनाना है.
- कार्रवाई विकल्प (वर्टिकल एलिप्सिस आइकॉन) को बड़ा करें. इसके बाद, डेटासेट बनाएं पर क्लिक करें.
- डेटासेट आईडी फ़ील्ड में
mdm_gemini
डालें. - अपनी जगह के टाइप को
Multi-region
के तौर पर सेट करें औरUS(multiple regions in United States.
की डिफ़ॉल्ट वैल्यू स्वीकार करें - डेटासेट बनाएं पर क्लिक करें.
- देखें कि डेटासेट बनाया गया है और Explorer पैनल में मौजूद आपके प्रोजेक्ट आईडी की सूची में शामिल किया गया है.
आपके Cloud Function के साथ इंटरैक्ट करने के लिए, BigQuery कनेक्शन ज़रूरी है. रिमोट फ़ंक्शन बनाने के लिए, आपको BigQuery कनेक्शन बनाना होगा. इस कोडलैब में, हम Cloud फ़ंक्शन के ज़रिए BigQuery से मॉडल को ऐक्सेस करने के लिए, BigLake कनेक्शन का इस्तेमाल करेंगे. BigLake कनेक्शन, BigQuery ऐक्सेस कंट्रोल और सुरक्षा को बनाए रखते हुए, बाहरी डेटा सोर्स को कनेक्ट करने में मदद करते हैं. हमारे मामले में, Vertex AI Gemini Pro API को जोड़ा जाता है.
BigLake कनेक्शन बनाने के लिए, यह तरीका अपनाएं:
- BigQuery पेज के एक्सप्लोरर पैनल में जोड़ें पर क्लिक करें.
- बाहरी डेटा सोर्स के कनेक्शन पर क्लिक करें.
- कनेक्शन टाइप की सूची में, Vertex AI के रिमोट मॉडल, रिमोट फ़ंक्शन, और BigLake (Cloud Resource) को चुनें.
- कनेक्शन आईडी फ़ील्ड में,
gemini-bq-conn
के तौर पर अपने कनेक्शन का नाम डालें. - अपनी जगह के टाइप को
Multi-region
के तौर पर सेट करें औरUS(multiple regions in United States.
की डिफ़ॉल्ट वैल्यू स्वीकार करें - कनेक्शन बनाएं पर क्लिक करें.
- कनेक्शन पर जाएं पर क्लिक करें. इसके बाद,कनेक्शन की जानकारी वाले पैनल में मौजूद सेवा खाता आईडी को कॉपी करें.
- IAM और एडमिन पेज पर जाएं और ऐक्सेस दें पर क्लिक करें.
- नए सिद्धांत फ़ील्ड में, सेवा खाता आईडी चिपकाएं.
- भूमिका सूची से
Vertex AI user
भूमिका चुनें और फिर सेव करें पर क्लिक करें.
अब आपने डेटासेट और BigQuery कनेक्शन बना लिया है.
6. Gemini फ़ंक्शन कॉलिंग (Java Cloud फ़ंक्शन) को डिप्लॉय करें
Java Cloud Function को डिप्लॉय करने के लिए, यह तरीका अपनाएं. इसमें Gemini फ़ंक्शन कॉलिंग भी शामिल है.
- यहां दिए गए निर्देश का इस्तेमाल करके, अपने Cloud Shell टर्मिनल से GitHub डेटा स्टोर करने की जगह का क्लोन बनाएं:
git clone https://github.com/AbiramiSukumaran/GeminiFunctionCalling
- प्लेसहोल्डर
YOUR_API_KEY
औरYOUR_PROJECT_ID
को अपनी वैल्यू से बदलें.
अगर आपने ब्लॉग को यहां पढ़ा है, तो आपको यह पता चलेगा कि फ़ंक्शन कॉलिंग को लागू करने के लिए, लैंडर जियोकोडिंग एपीआई का इस्तेमाल किया जाता है. यहां दिए गए निर्देशों की मदद से, अपनी 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
"y" कहें जब आपको "पुष्टि नहीं किए गए उन अनुरोधों को अनुमति दें" का मैसेज दिखता है जिनकी पुष्टि नहीं की गई है सवाल. आम तौर पर, आपको अपने एंटरप्राइज़ ऐप्लिकेशन के लिए, सुझाव के हिसाब से पुष्टि करने की सुविधा सेट अप करनी होगी. यह डेमो ऐप्लिकेशन है. इसलिए, हम पुष्टि किए बिना आगे बढ़ेंगे.
आउटपुट इस फ़ॉर्मैट में REST यूआरएल है:
https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling
- टर्मिनल से यह कमांड चलाकर, इस Cloud Function को टेस्ट करें:
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 फ़ंक्शन के अनुरोध और रिस्पॉन्स पैरामीटर को इस तरह से लागू किया जाता है कि BigQuery के रिमोट फ़ंक्शन को शुरू करने की सुविधा के साथ काम किया जा सकता है. इसे सीधे BigQuery डेटा से इस्तेमाल किया जा सकता है. इसका मतलब है कि अगर आपका डेटा इनपुट (अक्षांश और देशांतर) BigQuery में है, तो आप डेटा पर रिमोट फ़ंक्शन को कॉल कर सकते हैं और फ़ंक्शन रिस्पॉन्स पा सकते हैं. इसे सीधे BigQuery में सेव या प्रोसेस किया जा सकता है.
- डिप्लॉय किए गए इस Cloud फ़ंक्शन को शुरू करने वाला रिमोट फ़ंक्शन बनाने के लिए, BigQuery से नीचे दिया गया डीडीएल चलाएं:
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
);
बनाए गए नए रिमोट फ़ंक्शन का इस्तेमाल करने के लिए, यह क्वेरी टेस्ट करें:
mdm_gemini.CITIBIKE_STATIONS सीमा 1 से mdm_gemini.MDM_GEMINI
(latlong) चुनें;
अगर BigQuery में बनाए गए नए रिमोट फ़ंक्शन का इस्तेमाल करने वाली जांच क्वेरी, Cloud Functions की अनुमतियों से जुड़ी समस्या की वजह से फ़ेल हो जाती है, तो Google Cloud Console में जाकर Cloud Functions पर जाएं. इसके बाद, "gemini-fn-calling" के नाम से डिप्लॉय किए गए Cloud फ़ंक्शन का पता लगाएं. अनुमति टैब पर जाएं और मुख्य खाते को "allUsers" के तौर पर जोड़ें और उन्हें "Cloud Functions Invoker" की भूमिका असाइन करें ताकि यह पक्का किया जा सके कि Cloud Functions सभी उपयोगकर्ताओं के लिए ऐक्सेस किया जा सकता है (सिर्फ़ इसलिए कि यह एक डेमो ऐप्लिकेशन है).
7. कोई समाधान आज़माएं
अगर जियोकोडिंग फ़ंक्शन को रिवर्स करने के लिए, ज़रूरी API_KEY इस्तेमाल नहीं किया जा सकता या क्लाउड फ़ंक्शन डिप्लॉय नहीं किया गया है, तो किसी वजह से, विकल्प के तौर पर ये काम किए जा सकते हैं:
- CITIBIKE_STATIONS.csv फ़ाइल को डेटा स्टोर करने की जगह से अपने क्लाउड शेल प्रोजेक्ट फ़ोल्डर में डाउनलोड करें और उस फ़ोल्डर में जाएं.
- 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. टेबल बनाएं और पते का डेटा बेहतर बनाएं
पहला चरण: टेबल बनाना
Imp: अगर आपने पहले से ही टेबल बना ली होगी, तो इस तरीके का इस्तेमाल करके, इस चरण को छोड़ दें.
अगर आपने यह तरीका इस्तेमाल नहीं किया है, तो BigQuery SQL Editor में यहां दिया गया डीडीएल चलाएं:
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 Editor में नीचे दिए गए डीडीएल चलाएं, ताकि दो रिकॉर्ड वाले जगह की जानकारी का दूसरा सोर्स बनाया जा सके. इस टेबल को 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 टेक्स्ट एम्बेडिंग एपीआई के लिए रिमोट मॉडल बनाएं:
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;
वह टेबल जिसके लिए हम क्वेरी कर रहे हैं: ml_generate_embedding_result
फ़ील्ड में mdm_gemini.CITIBIKE_STATIONS_SOURCE1
वह टेबल जिसे हम बेस के तौर पर इस्तेमाल करते हैं: embeddings_src
फ़ील्ड में mdm_gemini.CITIBIKE_STATIONS_SOURCE2
top_k: आस-पास के उन लोगों की संख्या बताता है जिनके पास वापस जाना है. डिफ़ॉल्ट संख्या 10 है. नेगेटिव वैल्यू को अनंत माना जाता है. इसका मतलब है कि सभी वैल्यू को आस-पास की वैल्यू के तौर पर गिना जाता है और उन्हें वापस मान लिया जाता है.
distance_type: दो वेक्टर के बीच की दूरी की गणना करने के लिए इस्तेमाल की जाने वाली मेट्रिक का टाइप बताता है. दूरी के लिए यूक्लिडीन और कोसाइन का इस्तेमाल किया जा सकता है. डिफ़ॉल्ट वैल्यू यूक्लिडीन होती है.
क्वेरी का नतीजा कुछ ऐसा होता है:
जैसा कि आपको दिख रहा है, इसने CITIBIKE_STATIONS_SOURCE2
की दो पंक्तियों के लिए, CITIBIKE_STATIONS_SOURCE1
के आस-पास के दो सबसे नज़दीकी डुप्लीकेट संपर्कों की सूची बनाई है. 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;
क्वेरी का नतीजा कुछ ऐसा होता है:
दोनों क्वेरी (दोनों तरह की दूरी में) को DESCENDING की दूरी के हिसाब से क्रम में लगाया गया है. इसका मतलब है कि हम नतीजों को कम की गई दूरी के हिसाब से क्रम में लगाना चाहते हैं. हालांकि, आपने यह देखा होगा कि दूसरी क्वेरी के लिए दूरी का क्रम उलटा है. इसकी वजह क्या है?
हां!! आपने सही पहचाना! कोसाइन (cos) की समानता में, बड़ी संख्या का मतलब ज़्यादा समानता और कम दूरी है. इयूक्लिडीन दूरी में, बड़ी संख्या का मतलब है, वैल्यू के बीच ज़्यादा दूरी.
एमडीएम को समझने और यूक्लिडियन और कोसाइन के इस्तेमाल के बीच के अंतर को समझने से जुड़ी सलाह पाने के लिए, यह ब्लॉग पढ़ें.
11. व्यवस्थित करें
इस पोस्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर शुल्क न लगे, इसके लिए यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए, शट डाउन करें पर क्लिक करें.
- अगर आपको अपना प्रोजेक्ट बनाए रखना है, तो ऊपर दिए गए चरणों को छोड़ दें और Cloud Functions पर जाकर, Cloud Functions को मिटाएं. फ़ंक्शन की सूची में, जिस फ़ंक्शन को मिटाना है उसे चुनें. इसके बाद, मिटाएं पर क्लिक करें.
12. बधाई हो
बधाई हो! आपने दिखा दिया है कि Gemini 1.0 Pro और Function कॉलिंग की मदद से, एमडीएम की कुछ गतिविधियों को आसान, लेकिन बेहतर, तय करने वाले, और भरोसेमंद जनरेटिव एआई सुविधाओं में बदला जा सकता है. आपको पता है कि इस तरह के इस्तेमाल के उदाहरण या एमडीएम के अन्य फ़ंक्शन लागू करने के दूसरे तरीकों के बारे में बेझिझक बताएं. क्या कोई ऐसे डेटासेट हैं जिनकी पुष्टि की जा सकती है, जानकारी उपलब्ध नहीं है या ऐसे टास्क हैं जो आपके जनरेटिव एआई के जवाबों में एम्बेड किए गए स्ट्रक्चर्ड कॉल की मदद से अपने-आप हो सकते हैं? ज़्यादा जानकारी के लिए, Vertex AI, BigQuery रिमोट फ़ंक्शन, Cloud Functions, एम्बेडिंग, और वेक्टर सर्च के दस्तावेज़ देखें. यहां इस प्रोजेक्ट के लिए GitHub रेपो दिया गया है. हमें बताएं कि इस लर्निंग की मदद से आपने क्या-क्या बनाया है!