रिमोट मॉडल की मदद से, BigQuery में फ़िल्म के पोस्टर का विश्लेषण करना

1. परिचय

इस लैब में, आपको यह तरीका सिखाया जाएगा कि रिमोट मॉडल ( Gemini मॉडल) के साथ अनुमान लगाने के लिए, BigQuery Machine Learning का इस्तेमाल कैसे किया जाता है. इससे, फ़िल्म के पोस्टर की इमेज का विश्लेषण किया जा सकता है. साथ ही, फ़िल्म के पोस्टर के आधार पर, सीधे अपने BigQuery डेटा वेयरहाउस में फ़िल्मों के बारे में खास जानकारी जनरेट की जा सकती है.

3e75cd7cdc8ffcf6.jpeg

ऊपर दी गई इमेज में, मूवी पोस्टर की उन इमेज का सैंपल दिखाया गया है जिनका आपको विश्लेषण करना है.

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

Gemini, Google के बनाए गए जनरेटिव एआई मॉडल का एक परिवार है. इसे मल्टीमॉडल इस्तेमाल के लिए डिज़ाइन किया गया है.

GoogleSQL क्वेरी का इस्तेमाल करके मशीन लर्निंग मॉडल चलाना

आम तौर पर, बड़े डेटासेट पर एमएल या आर्टिफ़िशियल इंटेलिजेंस (एआई) का इस्तेमाल करने के लिए, बड़े पैमाने पर प्रोग्रामिंग और एमएल फ़्रेमवर्क की जानकारी की ज़रूरत होती है. इससे, हर कंपनी में विशेषज्ञों के एक छोटे ग्रुप को ही समाधान तैयार करने का मौका मिलता है. BigQuery Machine Learning की मदद से, एसक्यूएल का इस्तेमाल करने वाले लोग अनुमान लगाने के लिए मॉडल बना सकते हैं. इसके लिए, वे अपने मौजूदा एसक्यूएल टूल और कौशल का इस्तेमाल कर सकते हैं. साथ ही, एलएलएम और Cloud AI API से नतीजे जनरेट कर सकते हैं.

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

  • Google Cloud Console के बारे में बुनियादी जानकारी
  • BigQuery का अनुभव होना ज़रूरी है

आपको क्या सीखने को मिलेगा

  • एपीआई इस्तेमाल करने के लिए, अपने एनवायरमेंट और खाते को कॉन्फ़िगर करने का तरीका
  • BigQuery में Cloud Resource कनेक्शन बनाने का तरीका
  • फ़िल्म के पोस्टर की इमेज के लिए, BigQuery में डेटासेट और ऑब्जेक्ट टेबल कैसे बनाएं
  • BigQuery में Gemini के रिमोट मॉडल बनाने का तरीका
  • हर पोस्टर के लिए, फ़िल्म की खास जानकारी देने के लिए Gemini मॉडल को प्रॉम्प्ट कैसे करें
  • हर पोस्टर में दिखाई गई फ़िल्म के लिए, टेक्स्ट एम्बेडिंग जनरेट करने का तरीका
  • डेटासेट में मौजूद फ़िल्मों से मिलते-जुलते पोस्टर की इमेज का मिलान करने के लिए, BigQuery VECTOR_SEARCH का इस्तेमाल कैसे करें

आपको इन चीज़ों की ज़रूरत होगी

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

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग को अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ताओं को, 300 डॉलर का क्रेडिट मिलेगा. वे इसे मुफ़्त में आज़मा सकते हैं.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

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

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

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

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो:

gcloud config set project [YOUR-PROJECT-ID]

एनवायरमेंट वैरिएबल PROJECT_ID सेट करें:

PROJECT_ID=$(gcloud config get-value project)

Vertex AI मॉडल के लिए, डिफ़ॉल्ट क्षेत्र कॉन्फ़िगर करें. Vertex AI की सुविधा देने वाले देशों/इलाकों के बारे में ज़्यादा पढ़ें. इस उदाहरण में, हम us-central1 क्षेत्र का इस्तेमाल कर रहे हैं.

gcloud config set compute/region us-central1

एनवायरमेंट वैरिएबल REGION सेट करें:

REGION=$(gcloud config get-value compute/region)

सभी ज़रूरी सेवाएं चालू करें:

gcloud services enable bigqueryconnection.googleapis.com \
                       aiplatform.googleapis.com

ऊपर दिए गए सभी निर्देश चलाने के बाद, अनुमानित आउटपुट:

student@cloudshell:~ (test-project-001-402417)$ gcloud config set project test-project-001-402417
Updated property [core/project].
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$ 
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable bigqueryconnection.googleapis.com \
                       aiplatform.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.

4. Cloud Resource कनेक्शन बनाना

इस टास्क में, आपको Cloud Resource कनेक्शन बनाना होगा. इससे BigQuery को Cloud Storage में मौजूद इमेज फ़ाइलों को ऐक्सेस करने और Vertex AI को कॉल करने की अनुमति मिलती है.

  1. Google Cloud Console में, नेविगेशन मेन्यू ( नेविगेशन मेन्यू का आइकॉन) पर जाकर, BigQuery पर क्लिक करें.

68ddff3628a55957.png

  1. कनेक्शन बनाने के लिए, + जोड़ें पर क्लिक करें. इसके बाद, बाहरी डेटा सोर्स से कनेक्शन पर क्लिक करें.

8b70fdd209f540b6.png

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

deb25a1dd65ee9dd.png

  1. कनेक्शन बनाएं पर क्लिक करें.
  2. कनेक्शन पर जाएं पर क्लिक करें.
  3. 'कनेक्शन की जानकारी' पैनल में, सेवा खाते के आईडी को टेक्स्ट फ़ाइल में कॉपी करें, ताकि इसका इस्तेमाल अगले टास्क में किया जा सके. आपको यह भी दिखेगा कि BigQuery एक्सप्लोरर में, आपके प्रोजेक्ट के बाहरी कनेक्शन सेक्शन में कनेक्शन जोड़ दिया गया है.

5. कनेक्शन के सेवा खाते को IAM अनुमतियां देना

इस टास्क में, Cloud Resource connection के सेवा खाते को आईएएम अनुमतियां दी जाती हैं. इसके लिए, भूमिका का इस्तेमाल किया जाता है, ताकि वह Vertex AI सेवाओं को ऐक्सेस कर सके.

  1. Google Cloud Console में, नेविगेशन मेन्यू पर जाकर, आईएएम और एडमिन पर क्लिक करें.
  2. ऐक्सेस दें पर क्लिक करें.
  3. नए प्रिंसिपल फ़ील्ड में, सेवा खाते का वह आईडी डालें जिसे आपने पहले कॉपी किया था.
  4. 'भूमिका चुनें' फ़ील्ड में, Vertex AI डालें. इसके बाद, Vertex AI उपयोगकर्ता की भूमिका चुनें.

55ed0ac6cd92aa1e.png

  1. सेव करें पर क्लिक करें. नतीजे में, सेवा खाते के आईडी में अब Vertex AI User की भूमिका शामिल है.

6. फ़िल्म के पोस्टर की इमेज के लिए, BigQuery में डेटासेट और ऑब्जेक्ट टेबल बनाना

इस टास्क में, आपको प्रोजेक्ट के लिए एक डेटासेट और उसमें एक ऑब्जेक्ट टेबल बनानी होगी, ताकि पोस्टर इमेज सेव की जा सकें.

इस ट्यूटोरियल में इस्तेमाल की गई फ़िल्म के पोस्टर की इमेज का डेटासेट, Google Cloud Storage की सार्वजनिक बकेट में सेव किया जाता है: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

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

इस ट्यूटोरियल में इस्तेमाल किए गए डेटाबेस ऑब्जेक्ट को सेव करने के लिए, आपको डेटासेट बनाना होगा. इनमें टेबल और मॉडल शामिल हैं.

  1. Google Cloud Console में, नेविगेशन मेन्यू ( नेविगेशन मेन्यू का आइकॉन) को चुनें. इसके बाद, BigQuery को चुनें.
  2. एक्सप्लोरर पैनल में, अपने प्रोजेक्ट के नाम के बगल में मौजूद, कार्रवाइयां देखें ( ज़्यादा मेन्यू आइकॉन) को चुनें. इसके बाद, डेटासेट बनाएं को चुनें.
  3. डेटासेट बनाएं पैनल में, यह जानकारी डालें:
  • डेटासेट आईडी: gemini_demo
  • जगह की स्थिति: एक से ज़्यादा क्षेत्र चुनें
  • एक से ज़्यादा क्षेत्र: अमेरिका चुनें
  1. अन्य फ़ील्ड को डिफ़ॉल्ट पर रहने दें.

9a787006017d5b47.png

  1. डेटासेट बनाएं पर क्लिक करें.

इसके बाद, gemini_demo डेटासेट बन जाता है और BigQuery Explorer में आपके प्रोजेक्ट के नीचे दिखता है.

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

