দূরবর্তী মডেলের সাথে BigQuery-এ মুভির পোস্টার বিশ্লেষণ করা হচ্ছে

1. ভূমিকা

এই ল্যাবে, আপনি শিখবেন কিভাবে দূরবর্তী মডেলের ( জেমিনি মডেল ) সাথে অনুমানের জন্য BigQuery মেশিন লার্নিং ব্যবহার করতে হবে যাতে মুভির পোস্টার ইমেজ বিশ্লেষণ করা যায় এবং সরাসরি আপনার BigQuery ডেটা গুদামে পোস্টারের উপর ভিত্তি করে সিনেমার সারাংশ তৈরি করা যায়।

3e75cd7cdc8ffcf6.jpeg

উপরে ছবি: সিনেমার পোস্টার ইমেজগুলির একটি নমুনা আপনি বিশ্লেষণ করবেন।

BigQuery হল একটি সম্পূর্ণরূপে পরিচালিত, AI-রেডি ডেটা অ্যানালিটিক্স প্ল্যাটফর্ম যা আপনাকে আপনার ডেটা থেকে সর্বোচ্চ মূল্য দিতে সাহায্য করে এবং এটি মাল্টি-ইঞ্জিন, মাল্টি-ফরম্যাট এবং মাল্টি-ক্লাউডের জন্য ডিজাইন করা হয়েছে। এর অন্যতম প্রধান বৈশিষ্ট্য হল অনুমানের জন্য BigQuery মেশিন লার্নিং , যা আপনাকে GoogleSQL ক্যোয়ারী ব্যবহার করে মেশিন লার্নিং (ML) মডেল তৈরি এবং চালাতে দেয়।

Gemini হল Google দ্বারা বিকশিত জেনারেটিভ এআই মডেলের একটি পরিবার যা মাল্টিমোডাল ব্যবহারের ক্ষেত্রে ডিজাইন করা হয়েছে।

GoogleSQL ক্যোয়ারী ব্যবহার করে ML মডেল চালানো

সাধারণত, বড় ডেটাসেটে এমএল বা কৃত্রিম বুদ্ধিমত্তা (এআই) সম্পাদন করার জন্য এমএল ফ্রেমওয়ার্কের ব্যাপক প্রোগ্রামিং এবং জ্ঞানের প্রয়োজন হয়। এটি প্রতিটি কোম্পানির মধ্যে বিশেষজ্ঞদের একটি ছোট গ্রুপের সমাধানের বিকাশকে সীমাবদ্ধ করে। অনুমানের জন্য BigQuery মেশিন লার্নিং এর সাথে, SQL অনুশীলনকারীরা মডেল তৈরি করতে বিদ্যমান SQL টুল এবং দক্ষতা ব্যবহার করতে পারে এবং LLM এবং ক্লাউড AI API থেকে ফলাফল তৈরি করতে পারে।

পূর্বশর্ত

আপনি কি শিখবেন

  • APIs ব্যবহার করার জন্য কিভাবে আপনার পরিবেশ এবং অ্যাকাউন্ট কনফিগার করবেন
  • BigQuery-এ কীভাবে ক্লাউড রিসোর্স কানেকশন তৈরি করবেন
  • কিভাবে মুভি পোস্টার ইমেজ জন্য BigQuery-এ একটি ডেটাসেট এবং অবজেক্ট টেবিল তৈরি করবেন
  • BigQuery-এ জেমিনি রিমোট মডেল কীভাবে তৈরি করবেন
  • মিথুন মডেলকে কীভাবে প্রতিটি পোস্টারের জন্য মুভির সারাংশ প্রদান করতে বলা যায়
  • প্রতিটি পোস্টারে উপস্থাপিত চলচ্চিত্রের জন্য কীভাবে পাঠ্য এম্বেডিং তৈরি করবেন
  • কিভাবে BigQuery VECTOR_SEARCH ব্যবহার করবেন মুভির পোস্টার ইমেজগুলিকে ডেটাসেটে ঘনিষ্ঠভাবে সম্পর্কিত মুভিগুলির সাথে মেলাতে

আপনি কি প্রয়োজন হবে

  • বিলিং সক্ষম সহ একটি Google ক্লাউড অ্যাকাউন্ট এবং Google ক্লাউড প্রকল্প৷
  • একটি ওয়েব ব্রাউজার যেমন ক্রোম

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

55efc1aaa7a4d3ad.png

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:

