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 फ़ंक्शन कॉलिंग (यह एक Java Cloud फ़ंक्शन है, जो citibike_stations डेटा में मौजूद निर्देशांकों के लिए, रिवर्स जियोकोडिंग एपीआई का इस्तेमाल करके पते की जानकारी पाता है).
- डुप्लीकेट की पहचान करने के लिए, BigQuery में Vertex AI एम्बेडिंग एपीआई और वेक्टर सर्च.
आपको क्या बनाना है
- आपको इस्तेमाल के उदाहरण के लिए, BigQuery डेटासेट बनाना होगा. इस डेटासेट में, आपको सार्वजनिक डेटासेट टेबल
bigquery-public-data.new_york_citibike.citibike_stations
के डेटा की मदद से, एक लैंडिंग टेबल बनानी होगी. - आपको पता को स्टैंडर्ड बनाने के लिए, Gemini फ़ंक्शन कॉलिंग वाला Cloud फ़ंक्शन डिप्लॉय करना होगा.
- आपको बेहतर किए गए पते का डेटा, लैंडिंग टेबल में सेव करना होगा. यह डेटा, इस डेमो के लिए दिए गए दो सोर्स से लिया जाएगा.
- आपको पते के डेटा पर, BigQuery से Vertex AI Embeddings API को कॉल करना होगा.
- डुप्लीकेट रिकॉर्ड की पहचान करने के लिए, BigQuery वेक्टर सर्च का इस्तेमाल किया जाएगा.
इस डायग्राम में, डेटा के फ़्लो और इसे लागू करने के चरणों के बारे में बताया गया है.
3. ज़रूरी शर्तें
4. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें .
- इसके लिए, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है, जिसमें bq पहले से लोड होता है. Google Cloud कंसोल में सबसे ऊपर, 'Cloud Shell चालू करें' पर क्लिक करें.
- Cloud Shell से कनेक्ट होने के बाद, यह जांच करें कि आपकी पुष्टि पहले ही हो चुकी है या नहीं. साथ ही, यह भी देखें कि प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है या नहीं. इसके लिए, यह कमांड इस्तेमाल करें:
gcloud auth list
- Cloud Shell में यह कमांड चलाकर पुष्टि करें कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है.
gcloud config list project
- अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
- एपीआई चालू करने के लिए, Google Cloud Marketplace के लिए Gemini पर जाएं. 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 पेज पर जाएं.
- एक्सप्लोरर पैनल में, वह प्रोजेक्ट चुनें जिसमें आपको डेटासेट बनाना है.
- कार्रवाइयां विकल्प (वर्टिकल एलिप्सिस आइकॉन) को बड़ा करें और डेटासेट बनाएं पर क्लिक करें.
- डेटासेट आईडी फ़ील्ड में
mdm_gemini
डालें. - जगह की जानकारी के टाइप को
Multi-region
पर सेट करें और डिफ़ॉल्ट वैल्यूUS(multiple regions in United States.
को स्वीकार करें - डेटासेट बनाएं पर क्लिक करें.
- देखें कि डेटासेट बनाया गया है या नहीं. साथ ही, यह भी देखें कि वह एक्सप्लोरर पैनल में आपके प्रोजेक्ट आईडी के तहत मौजूद है या नहीं.
अपने Cloud फ़ंक्शन के साथ इंटरैक्ट करने के लिए, BigQuery कनेक्शन ज़रूरी है. रिमोट फ़ंक्शन बनाने के लिए, आपको BigQuery कनेक्शन बनाना होगा. इस कोडलैब में, हम Cloud फ़ंक्शन के ज़रिए BigQuery से मॉडल को ऐक्सेस करने के लिए, BigLake कनेक्शन का इस्तेमाल करेंगे. 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 रिपॉज़िटरी को क्लोन करने के लिए, नीचे दिए गए कमांड का इस्तेमाल करें:
git clone https://github.com/AbiramiSukumaran/GeminiFunctionCalling
- प्लेसहोल्डर
YOUR_API_KEY
औरYOUR_PROJECT_ID
को अपनी वैल्यू से बदलें.
यहां ब्लॉग पढ़ने पर, आपको पता चलेगा कि फ़ंक्शन कॉल करने के तरीके में रिवर्स जियोकोडिंग एपीआई का इस्तेमाल किया जाता है. यहां दिए गए निर्देशों का पालन करके, अपना API_KEY बनाया जा सकता है.
- Cloud Shell टर्मिनल में, क्लोन की गई नई प्रोजेक्ट डायरेक्ट्री GeminiFunctionCalling पर जाएं. इसके बाद, Cloud फ़ंक्शन बनाने और डिप्लॉय करने के लिए, यह स्टेटमेंट चलाएं:
gcloud functions deploy gemini-fn-calling --gen2 --region=us-central1 --runtime=java11 --source=. --entry-point=cloudcode.helloworld.HelloWorld --trigger-http
"बिना पुष्टि के अनुरोध करने की अनुमति दें" से जुड़े सवाल पूछे जाने पर, "हां" कहें. हमारा सुझाव है कि आप अपने एंटरप्राइज़ ऐप्लिकेशन के लिए, पुष्टि करने की सुविधा सेट अप करें. हालांकि, यह एक डेमो ऐप्लिकेशन है. इसलिए, हम बिना पुष्टि किए ही आगे की कार्रवाई करेंगे.
आउटपुट, इस फ़ॉर्मैट में एक 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 से यह डीडीएल चलाएं:
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 फ़ंक्शन डिप्लॉय नहीं किया है, तो इसके विकल्प के तौर पर ये काम किए जा सकते हैं:
- रिपॉज़िटरी से 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 SQL एडिटर में यह डीडीएल चलाएं:
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;
दूसरा चरण: साइकल स्टेशन की जगह की जानकारी के लिए दूसरा सोर्स बनाना
टेबल बनाने के लिए, गड़बड़ी को ठीक करने के तरीके का इस्तेमाल करने के बावजूद, यह चरण न छोड़ें.
इस चरण में, आपको इस कोडलैब के लिए साइकल स्टेशन की जगह के डेटा का दूसरा सोर्स बनाना होगा. इससे पता चलता है कि MDM, एक से ज़्यादा सोर्स से डेटा इकट्ठा करके, सही जानकारी दे रहा है.
BigQuery SQL एडिटर में, नीचे दिए गए डीडीएल चलाकर, लोकेशन डेटा का दूसरा सोर्स बनाएं. इसमें दो रिकॉर्ड होंगे. आइए, इस टेबल को 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 के टेक्स्ट-एम्बेडिंग एपीआई की मदद से, Vertex AI पर जनरेटिव एआई का इस्तेमाल करके टेक्स्ट एम्बेडिंग बनाई जा सकती है. टेक्स्ट एम्बेड, टेक्स्ट के अंकों के तौर पर दिखाए जाते हैं. इससे शब्दों और वाक्यांशों के बीच के संबंधों का पता चलता है. Vertex AI टेक्स्ट एम्बेडिंग के बारे में ज़्यादा जानने के लिए, यहां क्लिक करें.
- 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_SOURCE1
से CITIBIKE_STATIONS_SOURCE2
की दो लाइनों के लिए, सबसे नज़दीकी दो नेबर (दूसरे शब्दों में, सबसे मिलते-जुलते डुप्लीकेट) की सूची दी गई है. distance_type
की जानकारी नहीं दी गई है, इसलिए यह माना जाता है कि यह यूक्लिडियन है और दूरी को दो सोर्स के बीच के पते के टेक्स्ट की वैल्यू में दूरी के तौर पर पढ़ा जाता है. सबसे कम दूरी, सबसे मिलते-जुलते पते के टेक्स्ट की होती है.
आइए, इस क्वेरी का इस्तेमाल करके distance_type
को कोसाइन पर सेट करें:
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 रिपॉज़िटरी यहां दिया गया है. हमें बताएं कि इस लर्निंग से आपको क्या मिला!