BigQuery में सिर्फ़ स्ट्रक्चर्ड डेटा नहीं होता. यह ऑब्जेक्ट टेबल के ज़रिए, अनस्ट्रक्चर्ड डेटा (जैसे कि पोस्टर इमेज) को भी ऐक्सेस कर सकता है.

Cloud Storage बकेट की ओर पॉइंट करके, एक ऑब्जेक्ट टेबल बनाई जाती है. इससे बनने वाली ऑब्जेक्ट टेबल में, बकेट के हर ऑब्जेक्ट के लिए एक लाइन होती है. इसमें ऑब्जेक्ट का स्टोरेज पाथ और मेटाडेटा होता है.

ऑब्जेक्ट टेबल बनाने के लिए, एसक्यूएल क्वेरी का इस्तेमाल किया जाएगा.

  1. नई एसक्यूएल क्वेरी बनाएं के लिए, + पर क्लिक करें.
  2. क्वेरी एडिटर में, नीचे दी गई क्वेरी चिपकाएं.
CREATE OR REPLACE EXTERNAL TABLE
  `gemini_demo.movie_posters`
WITH CONNECTION `us.gemini_conn`
OPTIONS (
  object_metadata = 'SIMPLE',
  uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']
  );
  1. क्वेरी चलाएं. इसके बाद, movie_posters ऑब्जेक्ट टेबल को gemini_demo डेटासेट में जोड़ दिया जाता है. साथ ही, हर फ़िल्म के पोस्टर की इमेज के URI (Cloud Storage की लोकेशन) को लोड कर दिया जाता है.
  2. एक्सप्लोरर में, movie_posters पर क्लिक करें. इसके बाद, स्कीमा और जानकारी की समीक्षा करें. किसी खास रिकॉर्ड की समीक्षा करने के लिए, टेबल में क्वेरी करें.

7. BigQuery में Gemini रिमोट मॉडल बनाना

ऑब्जेक्ट टेबल बन गई है. अब इस पर काम किया जा सकता है. इस टास्क में, Gemini 1.5 Flash के लिए रिमोट मॉडल बनाया जाएगा, ताकि इसे BigQuery में उपलब्ध कराया जा सके.

Gemini 1.5 Flash का रिमोट मॉडल बनाना

  1. नई एसक्यूएल क्वेरी बनाएं के लिए, + पर क्लिक करें.
  2. क्वेरी एडिटर में, यहां दी गई क्वेरी चिपकाएं और उसे चलाएं.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')

इसके बाद, gemini_1_5_flash मॉडल बन जाता है और आपको यह gemini_demo डेटासेट के मॉडल सेक्शन में दिखता है.

  1. एक्सप्लोरर में, gemini_1_5_flash मॉडल पर क्लिक करें और जानकारी देखें.

8. Gemini मॉडल को हर पोस्टर के लिए फ़िल्म की खास जानकारी देने के लिए प्रॉम्प्ट करना

इस टास्क में, आपको अभी-अभी बनाए गए Gemini रिमोट मॉडल का इस्तेमाल करना होगा. इससे आपको फ़िल्म के पोस्टर की इमेज का विश्लेषण करने और हर फ़िल्म के लिए खास जानकारी जनरेट करने में मदद मिलेगी.

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

Gemini 1.5 Flash मॉडल की मदद से इमेज का विश्लेषण करना

  1. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results` AS (
SELECT
    uri,
    ml_generate_text_llm_result
FROM
    ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
    TABLE `gemini_demo.movie_posters`,
    STRUCT( 0.2 AS temperature,
        'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer. Do not use JSON decorators.' AS PROMPT,
        TRUE AS FLATTEN_JSON_OUTPUT)));

क्वेरी चलाने पर, BigQuery, ऑब्जेक्ट टेबल की हर लाइन के लिए Gemini मॉडल को प्रॉम्प्ट करता है. इसमें इमेज को तय किए गए स्टैटिक प्रॉम्प्ट के साथ जोड़ा जाता है. इसका नतीजा यह होता है कि movie_posters_results टेबल बन जाती है.

  1. अब नतीजे देखते हैं. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
SELECT * FROM `gemini_demo.movie_posters_results`

नतीजे में, हर फ़िल्म के पोस्टर के लिए पंक्तियां दिखती हैं. इनमें URI (फ़िल्म के पोस्टर की इमेज की Cloud Storage लोकेशन) और JSON फ़ॉर्मैट में नतीजा शामिल होता है. इसमें फ़िल्म का टाइटल और Gemini 1.5 Flash मॉडल से फ़िल्म के रिलीज़ होने का साल शामिल होता है.

अगली क्वेरी का इस्तेमाल करके, इन नतीजों को ज़्यादा आसानी से समझा जा सकता है. इस क्वेरी में SQL का इस्तेमाल किया गया है. इससे इन जवाबों से फ़िल्म का टाइटल और रिलीज़ होने का साल, नए कॉलम में डाला जाता है.

  1. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
CREATE OR REPLACE TABLE
  `gemini_demo.movie_posters_results_formatted` AS (
  SELECT
    uri,
    JSON_VALUE(ml_generate_text_llm_result, "$.title") AS title,
    JSON_VALUE(ml_generate_text_llm_result, "$.year") AS year
  FROM
    `gemini_demo.movie_posters_results` results )

इसका नतीजा यह होता है कि movie_posters_result_formatted टेबल बन जाती है.

  1. बनाई गई लाइनों को देखने के लिए, नीचे दी गई क्वेरी का इस्तेमाल करके टेबल से क्वेरी की जा सकती है.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

ध्यान दें कि URI कॉलम के नतीजे पहले जैसे ही हैं. हालांकि, अब हर लाइन के लिए JSON को title और year कॉलम में बदल दिया गया है.

Gemini 1.5 Flash मॉडल को फ़िल्मों की खास जानकारी देने के लिए प्रॉम्प्ट करना

अगर आपको इन फ़िल्मों के बारे में थोड़ी और जानकारी चाहिए, तो क्या किया जा सकता है? जैसे, हर फ़िल्म के बारे में टेक्स्ट में जानकारी. कॉन्टेंट जनरेट करने के इस तरीके का इस्तेमाल, Gemini 1.5 Flash जैसे एलएलएम मॉडल के लिए सबसे सही है.

  1. नीचे दी गई क्वेरी चलाकर, हर पोस्टर के लिए फ़िल्म की खास जानकारी पाने के लिए, Gemini 1.5 Flash का इस्तेमाल किया जा सकता है:
SELECT
  uri,
  title,
  year,
  prompt,
  ml_generate_text_llm_result
  FROM
 ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
   (
   SELECT
     CONCAT('Provide a short summary of movie titled ',title, ' from the year ',year,'.') AS prompt,
     uri,
     title,
     year
   FROM
     `gemini_demo.movie_posters_results_formatted`
   LIMIT
     20 ),
   STRUCT(0.2 AS temperature,
     TRUE AS FLATTEN_JSON_OUTPUT));     

नतीजों में मौजूद ml_generate_text_llm_result फ़ील्ड देखें. इसमें फ़िल्म के बारे में खास जानकारी शामिल होती है.

9. रिमोट मॉडल का इस्तेमाल करके टेक्स्ट एम्बेडिंग जनरेट करना

अब आपके पास, बनाए गए स्ट्रक्चर्ड डेटा को अपने वेयरहाउस में मौजूद अन्य स्ट्रक्चर्ड डेटा के साथ जोड़ने का विकल्प है. BigQuery में उपलब्ध IMDB के सार्वजनिक डेटासेट में, फिल्मों के बारे में काफ़ी जानकारी होती है. इसमें दर्शकों की रेटिंग और कुछ सैंपल के तौर पर, उपयोगकर्ताओं की फ़्रीफ़ॉर्म समीक्षाएं भी शामिल होती हैं. इस डेटा से, आपको फ़िल्म के पोस्टरों का बेहतर तरीके से विश्लेषण करने में मदद मिल सकती है. साथ ही, यह समझने में मदद मिल सकती है कि इन फ़िल्मों को कैसा रिस्पॉन्स मिला.

डेटा को जोड़ने के लिए, आपको एक कुंजी की ज़रूरत होगी. इस मामले में, ऐसा हो सकता है कि Gemini मॉडल से जनरेट किए गए फ़िल्म के टाइटल, IMDB डेटासेट में मौजूद टाइटल से पूरी तरह मेल न खाएं.

इस टास्क में, आपको दोनों डेटासेट से फ़िल्मों के टाइटल और रिलीज़ होने के साल के टेक्स्ट एम्बेडिंग जनरेट करने होंगे. इसके बाद, इन एम्बेडिंग के बीच की दूरी का इस्तेमाल करके, IMDB के सबसे मिलते-जुलते टाइटल को अपने नए बनाए गए डेटासेट में मौजूद फ़िल्म के पोस्टर के टाइटल से जोड़ना होगा.

रिमोट मॉडल बनाना

टेक्स्ट एम्बेडिंग जनरेट करने के लिए, आपको एक नया रिमोट मॉडल बनाना होगा. यह मॉडल, text-multilingual-embedding-002 एंडपॉइंट पर पॉइंट करेगा.

  1. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')

इसके बाद, text_embedding मॉडल बन जाता है और एक्सप्लोरर में gemini_demo डेटासेट के नीचे दिखता है.

पोस्टर से जुड़े टाइटल और साल के लिए टेक्स्ट एम्बेडिंग जनरेट करना

अब इस रिमोट मॉडल का इस्तेमाल, ML.GENERATE_EMBEDDING फ़ंक्शन के साथ किया जाएगा. इससे हर फ़िल्म के पोस्टर के टाइटल और रिलीज़ होने के साल के लिए, एम्बेडिंग बनाई जा सकेगी.

  1. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
CREATE OR REPLACE TABLE
  `gemini_demo.movie_posters_results_embeddings` AS (
  SELECT
    *
  FROM
    ML.GENERATE_EMBEDDING(
    MODEL `gemini_demo.text_embedding`,
    (
    SELECT
      CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
      title,
      year,
      uri
    FROM
      `gemini_demo.movie_posters_results_formatted` ),
    STRUCT(TRUE AS flatten_json_output)));

इसका नतीजा यह होता है कि movie_poster_results_embeddings टेबल बन जाती है. इसमें gemini_demo.movie_posters_results_formatted टेबल की हर लाइन के लिए, टेक्स्ट कॉन्टेंट के एम्बेडिंग होते हैं.

  1. यहां दी गई नई क्वेरी का इस्तेमाल करके, क्वेरी के नतीजे देखे जा सकते हैं:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

यहां आपको मॉडल से जनरेट की गई हर फ़िल्म के लिए एम्बेडिंग (नंबर से दिखाए गए वेक्टर) दिखती हैं.

IMDB डेटासेट के सबसेट के लिए टेक्स्ट एम्बेडिंग जनरेट करना

आपको सार्वजनिक IMDB डेटासेट से डेटा का एक नया व्यू बनाना होगा. इसमें सिर्फ़ वे फ़िल्में शामिल होंगी जो 1935 से पहले रिलीज़ हुई थीं. यह वह समय अवधि है जब पोस्टर इमेज से फ़िल्में रिलीज़ हुई थीं.

  1. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
CREATE OR REPLACE VIEW
  `gemini_demo.imdb_movies` AS (
  WITH
    reviews AS (
      SELECT
        reviews.movie_id AS movie_id,
        title.primary_title AS title,
        title.start_year AS year,
        reviews.review AS review
      FROM
        `bigquery-public-data.imdb.reviews` reviews
      LEFT JOIN
        `bigquery-public-data.imdb.title_basics` title
      ON
        reviews.movie_id = title.tconst)
  SELECT
    DISTINCT(movie_id),
    title,
    year
  FROM
    reviews
  WHERE
    year < 1935)

नतीजे के तौर पर, एक नया व्यू मिलता है. इसमें bigquery-public-data.imdb.reviews टेबल में मौजूद उन सभी फ़िल्मों के अलग-अलग आईडी, टाइटल, और रिलीज़ होने का साल शामिल होता है जो 1935 से पहले रिलीज़ हुई थीं.

  1. अब आपको IMDB से फ़िल्मों के सबसेट के लिए एम्बेडिंग बनानी होंगी. इसके लिए, आपको पिछले सेक्शन में बताई गई प्रोसेस का इस्तेमाल करना होगा. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
CREATE OR REPLACE TABLE
  `gemini_demo.imdb_movies_embeddings` AS (
  SELECT
    *
  FROM
    ML.GENERATE_EMBEDDING( MODEL `gemini_demo.text_embedding`,
      (
      SELECT
        CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
        title,
        year,
        movie_id
      FROM
        `gemini_demo.imdb_movies` ),
      STRUCT(TRUE AS flatten_json_output) )
  WHERE
    ml_generate_embedding_status = '' );

क्वेरी का नतीजा एक टेबल है. इसमें gemini_demo.imdb_movies टेबल के टेक्स्ट कॉन्टेंट के लिए एम्बेडिंग शामिल हैं.

अब VECTOR_SEARCH फ़ंक्शन का इस्तेमाल करके, दोनों टेबल को जोड़ा जा सकता है.

  1. यहां दिए गए एसक्यूएल स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
SELECT
  query.uri AS poster_uri,
  query.title AS poster_title,
  query.year AS poster_year,
  base.title AS imdb_title,
  base.year AS imdb_year,
  base.movie_id AS imdb_movie_id,
  distance
FROM
 VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
   'ml_generate_embedding_result',
   TABLE `gemini_demo.movie_posters_results_embeddings`,
   'ml_generate_embedding_result',
   top_k => 1,
   distance_type => 'COSINE');

क्वेरी में VECTOR_SEARCH फ़ंक्शन का इस्तेमाल किया गया है. इससे gemini_demo.movie_posters_results_embeddings टेबल की हर लाइन के लिए, gemini_demo.imdb_movies_embeddings टेबल में सबसे मिलता-जुलता डेटा ढूंढा जा सकता है. सबसे मिलते-जुलते दस्तावेज़ का पता लगाने के लिए, कोसाइन दूरी मेट्रिक का इस्तेमाल किया जाता है. इससे यह तय होता है कि दो एम्बेडिंग कितनी मिलती-जुलती हैं.

इस क्वेरी का इस्तेमाल करके, IMDB डेटासेट में मौजूद हर उस फ़िल्म के बारे में पता लगाया जा सकता है जो Gemini 1.5 Flash की पहचान की गई फ़िल्मों से मिलती-जुलती है. उदाहरण के लिए, इस क्वेरी का इस्तेमाल करके, IMDB के सार्वजनिक डेटासेट में "Au Secours!" फ़िल्म के सबसे मिलते-जुलते नतीजे खोजे जा सकते हैं. इस डेटासेट में, इस फ़िल्म का रेफ़रंस इसके अंग्रेज़ी भाषा के टाइटल, "Help!" के हिसाब से दिया गया है.

  1. IMDB के सार्वजनिक डेटासेट में दी गई फ़िल्म की रेटिंग के बारे में कुछ अतिरिक्त जानकारी जोड़ने के लिए, नई क्वेरी बनाएं और उसे चलाएं:
SELECT
  query.uri AS poster_uri,
  query.title AS poster_title,
  query.year AS poster_year,
  base.title AS imdb_title,
  base.year AS imdb_year,
  base.movie_id AS imdb_movie_id,
  distance,
  imdb.average_rating,
  imdb.num_votes
FROM
  VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
    'ml_generate_embedding_result',
    TABLE `gemini_demo.movie_posters_results_embeddings`,
    'ml_generate_embedding_result',
    top_k => 1,
    distance_type => 'COSINE') DATA
LEFT JOIN
  `bigquery-public-data.imdb.title_ratings` imdb
ON
  base.movie_id = imdb.tconst
ORDER BY
  imdb.average_rating DESC

यह क्वेरी, पिछली क्वेरी से मिलती-जुलती है. यह अब भी किसी फ़िल्म के पोस्टर से मिलती-जुलती फ़िल्मों को खोजने के लिए, वेक्टर एम्बेडिंग नाम के खास संख्यात्मक प्रजेंटेशन का इस्तेमाल करता है. हालांकि, यह IMDB के सार्वजनिक डेटासेट से अलग टेबल में मौजूद, सबसे मिलती-जुलती हर फ़िल्म के लिए औसत रेटिंग और वोटों की संख्या को भी जोड़ता है.

10. बधाई हो

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

हमने क्या-क्या बताया

  • एपीआई इस्तेमाल करने के लिए, अपने एनवायरमेंट और खाते को कॉन्फ़िगर करने का तरीका
  • BigQuery में Cloud Resource कनेक्शन बनाने का तरीका
  • फ़िल्म के पोस्टर की इमेज के लिए, BigQuery में डेटासेट और ऑब्जेक्ट टेबल कैसे बनाएं
  • BigQuery में Gemini के रिमोट मॉडल बनाने का तरीका
  • हर पोस्टर के लिए, फ़िल्म की खास जानकारी देने के लिए Gemini मॉडल को प्रॉम्प्ट कैसे करें
  • हर पोस्टर में दिखाई गई फ़िल्म के लिए, टेक्स्ट एम्बेडिंग जनरेट करने का तरीका
  • डेटासेट में मौजूद फ़िल्मों से मिलते-जुलते पोस्टर की इमेज का मिलान करने के लिए, BigQuery VECTOR_SEARCH का इस्तेमाल कैसे करें

अगले चरण / ज़्यादा जानें

11. सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें