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

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

इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी

subjectपिछली बार मार्च 10, 2025 को अपडेट किया गया
account_circleAlicia Williams ने लिखा

1. परिचय

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

3e75cd7cdc8ffcf6.jpeg

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

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

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

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

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

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

  • Google Cloud Console के बारे में बुनियादी जानकारी
  • BigQuery का इस्तेमाल करने का अनुभव होना फ़ायदेमंद है

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

  • एपीआई का इस्तेमाल करने के लिए, अपने एनवायरमेंट और खाते को कॉन्फ़िगर करने का तरीका
  • BigQuery में क्लाउड रिसॉर्स कनेक्शन बनाने का तरीका
  • मूवी पोस्टर की इमेज के लिए, 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 के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने के लिए, आपसे कोई शुल्क नहीं लिया जाएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है या प्रोजेक्ट को मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.

Cloud Shell शुरू करना

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

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 संसाधन कनेक्शन बनाना

इस टास्क में, आपको Cloud रिसॉर्स कनेक्शन बनाना होगा. इससे 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. कनेक्शन के सेवा खाते को आईएएम अनुमतियां देना

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

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

55ed0ac6cd92aa1e.png

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

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

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

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

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

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

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

9a787006017d5b47.png

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

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

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

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

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

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

  1. नई SQL क्वेरी बनाने के लिए, + पर क्लिक करें.
  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. क्वेरी चलाएं. इसका नतीजा, gemini_demo डेटासेट में जोड़ी गई movie_posters ऑब्जेक्ट टेबल है. साथ ही, यह हर फ़िल्म के पोस्टर की इमेज के URI (Cloud Storage की जगह) के साथ लोड होती है.
  2. एक्सप्लोरर में, movie_posters पर क्लिक करें और स्कीमा और जानकारी देखें. किसी खास रिकॉर्ड की समीक्षा करने के लिए, टेबल में क्वेरी डालें.

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

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

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

  1. नई SQL क्वेरी बनाने के लिए, + पर क्लिक करें.
  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. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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. अब नतीजे देखें. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
SELECT * FROM `gemini_demo.movie_posters_results`

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

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

  1. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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 फ़्लैश मॉडल जैसे एलएलएम मॉडल के लिए सबसे सही है.

  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. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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 से फ़िल्मों के सबसेट के लिए एम्बेड बनाना होगा. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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. यहां दिए गए SQL स्टेटमेंट का इस्तेमाल करके, नई क्वेरी बनाएं और चलाएं:
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 में क्लाउड रिसॉर्स कनेक्शन बनाने का तरीका
  • मूवी पोस्टर की इमेज के लिए, BigQuery में डेटासेट और ऑब्जेक्ट टेबल बनाने का तरीका
  • BigQuery में Gemini के रिमोट मॉडल बनाने का तरीका
  • Gemini मॉडल को हर पोस्टर के लिए, फ़िल्म की खास जानकारी देने के लिए कहने का तरीका
  • हर पोस्टर में दिखाई गई फ़िल्म के लिए टेक्स्ट एम्बेड जनरेट करने का तरीका
  • डेटासेट में, मिलती-जुलती फ़िल्मों के पोस्टर की इमेज को मैच करने के लिए, BigQuery VECTOR_SEARCH का इस्तेमाल करने का तरीका

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

11. सर्वे

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