7ffe5cbb04455448.png

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারে করা যেতে পারে। আপনার কিছু ইন্সটল করার দরকার নেই।

3. আপনি শুরু করার আগে

BigQuery-এ জেমিনি মডেলগুলির সাথে কাজ করার জন্য কয়েকটি সেটআপ ধাপ রয়েছে, যার মধ্যে API সক্রিয় করা, একটি ক্লাউড রিসোর্স সংযোগ তৈরি করা এবং ক্লাউড রিসোর্স সংযোগের জন্য পরিষেবা অ্যাকাউন্টকে নির্দিষ্ট অনুমতি দেওয়া। এই পদক্ষেপগুলি প্রতি প্রকল্পের জন্য এককালীন, এবং পরবর্তী কয়েকটি বিভাগে কভার করা হবে৷

এপিআই সক্ষম করুন

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্প আইডি সেটআপ করা আছে:

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. একটি ক্লাউড রিসোর্স সংযোগ তৈরি করুন৷

এই কাজটিতে, আপনি একটি ক্লাউড রিসোর্স সংযোগ তৈরি করবেন, যা BigQuery-কে ক্লাউড স্টোরেজে ইমেজ ফাইল অ্যাক্সেস করতে এবং Vertex AI-তে কল করতে সক্ষম করে।

  1. Google ক্লাউড কনসোলে, নেভিগেশন মেনুতে ( নেভিগেশন মেনু আইকন ), BigQuery এ ক্লিক করুন।

68ddff3628a55957.png

  1. একটি সংযোগ তৈরি করতে, + ADD-এ ক্লিক করুন এবং তারপরে বাহ্যিক ডেটা উত্সগুলিতে সংযোগগুলিতে ক্লিক করুন।

8b70fdd209f540b6.png

  1. সংযোগ প্রকারের তালিকায়, Vertex AI রিমোট মডেল, দূরবর্তী ফাংশন এবং BigLake (ক্লাউড রিসোর্স) নির্বাচন করুন।
  2. সংযোগ আইডি ক্ষেত্রে, আপনার সংযোগের জন্য gemini_conn লিখুন।
  3. অবস্থানের প্রকারের জন্য, বহু-অঞ্চল নির্বাচন করুন এবং তারপরে, ড্রপডাউন থেকে মার্কিন বহু-অঞ্চল নির্বাচন করুন।
  4. অন্যান্য সেটিংসের জন্য ডিফল্ট ব্যবহার করুন।

deb25a1dd65ee9dd.png

  1. সংযোগ তৈরি করুন ক্লিক করুন।
  2. সংযোগে যান ক্লিক করুন।
  3. সংযোগ তথ্য ফলকে, পরবর্তী টাস্কে ব্যবহারের জন্য একটি পাঠ্য ফাইলে পরিষেবা অ্যাকাউন্ট আইডি অনুলিপি করুন। আপনি আরও দেখতে পাবেন যে BigQuery এক্সপ্লোরারে আপনার প্রকল্পের বহিরাগত সংযোগ বিভাগের অধীনে সংযোগটি যোগ করা হয়েছে।

5. সংযোগের পরিষেবা অ্যাকাউন্টে IAM অনুমতি দিন৷

এই টাস্কে, আপনি ক্লাউড রিসোর্স সংযোগের পরিষেবা অ্যাকাউন্ট IAM অনুমতিগুলি মঞ্জুর করেন, একটি ভূমিকার মাধ্যমে, এটিকে Vertex AI পরিষেবাগুলি অ্যাক্সেস করতে সক্ষম করতে৷

  1. Google ক্লাউড কনসোলে, নেভিগেশন মেনুতে , IAM এবং Admin-এ ক্লিক করুন।
  2. গ্রান্ট অ্যাক্সেস ক্লিক করুন।
  3. নতুন প্রিন্সিপাল ক্ষেত্রে, পরিষেবা অ্যাকাউন্ট আইডি লিখুন যা আপনি আগে কপি করেছেন।
  4. একটি ভূমিকা নির্বাচন করুন ক্ষেত্রে, Vertex AI লিখুন এবং তারপরে Vertex AI ব্যবহারকারীর ভূমিকা নির্বাচন করুন।

55ed0ac6cd92aa1e.png

  1. Save এ ক্লিক করুন। ফলাফল হল পরিষেবা অ্যাকাউন্ট আইডিতে এখন Vertex AI ব্যবহারকারীর ভূমিকা অন্তর্ভুক্ত রয়েছে।

6. মুভি পোস্টার ইমেজের জন্য BigQuery-এ ডেটাসেট এবং অবজেক্ট টেবিল তৈরি করুন

এই টাস্কে, আপনি প্রোজেক্টের জন্য একটি ডেটাসেট তৈরি করবেন এবং পোস্টার ইমেজগুলি সংরক্ষণ করার জন্য এটির মধ্যে একটি অবজেক্ট টেবিল তৈরি করবেন।

এই টিউটোরিয়ালে ব্যবহৃত চলচ্চিত্রের পোস্টার চিত্রগুলির ডেটাসেট একটি সর্বজনীন Google ক্লাউড স্টোরেজ বালতিতে সংরক্ষণ করা হয়েছে: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

একটি ডেটাসেট তৈরি করুন

আপনি এই টিউটোরিয়ালে ব্যবহৃত টেবিল এবং মডেল সহ ডাটাবেস অবজেক্ট সংরক্ষণ করার জন্য একটি ডেটাসেট তৈরি করবেন।

  1. Google ক্লাউড কনসোলে, নেভিগেশন মেনু নির্বাচন করুন ( নেভিগেশন মেনু আইকন ), এবং তারপর BigQuery নির্বাচন করুন।
  2. এক্সপ্লোরার প্যানেলে, আপনার প্রকল্পের নামের পাশে, কর্ম দেখুন ( আরও মেনু আইকন ), এবং তারপর ডেটাসেট তৈরি করুন নির্বাচন করুন।
  3. ডেটাসেট তৈরি করুন প্যানে, নিম্নলিখিত তথ্য লিখুন:
  • ডেটাসেট আইডি: gemini_demo
  • অবস্থানের ধরন: বহু-অঞ্চল নির্বাচন করুন
  • বহু-অঞ্চল: মার্কিন নির্বাচন করুন
  1. অন্যান্য ক্ষেত্রগুলিকে তাদের ডিফল্টে ছেড়ে দিন।

9a787006017d5b47.png

  1. ডেটাসেট তৈরি করুন ক্লিক করুন।

ফলাফল হল gemini_demo ডেটাসেট তৈরি করা হয়েছে এবং BigQuery এক্সপ্লোরারে আপনার প্রোজেক্টের নিচে তালিকাভুক্ত করা হয়েছে।

অবজেক্ট টেবিল তৈরি করুন

BigQuery শুধুমাত্র স্ট্রাকচার্ড ডেটাই ধারণ করে না, এটি অবজেক্ট টেবিলের মাধ্যমে অসংগঠিত ডেটা (যেমন পোস্টার ইমেজ) অ্যাক্সেস করতে পারে।

আপনি একটি ক্লাউড স্টোরেজ বালতিতে নির্দেশ করে একটি অবজেক্ট টেবিল তৈরি করেন এবং ফলস্বরূপ অবজেক্ট টেবিলে বালতি থেকে প্রতিটি বস্তুর জন্য একটি সারি থাকে যার স্টোরেজ পাথ এবং মেটাডেটা থাকে।

অবজেক্ট টেবিল তৈরি করতে আপনি একটি SQL ক্যোয়ারী ব্যবহার করবেন।

  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 (ক্লাউড স্টোরেজ লোকেশন) দিয়ে লোড করা হয়েছে।
  2. এক্সপ্লোরারে, movie_posters ক্লিক করুন এবং স্কিমা এবং বিশদ পর্যালোচনা করুন। নির্দিষ্ট রেকর্ড পর্যালোচনা করার জন্য টেবিলে প্রশ্ন করতে বিনা দ্বিধায়।

7. BigQuery-এ Gemini রিমোট মডেল তৈরি করুন

এখন অবজেক্ট টেবিল তৈরি হয়েছে, আপনি এটির সাথে কাজ শুরু করতে পারেন। এই কাজটিতে, আপনি Gemini 1.5 Flash এর জন্য একটি দূরবর্তী মডেল তৈরি করবেন যাতে এটি BigQuery-এ উপলব্ধ করা যায়।

জেমিনি 1.5 ফ্ল্যাশ রিমোট মডেল তৈরি করুন

  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. প্রতিটি পোস্টারের জন্য মুভির সারাংশ প্রদান করতে মিথুন মডেলকে অনুরোধ করুন

এই কাজটিতে, আপনি মুভির পোস্টার ইমেজ বিশ্লেষণ করতে এবং প্রতিটি মুভির সারাংশ তৈরি করতে আপনার তৈরি করা জেমিনি রিমোট মডেলটি ব্যবহার করবেন।

আপনি ML.GENERATE_TEXT ফাংশন ব্যবহার করে মডেলটিতে অনুরোধ পাঠাতে পারেন, প্যারামিটারে মডেলটিকে উল্লেখ করে৷

জেমিনি 1.5 ফ্ল্যাশ মডেল সহ চিত্রগুলি বিশ্লেষণ করুন

  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 নির্দিষ্ট স্ট্যাটিক প্রম্পটের সাথে ইমেজকে একত্রিত করে অবজেক্ট টেবিলের প্রতিটি সারির জন্য জেমিনি মডেলকে প্রম্পট করে। ফলে movie_posters_results টেবিল তৈরি হয়।

  1. এবার ফলাফল দেখা যাক। নিম্নলিখিত SQL বিবৃতি দিয়ে একটি নতুন ক্যোয়ারী তৈরি করুন এবং চালান:
SELECT * FROM `gemini_demo.movie_posters_results`

ফলাফল হল URI (মুভির পোস্টার ইমেজের ক্লাউড স্টোরেজ লোকেশন) সহ প্রতিটি মুভির পোস্টারের সারি এবং মুভির শিরোনাম এবং জেমিনি 1.5 ফ্ল্যাশ মডেল থেকে মুভিটি যে বছর রিলিজ হয়েছিল সেই বছর সহ একটি JSON ফলাফল।

আপনি পরবর্তী ক্যোয়ারী ব্যবহার করে এই ফলাফলগুলি আরও মানব পাঠযোগ্য উপায়ে পুনরুদ্ধার করতে পারেন। এই ক্যোয়ারীটি নতুন কলামে এই প্রতিক্রিয়াগুলি থেকে মুভির শিরোনাম এবং প্রকাশের বছর বের করতে 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 কলামে রূপান্তরিত হয়।

মুভির সারাংশ প্রদান করতে জেমিনি 1.5 ফ্ল্যাশ মডেলকে প্রম্পট করুন

আপনি যদি এই সিনেমাগুলির প্রতিটি সম্পর্কে আরও কিছু তথ্য চান, তাহলে প্রতিটি চলচ্চিত্রের একটি পাঠ্য সারাংশ বলুন? এই কন্টেন্ট জেনারেশন ইউজ কেস একটি এলএলএম মডেল যেমন জেমিনি 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 পাবলিক ডেটাসেটে দর্শকদের রেটিং এবং কিছু নমুনা ফ্রিফর্ম ব্যবহারকারীর পর্যালোচনা সহ সিনেমা সম্পর্কে প্রচুর তথ্য রয়েছে। এই ডেটা আপনাকে সিনেমার পোস্টারগুলির বিশ্লেষণকে আরও গভীর করতে এবং এই সিনেমাগুলিকে কীভাবে অনুভূত হয়েছিল তা বুঝতে সাহায্য করতে পারে।

তথ্য যোগ করার জন্য, আপনার একটি কী প্রয়োজন হবে। এই ক্ষেত্রে, জেমিনি মডেল দ্বারা তৈরি সিনেমার শিরোনামগুলি IMDB ডেটাসেটের শিরোনামগুলির সাথে পুরোপুরি মিল নাও হতে পারে৷

এই টাস্কে, আপনি উভয় ডেটাসেট থেকে মুভির শিরোনাম এবং বছরগুলির পাঠ্য এম্বেডিং তৈরি করবেন এবং তারপরে আপনার নতুন তৈরি ডেটাসেট থেকে মুভি পোস্টার শিরোনামগুলির সাথে নিকটতম IMDB শিরোনামে যোগ দিতে এই এমবেডিংয়ের মধ্যে দূরত্ব ব্যবহার করবেন।

দূরবর্তী মডেল তৈরি করুন

পাঠ্য এমবেডিং তৈরি করতে, আপনাকে পাঠ্য-বহুভাষিক-এমবেডিং-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)));

ফলাফল হল gemini_demo.movie_posters_results_formatted টেবিলের প্রতিটি সারির জন্য সংযুক্ত টেক্সট বিষয়বস্তুর জন্য এম্বেডিং সমন্বিত movie_poster_results_embeddings টেবিল তৈরি করা হয়েছে।

  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)

ফলাফল হল একটি নতুন ভিউ যাতে 1935 সালের আগে প্রকাশিত ডেটাসেটের সমস্ত মুভিগুলির জন্য bigquery-public-data.imdb.reviews টেবিল থেকে আলাদা মুভি আইডি, শিরোনাম এবং মুক্তির বছরগুলির একটি তালিকা রয়েছে৷

  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');

gemini_demo.movie_posters_results_embeddings টেবিলের প্রতিটি সারির জন্য gemini_demo.imdb_movies_embeddings টেবিলে নিকটতম প্রতিবেশী খুঁজে পেতে ক্যোয়ারীটি VECTOR_SEARCH ফাংশন ব্যবহার করে। কোসাইন দূরত্ব মেট্রিক ব্যবহার করে নিকটতম প্রতিবেশী পাওয়া যায়, যা নির্ধারণ করে যে দুটি এম্বেডিং কতটা একই রকম।

এই ক্যোয়ারীটি সিনেমার পোস্টারে জেমিনি 1.5 ফ্ল্যাশ দ্বারা চিহ্নিত প্রতিটি মুভির জন্য IMDB ডেটাসেটে সবচেয়ে অনুরূপ মুভি খুঁজে পেতে ব্যবহার করা যেতে পারে। উদাহরণ স্বরূপ, আপনি "Au Secours!" সিনেমার সবচেয়ে কাছের মিল খুঁজে পেতে এই ক্যোয়ারীটি ব্যবহার করতে পারেন। IMDB পাবলিক ডেটাসেটে, যা এই মুভিটিকে এর ইংরেজি-ভাষা শিরোনাম, "হেল্প!" দ্বারা উল্লেখ করে।

  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

এই ক্যোয়ারীটি আগের কোয়েরির মতই। এটি এখনও একটি প্রদত্ত মুভি পোস্টারের অনুরূপ চলচ্চিত্রগুলি খুঁজে পেতে ভেক্টর এম্বেডিং নামে বিশেষ সংখ্যাসূচক উপস্থাপনা ব্যবহার করে। যাইহোক, এটি আইএমডিবি পাবলিক ডেটাসেট থেকে একটি পৃথক টেবিল থেকে প্রতিটি নিকটতম প্রতিবেশী চলচ্চিত্রের গড় রেটিং এবং ভোটের সংখ্যাতেও যোগ দেয়।

10. অভিনন্দন

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন। আপনি BigQuery-এ আপনার পোস্টার ইমেজগুলির জন্য সফলভাবে একটি অবজেক্ট টেবিল তৈরি করেছেন, একটি দূরবর্তী জেমিনি মডেল তৈরি করেছেন, জেমিনি মডেলকে ছবি বিশ্লেষণ করার জন্য মডেলটি ব্যবহার করেছেন এবং মুভির সারাংশ প্রদান করেছেন, সিনেমার শিরোনামের জন্য টেক্সট এম্বেডিং তৈরি করেছেন এবং IMDB ডেটাসেটে সংশ্লিষ্ট সিনেমার শিরোনামের সাথে মুভি পোস্টার ছবিগুলিকে মেলানোর জন্য সেই এম্বেডিংগুলি ব্যবহার করেছেন৷

আমরা কভার করেছি কি

  • APIs ব্যবহার করার জন্য কিভাবে আপনার পরিবেশ এবং অ্যাকাউন্ট কনফিগার করবেন
  • BigQuery-এ কীভাবে ক্লাউড রিসোর্স কানেকশন তৈরি করবেন
  • কিভাবে মুভি পোস্টার ইমেজ জন্য BigQuery-এ একটি ডেটাসেট এবং অবজেক্ট টেবিল তৈরি করবেন
  • BigQuery-এ জেমিনি রিমোট মডেল কীভাবে তৈরি করবেন
  • মিথুন মডেলকে কীভাবে প্রতিটি পোস্টারের জন্য মুভির সারাংশ প্রদান করতে বলা যায়
  • প্রতিটি পোস্টারে উপস্থাপিত চলচ্চিত্রের জন্য কীভাবে পাঠ্য এম্বেডিং তৈরি করবেন
  • কিভাবে BigQuery VECTOR_SEARCH ব্যবহার করবেন মুভির পোস্টার ইমেজগুলিকে ডেটাসেটে ঘনিষ্ঠভাবে সম্পর্কিত মুভিগুলির সাথে মেলাতে

পরবর্তী পদক্ষেপ / আরও জানুন

11. সমীক্ষা

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র এটি মাধ্যমে পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন