इन-प्लेस एलएलएम इनसाइट: स्ट्रक्चर्ड और अनस्ट्रक्चर्ड डेटा ऐनलिटिक्स के लिए BigQuery और Gemini

1. परिचय

बड़े डेटासेट में अहम जानकारी होती है. हालांकि, इससे काम की जानकारी निकालना मुश्किल हो सकता है. पारंपरिक ऐनलिटिक्स टूल, अक्सर बारीकी से और इंसानों की तरह जवाब नहीं दे पाते. इससे हमें अपने डेटा की पूरी जानकारी नहीं मिल पाती. डेटा वेयरहाउस में ज़्यादा से ज़्यादा अनस्ट्रक्चर्ड डेटा सेव किया जा रहा है. हालांकि, इस डेटा को हमेशा इनसाइट पाने के लिए ऐक्सेस नहीं किया जा सकता. अनस्ट्रक्चर्ड टेक्स्ट, इमेज, और वीडियो में आपके कारोबार को आगे बढ़ाने के लिए अहम जानकारी होती है. एलएलएम, आपके डेटा को समझने का एक नया और बेहतर तरीका उपलब्ध कराते हैं. ये आपको डेटा के बारे में जानकारी देते हैं, भावनाओं का विश्लेषण करते हैं, ऑब्जेक्ट का पता लगाते हैं, और भी बहुत कुछ करते हैं. मल्टीमॉडल मॉडल के आने और ऑब्जेक्ट टेबल के ज़रिए BigQuery में इमेज और वीडियो जैसे ऑब्जेक्ट डेटा को सेव करने की सुविधा मिलने से, Gemini 1.0 Pro (टेक्स्ट आधारित विश्लेषण के लिए) और Gemini 1.0 Pro Vision (टेक्स्ट और इमेज/वीडियो के विश्लेषण के लिए) जैसे शक्तिशाली एलएलएम को BigQuery के साथ इंटिग्रेट किया जा सकता है. इससे, डेटा का विश्लेषण करने के तरीके में बदलाव किया जा सकता है.

इस कोडलैब में, हम आपके एंटरप्राइज़ डेटा से एलएलएम की अहम जानकारी पाने के इन दो तरीकों के बारे में जानेंगे. साथ ही, हम यह भी जानेंगे कि BigQuery में मौजूद हज़ारों लाइनों में मौजूद डेटा के लिए, इस जानकारी को कैसे बढ़ाया जा सकता है:

पहला तरीका: रिमोट मॉडल इनवोकेशन

  • SELECT क्वेरी में ML.GENERATE_TEXT का इस्तेमाल करके, BigQuery से Gemini 1.0 Pro को कॉल करें.
  • इस तरीके का इस्तेमाल तब करें, जब मॉडल पहले से ही BigQuery में रिमोट मॉडल के तौर पर उपलब्ध हो और आपको इसका तुरंत इस्तेमाल करना हो. BigQuery के दस्तावेज़ में जाकर, उस मॉडल की स्थिति देखें जिसका आपको इस्तेमाल करना है.

दूसरा तरीका: रिमोट फ़ंक्शन लागू करना

  • Gemini 1.0 Pro Vision कॉल को लागू करने वाले Cloud फ़ंक्शन को कॉल करें. इसे BigQuery में रिमोट फ़ंक्शन के तौर पर दिखाया जाता है.
  • इस तरीके का इस्तेमाल तब करें, जब आपको जिस मॉडल का इस्तेमाल करना है वह रिमोट मॉडल के तौर पर उपलब्ध न हो या आपको इस्तेमाल के उदाहरण में ज़्यादा सुविधा और पसंद के मुताबिक बनाने का विकल्प चाहिए हो.

आपको क्या बनाना है

  • रिमोट मॉडल इनवोकेशन तरीके के लिए, आपको इंटरनेट आर्काइव की किताबों के डेटासेट के लिए, जगह की खास जानकारी देने वाला मॉडल बनाना होगा. यह डेटासेट, BigQuery में सार्वजनिक तौर पर उपलब्ध है. इसके लिए, BigQuery में ML.GENERATE_TEXT कंस्ट्रक्ट में Gemini 1.0 Pro के रिमोट मॉडल को इनवोक करें.

रिमोट मॉडल को चालू करने के लिए फ़्लो डायग्राम

  • रिमोट फ़ंक्शन लागू करने के तरीके के लिए, आपको एक इमेज वैलिडेटर बनाना होगा. इससे, टेस्ट इमेज की तुलना बेसलाइन इमेज से की जा सकेगी. इसके लिए, आपको एक डेटासेट बनाना होगा. इसमें बाहरी टेबल में टेस्ट इमेज के स्क्रीनशॉट शामिल होंगे. इसके बाद, Gemini 1.0 Pro Vision से, इसे बेसलाइन इमेज के हिसाब से पुष्टि करने के लिए कहें. इसके बाद, आपको एक Java Cloud फ़ंक्शन बनाना होगा, जो Gemini Pro Vision कॉल को लागू करता है. साथ ही, इसे BigQuery में रिमोट फ़ंक्शन के तौर पर लागू करना होगा.

रिमोट फ़ंक्शन लागू करने के लिए फ़्लो डायग्राम

ध्यान दें:

ऐसा हो सकता है कि BigQuery में रिमोट मॉडल के तौर पर, Vertex AI के ज़्यादा जनरेटिव एआई मॉडल उपलब्ध हों. इसका मतलब है कि BigQuery के साथ काम करने वाले इन मॉडल को, ML.GENERATE_TEXT कंस्ट्रक्ट की मदद से ऐक्सेस किया जा सकता है. हालांकि, रिमोट मॉडल उपलब्ध होने पर भी, आपके पास Cloud Functions की मदद से अपने इस्तेमाल के उदाहरण के लिए बेहतर कस्टमर बनाने का विकल्प होता है. इसके बाद, इन मॉडल को BigQuery से रिमोट फ़ंक्शन के तौर पर ऐक्सेस किया जा सकता है.

BigQuery का इस्तेमाल क्यों करना चाहिए?

BigQuery, बिना सर्वर वाला मल्टी-क्लाउड डेटा वेयरहाउस है. इसे बाइट से लेकर पेटाबाइट तक बढ़ाया जा सकता है. साथ ही, इसे मैनेज करने में कम समय लगता है. इसलिए, यह एमएल ट्रेनिंग डेटा को सेव करने के लिए एक बेहतरीन विकल्प है. BigQuery में पहले से मौजूद मशीन लर्निंग (BQML) और विश्लेषण की सुविधाओं का इस्तेमाल करके, सिर्फ़ एसक्यूएल क्वेरी की मदद से बिना कोड लिखे अनुमान लगाए जा सकते हैं. इसके अलावा, फ़ेडरेटेड क्वेरी की मदद से बाहरी सोर्स से डेटा ऐक्सेस किया जा सकता है. इससे जटिल ईटीएल पाइपलाइन की ज़रूरत नहीं पड़ती.

BigQuery, पूरी तरह से मैनेज किया गया क्लाउड डेटा वेयरहाउस है. इससे उपयोगकर्ताओं को स्ट्रक्चर्ड, सेमी-स्ट्रक्चर्ड, और अनस्ट्रक्चर्ड डेटा का विश्लेषण करने में मदद मिलती है.

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

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.

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

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

Cloud Shell बटन की इमेज चालू करें

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

gcloud कमांड का इस्तेमाल करने के बजाय, इस लिंक का इस्तेमाल करके कंसोल पर जाएं.

gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.

4. BigQuery डेटासेट और बाहरी कनेक्शन बनाना

सबसे पहले, डेटासेट और क्लाउड रिसॉर्स कनेक्शन बनाते हैं.

BigQuery में डेटासेट, आपके ऐप्लिकेशन की सभी टेबल और ऑब्जेक्ट के लिए एक कंटेनर होता है.

डेटासेट बनाने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में BigQuery पेज पर जाएं.
  2. एक्सप्लोरर पैनल में, वह प्रोजेक्ट चुनें जिसमें आपको डेटासेट बनाना है.
  3. कार्रवाइयां विकल्प (वर्टिकल तीन बिंदु वाला आइकॉन) को बड़ा करें. इसके बाद, डेटासेट बनाएं पर क्लिक करें.

ऐक्शन मेन्यू और &#39;डेटासेट बनाएं&#39; विकल्प की इमेज

  1. डेटासेट बनाएं पर क्लिक करें.
  2. डेटासेट आईडी फ़ील्ड में gemini_bq_fn डालें.
  3. जगह के टाइप को Multi-region के तौर पर सेट करें और डिफ़ॉल्ट वैल्यू स्वीकार करें. डिफ़ॉल्ट वैल्यू US(multiple regions in United States. होती है
  4. डेटासेट बनाएं पर क्लिक करें.
  5. देखें कि डेटासेट बन गया हो और एक्सप्लोरर पैनल में, आपके प्रोजेक्ट आईडी के नीचे दिख रहा हो.

Cloud फ़ंक्शन के साथ इंटरैक्ट करने के लिए, BigQuery कनेक्शन की ज़रूरत होती है. रिमोट फ़ंक्शन बनाने के लिए, आपको BigQuery कनेक्शन बनाना होगा. इस कोडलैब में, हम Cloud Functions के ज़रिए BigQuery से मॉडल को ऐक्सेस करने के लिए, BigLake कनेक्शन का इस्तेमाल करेंगे. BigLake कनेक्शन की मदद से, बाहरी डेटा सोर्स को कनेक्ट किया जा सकता है. साथ ही, BigQuery के फ़ाइन-ग्रेन्ड ऐक्सेस कंट्रोल और सुरक्षा को बनाए रखा जा सकता है. हमारे मामले में, यह Vertex AI Gemini Pro API है.

BigLake कनेक्शन बनाने के लिए, यह तरीका अपनाएं:

  1. BigQuery पेज के एक्सप्लोरर पैनल में, जोड़ें पर क्लिक करें.

BigQuery कंसोल में, बाहरी कनेक्शन जोड़ने के लिए ADD बटन को हाइलाइट किया गया है

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

कनेक्शन की जानकारी का स्क्रीनशॉट

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

सेवा खाते के स्क्रीनशॉट का ऐक्सेस देना

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

5. इस्तेमाल का पहला उदाहरण: रिमोट मॉडल इनवोकेशन सेट अप करना

अब आपने अपना डेटासेट और कनेक्शन बना लिया है. आइए, Vertex AI Gemini Pro के फ़ाउंडेशन मॉडल के आधार पर, BigQuery में एक मॉडल बनाएं. इस अभ्यास के आखिर में, आपके पास सिर्फ़ SQL क्वेरी का इस्तेमाल करके, एलएलएम ऐप्लिकेशन को चालू करने का विकल्प होगा.

पहला चरण: एक BigQuery टेबल बनाएं जिसमें रिमोट मॉडल के लिए इनपुट डेटा मौजूद हो

अपने डेटासेट में books नाम की एक टेबल बनाएं. इसमें bigquery-public-data.gdelt_internetarchivebooks.1905 टेबल के करीब 50 रिकॉर्ड सेव किए जा सकते हैं. यह टेबल, Internet Archive Books डेटासेट से ली गई है. इसे BigQuery ने सार्वजनिक इस्तेमाल के लिए उपलब्ध कराया है.

इसके लिए, BigQuery SQL एडिटर पैन में जाकर, डेटा डेफ़िनिशन लैंग्वेज (डीडीएल) का यह स्टेटमेंट लागू करें:

create or replace table gemini_bq_fn.books as (
select *
from
bigquery-public-data.gdelt_internetarchivebooks.1905 limit 50)

दूसरा चरण : BigQuery मॉडल बनाना

अपने डेटासेट में कोई मॉडल बनाएं. इसके लिए, BigQuery SQL एडिटर पैनल में जाकर यह DDL चलाएं:

CREATE MODEL `gemini_bq_fn.gemini_remote_model`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(ENDPOINT = 'gemini-pro');

देखें कि मॉडल को देखने के विकल्प के साथ बनाया गया है.

तीसरा चरण : जनरेटिव एआई की सुविधा वाले नए ऐप्लिकेशन को टेस्ट करना

रिमोट मॉडल को अनुरोध भेजने के लिए, SELECT क्वेरी में ML.GENERATE_TEXT फ़ंक्शन का इस्तेमाल करें.

SELECT ml_generate_text_llm_result as Gemini_Response, prompt as Prompt
FROM ML.GENERATE_TEXT(MODEL `gemini_bq_fn.gemini_remote_model`,
 (select 'You are a text summarizer and standardizer. From the following text that contains address locations, standardize and print one standardized, consolidated address. You cannot return empty because you know how to pick up sensible data from the text in this field: ' ||
substring(locations, 0, 200) as prompt
from `gemini_bq_fn.books`),
STRUCT(
 TRUE AS flatten_json_output));

आपको यह नतीजा दिखेगा:

BigQuery में ML.GENERATE_TEXT क्वेरी का नतीजा

बधाई हो! आपने यह दिखा दिया है कि BigQuery टेबल में टेक्स्ट डेटा का विश्लेषण करने के लिए, ML.GENERATE_TEXT फ़ंक्शन के साथ रिमोट मॉडल (gemini-pro मॉडल पर आधारित) का इस्तेमाल कैसे किया जाता है.

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

6. इस्तेमाल का उदाहरण #2 रिमोट फ़ंक्शन लागू करना: रिमोट फ़ंक्शन लागू करने की सुविधा सेट अप करना

इस अभ्यास में, आपको BigQuery में एक फ़ंक्शन बनाना होगा. यह फ़ंक्शन, Java Cloud फ़ंक्शन पर आधारित होगा. यह Gemini 1.0 Pro Vision फ़ाउंडेशन मॉडल को लागू करता है. सबसे पहले, Gemini 1.0 Pro Vision मॉडल का इस्तेमाल करके, इमेज की तुलना करने के लिए Java Cloud फ़ंक्शन बनाया जाएगा और उसे डिप्लॉय किया जाएगा. इसके बाद, BigQuery में रिमोट फ़ंक्शन बनाया जाएगा, जो डिप्लॉय किए गए Cloud फ़ंक्शन को चालू करेगा. ध्यान दें कि BigQuery में किसी भी रिमोट फ़ंक्शन को लागू करने के लिए, यही तरीका अपनाया जा सकता है.

तो चलिए, शुरू करते हैं!

पहला चरण: Java Cloud Function बनाना

आपको Java में Gen 2 Cloud Function बनाना होगा. इससे, टेस्ट इमेज की पुष्टि, बेसलाइन इमेज के हिसाब से की जा सकेगी. बेसलाइन इमेज, BigQuery की बाहरी टेबल में मौजूद, टेस्ट इमेज के स्क्रीनशॉट वाले डेटासेट में सेव होती है. Gemini Pro Vision मॉडल (Java SDK) का इस्तेमाल करके, इमेज की पुष्टि की जाएगी. इसके बाद, Java Cloud Function को REST एंडपॉइंट पर डिप्लॉय करें.

यह तरीका अपनाएं:

  1. Cloud Shell Editor लॉन्च करें.
  2. अगर लेगसी एडिटर का इस्तेमाल किया जा रहा है, तो नए एडिटर को आज़माएं पर क्लिक करें.
  3. स्टेटस बार में, Cloud Code - Sign In पर क्लिक करें.
  4. अगर आपको Google Cloud API कॉल करने के लिए, Cloud Shell Editor को अनुमति देने के लिए कहा जाता है, तो अनुमति दें पर क्लिक करें. अपने Google खाते में साइन इन करने के लिए, दिए गए निर्देशों का पालन करें. अब आप Google Cloud से कनेक्ट हो गए हैं.
  5. अगर आपको Cloud Code की स्थिति बताने वाले बार में अपना प्रोजेक्ट नहीं दिखता है, तो Cloud Code - Sign In > Select a Google Cloud project पर क्लिक करें. वह Google Cloud प्रोजेक्ट चुनें जिसमें आपको Cloud Functions बनानी हैं. प्रोजेक्ट लोड हो जाता है और Cloud Shell Editor में ऐक्टिव प्रोजेक्ट बन जाता है.
  6. Cloud Code की स्टेटस बार में, चालू प्रोजेक्ट के नाम पर क्लिक करें. दिखने वाले Quick Pick मेन्यू में, नया ऐप्लिकेशन चुनें.
  7. नया ऐप्लिकेशन बनाएं डायलॉग में, Cloud Functions ऐप्लिकेशन चुनें.

Create New Application पॉप-अप पेज 1

  1. जब आपसे कोई टेंप्लेट चुनने के लिए कहा जाए, तब Java: Hello World चुनें.

Create New Application पॉप-अप पेज 2

  1. प्रोजेक्ट के पाथ में, प्रोजेक्ट के नाम के तौर पर Gemini-BQ-Function डालें. प्रोजेक्ट का स्ट्रक्चर, Cloud Shell Editor के नए व्यू में दिखता है.

Java Cloud फ़ंक्शन ऐप्लिकेशन प्रोजेक्ट का नया स्ट्रक्चर

  1. <dependencies>... </dependencies> टैग में ज़रूरी डिपेंडेंसी जोड़ें या सैंपल pom.xml फ़ाइल से डिपेंडेंसी कॉपी करें.
  2. अपनी क्लास का नाम HelloWorld.java से बदलकर, कोई ऐसा नाम रखें जो ज़्यादा सही हो. मान लें कि GeminiBigQueryFunction.java. इसके मुताबिक, पैकेज का नाम बदलें.
  3. GeminiBigQueryFunction.Java फ़ाइल में मौजूद प्लेसहोल्डर कोड को, GitHub रिपॉज़िटरी में दिए गए सैंपल कोड से बदलें. पक्का करें कि आपने सैंपल कोड में, <YOUR_PROJECT_ID> वैरिएबल की जगह अपना प्रोजेक्ट आईडी डाला हो.
  4. Cloud Shell टर्मिनल पर जाएं. देखें कि आप अपनी प्रोजेक्ट डायरेक्ट्री में हों. अगर ऐसा नहीं है, तो यह कमांड चलाकर प्रोजेक्ट डायरेक्ट्री पर जाएं:
cd Gemini-BQ-Function
  1. Cloud फ़ंक्शन को बनाने और डिप्लॉय करने के लिए, यह स्टेटमेंट लागू करें:
gcloud functions deploy gemini-bq-fn --gen2 --runtime java17 --trigger-http --entry-point cloudcode.helloworld.GeminiBigQueryFunction --allow-unauthenticated --source .

कमांड में मौजूद एंट्री पॉइंट को अपने फ़ंक्शन के एंट्री पॉइंट से बदलें. आउटपुट, इस फ़ॉर्मैट में एक REST यूआरएल होता है:

https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-bq-fn
  1. इस Cloud फ़ंक्शन को टेस्ट करने के लिए, टर्मिनल में यह कमांड चलाएं:
gcloud functions call gemini-bq-fn --region=us-central1 --gen2 --data '{"calls":[["https://storage.googleapis.com/img_public_test/image_validator/baseline/1.JPG", "https://storage.googleapis.com/img_public_test/image_validator/test/2.JPG", "PROMPT_ABOUT_THE_IMAGES_TO_GEMINI"]]}'

रैंडम सैंपल प्रॉम्प्ट के लिए जवाब:

Cloud Function से मिली JSON रिस्पॉन्स स्ट्रिंग

बहुत बढ़िया! Gemini Pro Vision मॉडल को लागू करने के लिए, सामान्य Cloud फ़ंक्शन तैयार है. आइए, इस एंडपॉइंट का इस्तेमाल सीधे तौर पर BigQuery डेटा पर करें. इसके लिए, BigQuery रिमोट फ़ंक्शन का इस्तेमाल करें.

दूसरा चरण: BigQuery ऑब्जेक्ट टेबल और रिमोट फ़ंक्शन बनाना

ज़रूरी शर्त

इस कसरत के इस हिस्से के लिए, आपको Cloud Storage बकेट की ज़रूरत होगी. Cloud Storage बकेट बनाने के लिए, यह तरीका अपनाएं:

  1. बकेट बनाने के लिए, Cloud Storage कंसोल पर जाएँ और बनाएँ पर क्लिक करें.
  2. बकेट का नाम demo-bq-gemini-public-image डालें और बनाएं पर क्लिक करें.
  3. Enforce public access prevention on this bucket विकल्प से सही का निशान हटाएं. इस अभ्यास में, आपको इस बकेट को सार्वजनिक ऐक्सेस के लिए बनाना है. हालांकि, हम सुझाव देते हैं कि आप सार्वजनिक ऐक्सेस को रोकें और अपने एंटरप्राइज़ के इस्तेमाल के मामलों में ज़रूरी होने पर, कुछ खास सेवा खातों को अनुमतियां दें.
  4. बकेट बनाने के बाद, अनुमतियां देखने और उनमें बदलाव करने के लिए, अनुमतियां टैब पर जाएं.
  5. प्रिंसिपल को जोड़ने के लिए, ऐक्सेस दें पर क्लिक करें. किसी खाते को अनुमतियां देने के लिए, सेवा खाते का आईडी डालें या अपनी बकेट का ऐक्सेस सार्वजनिक तौर पर देने के लिए, allUsers डालें.
  6. Storage Object Viewer भूमिका चुनें और सेव करें पर क्लिक करें. अगर कहा जाए, तो सार्वजनिक ऐक्सेस की अनुमति दें.
  7. ऑब्जेक्ट टैब पर जाएं. इसके बाद, तुलना करने के लिए बेसलाइन इमेज और टेस्ट इमेज अपलोड करें. इस कोडलैब के लिए, सार्वजनिक तौर पर उपलब्ध इन ऑब्जेक्ट को अपलोड किया जा सकता है: baseline.JPG, TEST1.JPG, और TEST2.JPG.

BigQuery ऑब्जेक्ट टेबल बनाना

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

CREATE OR REPLACE EXTERNAL TABLE `gemini_bq_fn.image_validation`
WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(object_metadata="SIMPLE", uris=["gs://demo-bq-gemini-public-image/*.JPG"]);

देखें कि आपके डेटासेट में image_validation नाम की नई ऑब्जेक्ट टेबल बनी हो.

BigQuery का रिमोट फ़ंक्शन बनाना

BigQuery में एक रिमोट फ़ंक्शन बनाएं, ताकि Gemini Pro Vision मॉडल को लागू करने वाले Java Cloud फ़ंक्शन को कॉल किया जा सके. इसे उसी डेटासेट में बनाएं. इसके लिए, BigQuery कंसोल के एसक्यूएल एडिटर पैनल में जाकर, यह DDL चलाएं:

CREATE OR REPLACE FUNCTION `gemini_bq_fn.FN_IMAGE_VALIDATE` (baseline STRING, test STRING, prompt STRING) RETURNS STRING
 REMOTE WITH CONNECTION `us.gemini-bq-conn`
 OPTIONS (
   endpoint = 'https://us-central1-<your project id>.cloudfunctions.net/gemini-bq-fn',
   max_batching_rows = 1
 );

एंडपॉइंट यूआरएल, वह REST यूआरएल है जो इस अभ्यास में पहले दिखाया गया था. इससे BigQuery में रिमोट फ़ंक्शन बनता है. ऊपर दिए गए DDL में तीन पैरामीटर हैं. पहले दो पैरामीटर, उन इमेज के यूआरएल हैं जिन्हें पिछले चरण में बनाई गई ऑब्जेक्ट टेबल में सेव किया गया है. आखिरी पैरामीटर, मॉडल (Gemini Pro Vision) को दिया गया प्रॉम्प्ट है. इस हस्ताक्षर को पार्स करने के लिए इस्तेमाल किए गए Java Cloud Functions कोड को यहां देखा जा सकता है:

Gson().fromJson(request.getReader(), JsonObject.class);
JsonArray calls_array = requestJson.getAsJsonArray("calls");
JsonArray calls = (JsonArray) calls_array.get(0);
String baseline_url = calls.get(0).toString().replace("\"", "");
String test_url = calls.get(1).toString().replace("\"", "");
String prompt_string = calls.get(2).toString();

BigQuery से Gemini को चालू करना

SELECT क्वेरी में रिमोट फ़ंक्शन का इस्तेमाल करके, यह जांच करें कि इमेज, प्रॉम्प्ट के हिसाब से सही हैं या नहीं.

select gemini_bq_fn.FN_IMAGE_VALIDATE(
'https://storage.googleapis.com/demo-bq-gemini-public-image/Baseline.JPG',
REPLACE(uri, 'gs://', 'https://storage.googleapis.com/') ,
'You are an expert image validator who can respond with JSON result. Find 2 images here. The first one is the reference image. The second image is the test image. Compare the second image to see if the second image is similar to the first in terms of the text present in the image.  Respond ONLY in JSON Format with 3 attributes namely SIMILARITY which is a \"YES\" or \"NO\", SIMILARITY_SCORE which is a percentage and DIFFERENCE_COMMENT which is a string.' ) as IMAGE_VALIDATION_RESULT
from `gemini_bq_fn.image_validation`
where uri like '%TEST1%';  

ऊपर दी गई क्वेरी को TEST1 और TEST2 ऑब्जेक्ट फ़ाइलों के साथ आज़माएँ. आपको इससे मिलता-जुलता नतीजा दिखेगा:

BigQuery रिमोट फ़ंक्शन के नतीजे का स्क्रीनशॉट

आपकी जानकारी के लिए यहां इमेज दी गई हैं:

बेसलाइन इमेज

टेस्ट केस के लिए बेसलाइन रेफ़रंस इमेज

टेस्ट इमेज

टेस्ट केस के लिए पहली टेस्ट इमेज

ध्यान दें कि दोनों इमेज में Duet AI क्लाउड कंसोल का व्यू एक जैसा है. हालांकि, दोनों में मौजूद टेक्स्ट अलग-अलग है. यह टेक्स्ट, मॉडल ने JSON फ़ॉर्मैट में जनरेट किया है.

इससे, रिमोट फ़ंक्शन लागू करने की जांच पूरी हो जाती है.

7. फ़ायदे और इस्तेमाल के उदाहरण

आइए, स्ट्रक्चर्ड और अनस्ट्रक्चर्ड डेटा के विश्लेषण के लिए, BigQuery और Gemini को इंटिग्रेट करने के कुछ फ़ायदों के बारे में जानते हैं.

  • अपने डेटा के साथ GenAI का इस्तेमाल करना: अब डेटा को इधर-उधर ले जाने, डुप्लीकेट करने, और जटिलता बढ़ाने की ज़रूरत नहीं है. BigQuery के एक ही एनवायरमेंट में, डेटा का विश्लेषण किया जा सकता है और अहम जानकारी जनरेट की जा सकती है.
  • बेहतर विश्लेषण: Gemini की नैचुरल लैंग्वेज में दी गई जानकारी से, आपको अपने डेटा को बेहतर तरीके से समझने में मदद मिलती है. इसके लिए, एसक्यूएल क्वेरी का इस्तेमाल किया जा सकता है.
  • स्केलेबिलिटी: यह समाधान, बड़े डेटासेट और जटिल विश्लेषण को आसानी से और कम कोड के साथ मैनेज करता है.

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

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

इस पोस्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
  3. डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
  4. अगर आपको अपना प्रोजेक्ट बनाए रखना है, तो ऊपर दिए गए चरणों को छोड़ दें. इसके बाद, Cloud Functions पर जाकर Cloud Function मिटाएं. इसके लिए, फ़ंक्शन की सूची में से उस फ़ंक्शन को चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.

9. बधाई हो

बधाई हो। BigQuery में Gemini के मॉडल इंटिग्रेट होने के बाद, अब सिर्फ़ डेटा का विश्लेषण नहीं किया जा सकता. अब डेटा को कहानी के तौर पर पेश किया जा सकता है. अपने डेटासेट में छिपी हुई नैरटिव जनरेट की जा सकती हैं. साथ ही, इनसाइट को समझने के तरीके में बदलाव किया जा सकता है. एक्सपेरिमेंट करना शुरू करें! इस तकनीक को अपने डेटासेट पर लागू करें और अपने डेटा में मौजूद अहम जानकारी खोजें. BigQuery, ऑब्जेक्ट टेबल ( बाहरी टेबल) में बिना स्ट्रक्चर वाले डेटा को सपोर्ट करता है. इसलिए, इमेज डेटा पर जनरेटिव इनसाइट बनाने के लिए, Gemini Pro Vision का इस्तेमाल करें. ज़्यादा जानकारी के लिए, Vertex AI, BigQuery के रिमोट फ़ंक्शन, और Cloud Functions के दस्तावेज़ देखें. इस प्रोजेक्ट के लिए, GitHub repo यहां दी गई है. हमें बताएं कि आपने इस लर्निंग का इस्तेमाल करके क्या बनाया!