১. ভূমিকা
এই কোডল্যাবটি AI অপারেটরসহ AlloyDB স্থাপন এবং সিমান্টিক সার্চ, জয়েন ও ফলাফল র্যাঙ্কিংয়ের মতো কাজে সেগুলো ব্যবহার করার একটি নির্দেশিকা প্রদান করে।
পূর্বশর্ত
- গুগল ক্লাউড, কনসোল সম্পর্কে প্রাথমিক ধারণা
- কমান্ড লাইন ইন্টারফেস এবং ক্লাউড শেলে প্রাথমিক দক্ষতা
আপনি যা শিখবেন
- AlloyDB ক্লাস্টার এবং প্রাইমারি ইনস্ট্যান্স কীভাবে স্থাপন করবেন
- AlloyDB AI অপারেটরদের কীভাবে সক্রিয় করবেন
- বিভিন্ন AlloyDB AI অপারেটর কীভাবে ব্যবহার করবেন
- AlloyDB AI অপারেটরগুলিতে ফলাফলের মান উন্নত করতে কীভাবে রির্যাঙ্কিং ব্যবহার করবেন
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড অ্যাকাউন্ট এবং গুগল ক্লাউড প্রজেক্ট
- ক্রোমের মতো একটি ওয়েব ব্রাউজার যা গুগল ক্লাউড কনসোল এবং ক্লাউড শেল সমর্থন করে।
২. সেটআপ এবং প্রয়োজনীয়তা
প্রজেক্ট সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে একটি তৈরি করতে হবে।
কর্মক্ষেত্র বা শিক্ষা প্রতিষ্ঠানের অ্যাকাউন্টের পরিবর্তে ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন।
- একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। গুগল ক্লাউড কনসোলে একটি নতুন প্রজেক্ট তৈরি করতে, হেডারে থাকা 'Select a project' বোতামটিতে ক্লিক করুন, যা একটি পপ-আপ উইন্ডো খুলবে।

'Select a project' উইন্ডোতে 'New Project' বোতামটি চাপুন, যা নতুন প্রজেক্টের জন্য একটি ডায়ালগ বক্স খুলবে।

ডায়ালগ বক্সে আপনার পছন্দের প্রজেক্টের নাম দিন এবং অবস্থান নির্বাচন করুন।

- প্রজেক্টের নামটি এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শিত নাম। প্রজেক্টের নামটি গুগল এপিআই দ্বারা ব্যবহৃত হয় না এবং এটি যেকোনো সময় পরিবর্তন করা যেতে পারে।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। গুগল ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য আইডি তৈরি করে, কিন্তু আপনি এটি কাস্টমাইজ করতে পারেন। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন অথবা সেটির প্রাপ্যতা যাচাই করার জন্য আপনার নিজের আইডি দিতে পারেন। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে, যা সাধারণত PROJECT_ID নামক প্লেসহোল্ডার দ্বারা চিহ্নিত করা হয়।
- আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
বিলিং সক্ষম করুন
বিলিং চালু করার জন্য আপনার কাছে দুটি বিকল্প আছে। আপনি হয় আপনার ব্যক্তিগত বিলিং অ্যাকাউন্ট ব্যবহার করতে পারেন অথবা নিম্নলিখিত ধাপগুলো অনুসরণ করে ক্রেডিট রিডিম করতে পারেন।
$5 গুগল ক্লাউড ক্রেডিট রিডিম করুন (ঐচ্ছিক)
এই কর্মশালাটি চালানোর জন্য আপনার একটি বিলিং অ্যাকাউন্ট প্রয়োজন, যাতে কিছু ব্যালেন্স আছে। আপনি যদি আপনার নিজস্ব বিলিং ব্যবহার করার পরিকল্পনা করেন, তবে এই ধাপটি বাদ দিতে পারেন।
- এই লিঙ্কে ক্লিক করুন এবং আপনার ব্যক্তিগত গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
- আপনি এইরকম কিছু দেখতে পাবেন:

- ‘আপনার ক্রেডিট অ্যাক্সেস করতে এখানে ক্লিক করুন ’ বোতামটিতে ক্লিক করুন। এটি আপনাকে আপনার বিলিং প্রোফাইল সেট আপ করার একটি পৃষ্ঠায় নিয়ে যাবে। যদি আপনার সামনে একটি ফ্রি ট্রায়াল সাইন আপ স্ক্রিন আসে, তাহলে বাতিল করুন এবং বিলিং লিঙ্ক করতে এগিয়ে যান।

- নিশ্চিত করুন-এ ক্লিক করুন। আপনি এখন একটি গুগল ক্লাউড প্ল্যাটফর্ম ট্রায়াল বিলিং অ্যাকাউন্টের সাথে সংযুক্ত হয়েছেন।

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট তৈরি করুন
আপনি যদি গুগল ক্লাউড ক্রেডিট ব্যবহার করে বিলিং সেট আপ করেন, তাহলে এই ধাপটি এড়িয়ে যেতে পারেন।
একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট তৈরি করতে, ক্লাউড কনসোলে বিলিং চালু করার জন্য এখানে যান ।
কিছু নোট:
- এই ল্যাবটি সম্পন্ন করতে ক্লাউড রিসোর্সে ৩ মার্কিন ডলারের কম খরচ হওয়া উচিত।
- পরবর্তী চার্জ এড়াতে, এই ল্যাবের শেষে দেওয়া ধাপগুলো অনুসরণ করে আপনি রিসোর্সগুলো মুছে ফেলতে পারেন।
- নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়ালের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।
গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

বিকল্পভাবে আপনি প্রথমে G এবং তারপর S চাপতে পারেন। আপনি যদি গুগল ক্লাউড কনসোলের মধ্যে থাকেন, তাহলে এই ক্রমটি ক্লাউড শেল সক্রিয় করবে অথবা এই লিঙ্কটি ব্যবহার করুন।
পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।
৩. শুরু করার আগে
এপিআই সক্ষম করুন
AlloyDB , Compute Engine , Networking services , এবং Vertex AI ব্যবহার করার জন্য, আপনাকে আপনার Google Cloud প্রজেক্টে এগুলোর নিজ নিজ API সক্রিয় করতে হবে।
ক্লাউড শেল টার্মিনালের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেটআপ করা আছে:
gcloud config set project [YOUR-PROJECT-ID]
PROJECT_ID এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:
PROJECT_ID=$(gcloud config get-value project)
সকল প্রয়োজনীয় পরিষেবা সক্রিয় করুন:
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com \
discoveryengine.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 alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com \
discoveryengine.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.
এপিআইগুলো চালু করা হচ্ছে
- AlloyDB API (
alloydb.googleapis.com) আপনাকে AlloyDB for PostgreSQL ক্লাস্টার তৈরি, পরিচালনা এবং স্কেল করতে দেয়। এটি একটি সম্পূর্ণ পরিচালিত, PostgreSQL-সামঞ্জস্যপূর্ণ ডেটাবেস পরিষেবা প্রদান করে, যা উচ্চ চাহিদাসম্পন্ন এন্টারপ্রাইজ ট্রানজ্যাকশনাল এবং অ্যানালিটিক্যাল ওয়ার্কলোডের জন্য ডিজাইন করা হয়েছে। - কম্পিউট ইঞ্জিন এপিআই (
compute.googleapis.com) আপনাকে ভার্চুয়াল মেশিন (VM), পারসিস্টেন্ট ডিস্ক এবং নেটওয়ার্ক সেটিংস তৈরি ও পরিচালনা করার সুযোগ দেয়। এটি আপনার ওয়ার্কলোড চালানোর জন্য এবং অনেক পরিচালিত পরিষেবার অন্তর্নিহিত পরিকাঠামো হোস্ট করার জন্য প্রয়োজনীয় মূল ইনফ্রাস্ট্রাকচার-অ্যাজ-এ-সার্ভিস (IaaS) ভিত্তি প্রদান করে। - ক্লাউড রিসোর্স ম্যানেজার এপিআই (
cloudresourcemanager.googleapis.com) আপনাকে প্রোগ্রাম্যাটিকভাবে আপনার গুগল ক্লাউড প্রজেক্টের মেটাডেটা এবং কনফিগারেশন পরিচালনা করার সুযোগ দেয়। এটি আপনাকে রিসোর্স সংগঠিত করতে, আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) পলিসি পরিচালনা করতে এবং প্রজেক্টের স্তরবিন্যাস জুড়ে অনুমতি যাচাই করতে সক্ষম করে। - সার্ভিস নেটওয়ার্কিং এপিআই (
servicenetworking.googleapis.com) আপনাকে আপনার ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্ক এবং গুগলের পরিচালিত পরিষেবাগুলির মধ্যে ব্যক্তিগত সংযোগ স্থাপন স্বয়ংক্রিয় করতে সাহায্য করে। AlloyDB-এর মতো পরিষেবাগুলির জন্য ব্যক্তিগত আইপি অ্যাক্সেস স্থাপন করতে এটি বিশেষভাবে প্রয়োজন, যাতে তারা আপনার অন্যান্য রিসোর্সগুলির সাথে নিরাপদে যোগাযোগ করতে পারে। - ভার্টেক্স এআই এপিআই (
aiplatform.googleapis.com) আপনার অ্যাপ্লিকেশনগুলোকে মেশিন লার্নিং মডেল তৈরি, স্থাপন এবং স্কেল করতে সক্ষম করে। এটি গুগল ক্লাউডের সমস্ত এআই পরিষেবার জন্য একটি সমন্বিত ইন্টারফেস প্রদান করে, যার মধ্যে জেনারেটিভ এআই মডেল (যেমন জেমিনি) এবং কাস্টম মডেল প্রশিক্ষণের সুবিধাও রয়েছে।
৪. AlloyDB স্থাপন করুন
AlloyDB ক্লাস্টার এবং প্রাইমারি ইনস্ট্যান্স তৈরি করুন। আপনি হয় একটি প্রস্তুত স্ক্রিপ্ট ব্যবহার করে এটি স্থাপন করতে পারেন, যা সমস্ত প্রয়োজনীয় রিসোর্স স্থাপন করবে, অথবা আপনি নিজেই ধাপে ধাপে এটি করতে পারেন।
স্বয়ংক্রিয় স্ক্রিপ্ট ব্যবহার করে AlloyDB স্থাপন করুন
এই পদ্ধতিতে স্বয়ংক্রিয় স্ক্রিপ্ট ব্যবহার করে অ্যালয়ডিবি ক্লাস্টার স্থাপন করা হয় এবং স্থাপিত রিসোর্সগুলোর সাথে কাজ শুরু করার জন্য প্রয়োজনীয় তথ্য সরবরাহ করা হয়।
ক্লাউড শেলে ডিপ্লয়মেন্ট স্ক্রিপ্টটি ক্লোন করার জন্য এক্সিকিউট কমান্ডটি টার্মিনেট করুন।
REPO_NAME="codelabs"
REPO_URL="https://github.com/GoogleCloudPlatform/$REPO_NAME"
SOURCE_DIR="alloydb-ai-operators"
git clone --no-checkout --filter=blob:none --depth=1 $REPO_URL
cd $REPO_NAME
git sparse-checkout set $SOURCE_DIR
git checkout
cd $SOURCE_DIR
ডিপ্লয়মেন্ট স্ক্রিপ্টটি চালান।
./deploy_alloydb.sh
স্ক্রিপ্টটি চলতে কিছুটা সময় নেবে - সাধারণত প্রায় ৫-৭ মিনিট। এরপর এটি আপনার ডেপ্লয় করা AlloyDB ক্লাস্টার সম্পর্কে তথ্য দেবে। অনুগ্রহ করে মনে রাখবেন, আপনার পাসওয়ার্ডটি ভিন্ন হবে - ভবিষ্যতের ব্যবহারের জন্য পাসওয়ার্ডটি কোথাও লিখে রাখুন ।
... <redacted> ... Creating primary instance: alloydb-aip-01-pr (8 vCPUs for TRIAL cluster) Operation ID: operation-1765988049916-646282264938a-bddce198-9f248715 Creating instance...done. ---------------------------------------- Deployment Process Completed Cluster: alloydb-aip-01 (TRIAL) Instance: alloydb-aip-01-pr Region: us-central1 Initial Password: JBBoDTgixzYwYpkF (if new cluster) ----------------------------------------
এবং আপনি এটি ওয়েব কনসোলেও দেখতে পারেন।

Google Cloud SDK ব্যবহার করে ধাপে ধাপে AlloyDB স্থাপন করুন
নিম্নলিখিত কার্যপ্রণালীতে গুগল ক্লাউড এসডিকে ব্যবহার করে কীভাবে একটি অ্যালয়ডিবি ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করতে হয় তা বর্ণনা করা হয়েছে। যদি আপনি পূর্ববর্তী ধাপের স্ক্রিপ্ট দ্বারা এটি ইতিমধ্যেই স্থাপন করে থাকেন, তবে এই ধাপটি এড়িয়ে যান এবং সরাসরি "ডেটাবেস প্রস্তুত করুন" (Prepare Database) অংশে চলে যান।
আপনি যদি ওয়েব জিইউআই কনসোল পদ্ধতিটি পছন্দ করেন, তাহলে এখান থেকে ডকুমেন্টেশন অনুসরণ করতে পারেন।
একটি AlloyDB ক্লাস্টার তৈরি করার আগে, আমাদের VPC-তে একটি উপলব্ধ প্রাইভেট আইপি রেঞ্জ থাকা প্রয়োজন, যা ভবিষ্যতের AlloyDB ইনস্ট্যান্সটি ব্যবহার করবে। যদি আমাদের কাছে এটি না থাকে, তবে আমাদের এটি তৈরি করতে হবে এবং অভ্যন্তরীণ গুগল পরিষেবাগুলির ব্যবহারের জন্য বরাদ্দ করতে হবে। এরপরেই আমরা ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করতে পারব।
ব্যক্তিগত আইপি রেঞ্জ তৈরি করুন
আমাদের AlloyDB-এর জন্য VPC-তে প্রাইভেট সার্ভিস অ্যাক্সেস কনফিগারেশন করতে হবে। এখানে ধরে নেওয়া হচ্ছে যে, প্রজেক্টটিতে 'ডিফল্ট' VPC নেটওয়ার্ক রয়েছে এবং সমস্ত কাজের জন্য এটিই ব্যবহৃত হবে।
ব্যক্তিগত আইপি রেঞ্জ তৈরি করুন:
gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
বরাদ্দকৃত আইপি রেঞ্জ ব্যবহার করে ব্যক্তিগত সংযোগ তৈরি করুন:
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range].
student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully.
student@cloudshell:~ (test-project-402417)$
AlloyDB ক্লাস্টার তৈরি করুন
এই অংশে আমরা us-central1 অঞ্চলে একটি AlloyDB ক্লাস্টার তৈরি করছি।
postgres ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করুন। আপনি নিজের পাসওয়ার্ড তৈরি করতে পারেন অথবা একটি র্যান্ডম ফাংশন ব্যবহার করে তা তৈরি করতে পারেন।
export PGPASSWORD=`openssl rand -hex 12`
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`
ভবিষ্যতে ব্যবহারের জন্য PostgreSQL পাসওয়ার্ডটি লিখে রাখুন।
echo $PGPASSWORD
ভবিষ্যতে postgres ব্যবহারকারী হিসেবে ইনস্ট্যান্সটিতে সংযোগ করতে আপনার ওই পাসওয়ার্ডটি লাগবে। আমি পরামর্শ দেবো এটি লিখে রাখতে বা কোথাও কপি করে রাখতে, যাতে পরে ব্যবহার করতে পারেন।
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD bbefbfde7601985b0dee5723 (Note: Yours will be different!)
একটি বিনামূল্যে ট্রায়াল ক্লাস্টার তৈরি করুন
আপনি যদি আগে AlloyDB ব্যবহার না করে থাকেন, তাহলে একটি বিনামূল্যের ট্রায়াল ক্লাস্টার তৈরি করতে পারেন:
অঞ্চল এবং AlloyDB ক্লাস্টারের নাম নির্ধারণ করুন। আমরা us-central1 অঞ্চল এবং alloydb-aip-01 ক্লাস্টারের নাম হিসেবে ব্যবহার করতে যাচ্ছি:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
ক্লাস্টার তৈরি করতে কমান্ডটি চালান:
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION \
--subscription-type=TRIAL
প্রত্যাশিত কনসোল আউটপুট:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION \
--subscription-type=TRIAL
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.
একই ক্লাউড শেল সেশনে আমাদের ক্লাস্টারের জন্য একটি AlloyDB প্রাইমারি ইনস্ট্যান্স তৈরি করুন। সংযোগ বিচ্ছিন্ন হয়ে গেলে আপনাকে আবার রিজিয়ন এবং ক্লাস্টারের নামের এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করতে হবে।
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=8 \
--region=$REGION \
--cluster=$ADBCLUSTER
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=8 \
--region=$REGION \
--availability-type ZONAL \
--cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.
AlloyDB স্ট্যান্ডার্ড ক্লাস্টার তৈরি করুন
প্রকল্পে এটি যদি আপনার প্রথম AlloyDB ক্লাস্টার না হয়, তবে একটি স্ট্যান্ডার্ড ক্লাস্টার তৈরির প্রক্রিয়া শুরু করুন। যদি আপনি পূর্ববর্তী ধাপে ইতিমধ্যেই একটি ফ্রি ট্রায়াল ক্লাস্টার তৈরি করে থাকেন, তবে এই ধাপটি এড়িয়ে যান।
অঞ্চল এবং AlloyDB ক্লাস্টারের নাম নির্ধারণ করুন। আমরা us-central1 অঞ্চল এবং alloydb-aip-01 ক্লাস্টারের নাম হিসেবে ব্যবহার করতে যাচ্ছি:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
ক্লাস্টার তৈরি করতে কমান্ডটি চালান:
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
প্রত্যাশিত কনসোল আউটপুট:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.
একই ক্লাউড শেল সেশনে আমাদের ক্লাস্টারের জন্য একটি AlloyDB প্রাইমারি ইনস্ট্যান্স তৈরি করুন। সংযোগ বিচ্ছিন্ন হয়ে গেলে আপনাকে আবার রিজিয়ন এবং ক্লাস্টারের নামের এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করতে হবে।
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--cluster=$ADBCLUSTER
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--availability-type ZONAL \
--cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.
৫. ডাটাবেস প্রস্তুত করুন
আমাদের একটি ডাটাবেস তৈরি করতে হবে, ভার্টেক্স এআই ইন্টিগ্রেশন সক্রিয় করতে হবে, ডাটাবেস অবজেক্ট তৈরি করতে হবে এবং ডেটা ইম্পোর্ট করতে হবে।
AlloyDB-কে প্রয়োজনীয় অনুমতি প্রদান করুন
AlloyDB সার্ভিস এজেন্টে Vertex AI-এর অনুমতি যোগ করুন।
উপরে থাকা "+" চিহ্নটি ব্যবহার করে আরেকটি ক্লাউড শেল ট্যাব খুলুন।

নতুন ক্লাউড শেল ট্যাবে নিম্নলিখিতটি চালান:
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/discoveryengine.viewer"
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-11039] student@cloudshell:~ (test-project-001-402417)$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \ --role="roles/aiplatform.user" Updated IAM policy for project [test-project-001-402417]. bindings: - members: - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com role: roles/aiplatform.user - members: ... etag: BwYIEbe_Z3U= version: 1
ট্যাবের মধ্যে থাকা 'exit' কমান্ডটি চালিয়ে ট্যাবটি বন্ধ করুন:
exit
AlloyDB Studio-এর সাথে সংযোগ করুন
পরবর্তী অধ্যায়গুলোতে ডাটাবেসের সাথে সংযোগের প্রয়োজন হয় এমন সমস্ত SQL কমান্ড AlloyDB Studio-তে চালানো যাবে।
AlloyDB for Postgres-এর ক্লাস্টার পৃষ্ঠায় যান।
প্রাইমারি ইনস্ট্যান্সটিতে ক্লিক করে আপনার AlloyDB ক্লাস্টারের ওয়েব কনসোল ইন্টারফেসটি খুলুন।

তারপর বাম দিকে AlloyDB Studio-তে ক্লিক করুন:

postgres ডাটাবেস ও postgres ইউজার নির্বাচন করুন এবং ক্লাস্টার তৈরির সময় লিখে রাখা পাসওয়ার্ডটি দিন। এরপর "Authenticate" বাটনে ক্লিক করুন।
যদি পাসওয়ার্ডটি কাজ না করে অথবা আপনি পাসওয়ার্ডটি লিখে রাখতে ভুলে যান, তাহলে আপনি পাসওয়ার্ডটি পরিবর্তন করতে পারেন। কীভাবে তা করতে হয়, তা জানতে ডকুমেন্টেশন দেখুন।

এটি AlloyDB Studio ইন্টারফেসটি খুলবে। ডাটাবেসে কমান্ডগুলো চালানোর জন্য ডানদিকে থাকা 'Untitled Query' ট্যাবে ক্লিক করুন।

এটি এমন একটি ইন্টারফেস খোলে যেখানে আপনি SQL কমান্ড চালাতে পারেন।

ডাটাবেস তৈরি করুন
ডাটাবেস কুইকস্টার্ট তৈরি করুন।
AlloyDB Studio Editor-এ নিম্নলিখিত কমান্ডটি চালান।
ডাটাবেস তৈরি করুন:
CREATE DATABASE quickstart_db
প্রত্যাশিত আউটপুট:
Statement executed successfully
quickstart_db-এর সাথে সংযোগ করুন
ব্যবহারকারী/ডাটাবেস পরিবর্তন করার বাটনটি ব্যবহার করে স্টুডিওতে পুনরায় সংযোগ করুন।

ড্রপডাউন তালিকা থেকে নতুন quickstart_db ডাটাবেসটি বেছে নিন এবং আগের মতোই ইউজার ও পাসওয়ার্ড ব্যবহার করুন।

এটি একটি নতুন সংযোগ খুলবে যেখানে আপনি quickstart_db ডাটাবেসের অবজেক্টগুলো নিয়ে কাজ করতে পারবেন।
google_ml এক্সটেনশন যাচাই করুন
এআই কোয়েরি ইঞ্জিন ব্যবহার করতে হলে, google_ml এক্সটেনশনের ভার্সনটি 1.5.2 বা তার বেশি কিনা তা যাচাই করে নিন।
AlloyDB Studio-তে quickstart_db-এর সাথে সংযুক্ত থাকা অবস্থায় নিম্নলিখিত কমান্ডটি চালান:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
প্রত্যাশিত আউটপুট:
1.5.2
সংস্করণটি প্রয়োজনীয় সংস্করণের চেয়ে কম হলে এক্সটেনশনটি আপডেট করুন।
AlloyDB Studio-তে quickstart_db-এর সাথে সংযুক্ত থাকা অবস্থায় নিম্নলিখিত কমান্ডটি চালান:
CALL google_ml.upgrade_to_preview_version();
প্রত্যাশিত আউটপুট:
Statement executed successfully
সফলভাবে সম্পাদনের পর, সংস্করণটি পুনরায় যাচাই করুন।
AlloyDB Studio-তে quickstart_db-এর সাথে সংযুক্ত থাকা অবস্থায় নিম্নলিখিত কমান্ডটি চালান:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
প্রত্যাশিত আউটপুট:
1.5.2
আমাদের ডাটাবেসে এআই কোয়েরি ইঞ্জিন ফিচারগুলোও সক্রিয় করতে হবে। এটি ইনস্ট্যান্সের সমস্ত ডাটাবেসের জন্য ইনস্ট্যান্স ফ্ল্যাগ আপডেট করে অথবা শুধুমাত্র আমাদের ডাটাবেসের জন্য সক্রিয় করে করা যেতে পারে। `quickstart_db` ডাটাবেসের জন্য এটি সক্রিয় করতে AlloyDB Studio-তে নিম্নলিখিত কমান্ডটি চালান।
ALTER DATABASE quickstart_db SET google_ml_integration.enable_ai_query_engine = 'on';
৬. নমুনা তথ্য
এখন আমাদের ডাটাবেসে অবজেক্ট তৈরি করতে হবে এবং ডেটা লোড করতে হবে। আমরা কয়েকটি সারি সহ একটি কাল্পনিক চলচ্চিত্রের ডেটাসেট ব্যবহার করতে যাচ্ছি।
নিম্নলিখিত স্টেটমেন্টগুলো AlloyDB Studio Editor-এ কপি করুন এবং "Run" বোতামটি চাপুন।
-- Drop tables if they exist to prevent errors on re-running the script
DROP TABLE IF EXISTS movie_reviews;
DROP TABLE IF EXISTS movies;
-- Create the 'movies' table
-- This table stores information about each movie.
CREATE TABLE movies (
id BIGINT PRIMARY KEY, -- Unique identifier for the movie
title TEXT NOT NULL, -- Title of the movie
description TEXT, -- A brief description or synopsis of the movie
genres TEXT, -- Comma-separated list of genres (e.g., "Action, Adventure, Sci-Fi")
actors TEXT -- Comma-separated list of main actors
);
-- Create the 'movie_reviews' table
-- This table stores reviews for the movies.
CREATE TABLE movie_reviews (
review_id BIGINT PRIMARY KEY, -- Unique identifier for the review
movie_id BIGINT NOT NULL, -- Foreign key referencing the movie being reviewed
reviewer_name TEXT, -- Name of the person who wrote the review
rating INT CHECK (rating >= 1 AND rating <= 5), -- Rating from 1 to 5 stars
review_text TEXT, -- The content of the review
review_date DATE DEFAULT CURRENT_DATE, -- Date when the review was submitted
FOREIGN KEY (movie_id) REFERENCES movies(id) ON DELETE CASCADE -- Ensures referential integrity; if a movie is deleted, its reviews are also deleted.
);
-- Insert sample data into the 'movies' table (20 rows)
INSERT INTO movies (id, title, description, genres, actors) VALUES
(1, 'Inception', 'A thief who steals information by entering people''s dreams.', 'Sci-Fi, Thriller, Action', 'Leonardo DiCaprio, Joseph Gordon-Levitt, Elliot Page'),
(2, 'The Matrix', 'A computer hacker learns about the true nature of his reality.', 'Sci-Fi, Action', 'Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss'),
(3, 'Interstellar', 'A team of explorers journey through a cosmic passage beyond our world in an attempt to ensure humanity''s survival.', 'Sci-Fi, Drama, Adventure', 'Matthew McConaughey, Anne Hathaway, Jessica Chastain'), -- Updated description
(4, 'The Dark Knight', 'When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, Batman must accept one of the greatest psychological and physical tests of his ability to fight injustice.', 'Action, Crime, Drama', 'Christian Bale, Heath Ledger, Aaron Eckhart'),
(5, 'Pulp Fiction', 'The lives of two mob hitmen, a boxer, a gangster and his wife, and a pair of diner bandits intertwine in four tales of violence and redemption.', 'Crime, Drama', 'John Travolta, Uma Thurman, Samuel L. Jackson'),
(6, 'Forrest Gump', 'The presidencies of Kennedy and Johnson, the Vietnam War, the Watergate scandal and other historical events unfold from the perspective of an Alabama man with an IQ of 75.', 'Drama, Romance', 'Tom Hanks, Robin Wright, Gary Sinise'),
(7, 'The Shawshank Redemption', 'Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.', 'Drama', 'Tim Robbins, Morgan Freeman, Bob Gunton'),
(8, 'Gladiator', 'A former Roman General sets out to exact vengeance against the corrupt emperor who murdered his family and sent him into slavery.', 'Action, Adventure, Drama', 'Russell Crowe, Joaquin Phoenix, Connie Nielsen'),
(9, 'Fight Club', 'An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more.', 'Drama', 'Brad Pitt, Edward Norton, Meat Loaf'),
(10, 'The Lord of the Rings: The Return of the King', 'Gandalf and Aragorn lead the World of Men against Sauron''s army to draw his gaze from Frodo and Sam as they approach Mount Doom with the One Ring.', 'Action, Adventure, Drama', 'Elijah Wood, Viggo Mortensen, Ian McKellen'),
(11, 'Spirited Away', 'During her family''s move to the suburbs, a sullen 10-year-old girl wanders into a world ruled by gods, witches, and spirits, and where humans are changed into beasts.', 'Animation, Adventure, Family', 'Daveigh Chase, Suzanne Pleshette, Miyu Irino'),
(12, 'Parasite', 'Greed and class discrimination threaten the newly formed symbiotic relationship between the wealthy Park family and the destitute Kim clan.', 'Comedy, Drama, Thriller', 'Song Kang-ho, Lee Sun-kyun, Cho Yeo-jeong'),
(13, 'The Godfather', 'The aging patriarch of an organized crime dynasty transfers control of his clandestine empire to his reluctant son.', 'Crime, Drama', 'Marlon Brando, Al Pacino, James Caan'),
(14, 'Avengers: Endgame', 'After the devastating events of Avengers: Infinity War, the universe is in ruins. With the help of remaining allies, the Avengers assemble once more in order to reverse Thanos'' actions and restore balance to the universe.', 'Action, Adventure, Drama', 'Robert Downey Jr., Chris Evans, Mark Ruffalo'),
(15, 'Joker', 'In Gotham City, mentally troubled comedian Arthur Fleck is disregarded and mistreated by society. He then embarks on a downward spiral of revolution and bloody crime.', 'Crime, Drama, Thriller', 'Joaquin Phoenix, Robert De Niro, Zazie Beetz'),
(16, 'Mad Max: Fury Road', 'In a post-apocalyptic wasteland, a woman rebels against a tyrannical ruler in search for her homeland with the help of a group of female prisoners, a psychotic worshiper, and a drifter named Max.', 'Action, Adventure, Sci-Fi', 'Tom Hardy, Charlize Theron, Nicholas Hoult'),
(17, 'Coco', 'Aspiring musician Miguel, confronted with his family''s ancestral ban on music, enters the Land of the Dead to find his great-great-grandfather, a legendary singer.', 'Animation, Adventure, Family', 'Anthony Gonzalez, Gael García Bernal, Benjamin Bratt'),
(18, 'Whiplash', 'A promising young drummer enrolls at a cut-throat music conservatory where his dreams of greatness are mentored by an instructor who will stop at nothing to realize a student''s potential.', 'Drama, Music', 'Miles Teller, J.K. Simmons, Paul Reiser'),
(19, 'The Grand Budapest Hotel', 'The adventures of Gustave H, a legendary concierge at a famous hotel from the fictional Republic of Zubrowka between the first and second World Wars, and Zero Moustafa, the lobby boy who becomes his most trusted friend.', 'Adventure, Comedy, Drama', 'Ralph Fiennes, F. Murray Abraham, Mathieu Amalric'),
(20, 'Blade Runner 2049', 'Young Blade Runner K''s discovery of a long-buried secret leads him to track down former Blade Runner Rick Deckard, who''s been missing for thirty years.', 'Action, Drama, Mystery', 'Ryan Gosling, Harrison Ford, Ana de Armas');
-- Insert sample data into the 'movie_reviews' table (30 rows)
-- Reviews are linked to movies via movie_id. Includes a mix of positive and negative reviews.
-- Movie title is prepended to the review text.
INSERT INTO movie_reviews (review_id, movie_id, reviewer_name, rating, review_text) VALUES
(1, 1, 'Alice Wonderland', 5, 'Inception: Absolutely mind-bending! A masterpiece of sci-fi.'),
(2, 1, 'Bob The Critic', 2, 'Inception: Too confusing and pretentious. Didn''t enjoy it.'),
(3, 2, 'Charlie Reviewer', 5, 'The Matrix: Revolutionary visuals and a compelling story.'),
(4, 3, 'Diana Prince', 5, 'Interstellar: Visually stunning and emotionally powerful. A must-see.'),
(5, 3, 'Edward Nigma', 4, 'Interstellar: Long, but worth it for the spectacle and ideas.'),
(6, 4, 'Fiona Glenanne', 5, 'The Dark Knight: Heath Ledger''s Joker is iconic. Dark and thrilling.'),
(7, 5, 'George Costanza', 5, 'Pulp Fiction: Quirky, violent, and endlessly quotable.'),
(8, 5, 'Hannah Montana', 1, 'Pulp Fiction: Way too violent and the timeline was confusing. Hated it.'),
(9, 6, 'Ian Malcolm', 4, 'Forrest Gump: A heartwarming story with a great performance by Hanks.'),
(10, 7, 'Jane Doe', 5, 'The Shawshank Redemption: An uplifting story of hope and friendship. Perfect.'),
(11, 7, 'John Smith', 5, 'The Shawshank Redemption: Morgan Freeman is amazing. Truly a classic.'),
(12, 8, 'Kyle Broflovski', 2, 'Gladiator: Generic plot and boring action scenes. Overrated.'),
(13, 9, 'Laura Palmer', 5, 'Fight Club: Provocative and thought-provoking. Norton and Pitt are fantastic.'),
(14, 10, 'Michael Scott', 5, 'The Lord of the Rings: The Return of the King: A fitting and epic conclusion to a legendary trilogy.'),
(15, 11, 'Nancy Drew', 5, 'Spirited Away: Beautiful animation and a magical story for all ages.'),
(16, 12, 'Oscar Martinez', 5, 'Parasite: A brilliant satire with unexpected twists. Loved it!'),
(17, 12, 'Pam Beesly', 4, 'Parasite: Very intense, but incredibly well-directed and acted.'),
(18, 13, 'Quentin Coldwater', 5, 'The Godfather: A cinematic masterpiece. Brando is unforgettable.'),
(19, 14, 'Rachel Green', 3, 'Avengers: Endgame: It was okay, but felt bloated and had too many characters.'),
(20, 14, 'Steve Rogers', 5, 'Avengers: Endgame: The culmination of a decade of storytelling. Perfect ending.'),
(21, 15, 'Tony Stark', 4, 'Joker: A dark and disturbing character study. Phoenix is mesmerizing.'),
(22, 16, 'Uma Thurman', 5, 'Mad Max: Fury Road: Non-stop action and incredible practical effects. What a ride!'),
(23, 17, 'Victor Frankenstein', 5, 'Coco: A heartwarming and visually stunning celebration of family and culture.'),
(24, 18, 'Walter White', 5, 'Whiplash: Intense and gripping. J.K. Simmons is terrifyingly good.'),
(25, 19, 'Xena Warrior', 2, 'The Grand Budapest Hotel: Too quirky for its own good. Style over substance.'),
(26, 20, 'Ygritte Snow', 5, 'Blade Runner 2049: A worthy sequel that expands on the original in meaningful ways. Visually breathtaking.'),
(27, 1, 'Zack Morris', 4, 'Inception: Kept me on the edge of my seat. Very clever.'),
(28, 4, 'Buffy Summers', 5, 'The Dark Knight: The best superhero movie ever made. Ledger is a legend.'),
(29, 8, 'Clark Kent', 3, 'Gladiator: Decent action, but the story felt predictable and dragged a bit.'),
(30, 15, 'Diana Troy', 3, 'Joker: Hard to watch at times, but a powerful performance. Felt it was a bit one-note though.');
আপনার কাছে যদি ক্লাউড কনসোলে উপলব্ধ ক্লাউড এসকিউএল ইম্পোর্ট টুলের সাথে সামঞ্জস্যপূর্ণ নিজস্ব নমুনা ডেটা এবং সিএসভি ফাইল থাকে, তাহলে আপনি উপস্থাপিত পদ্ধতির পরিবর্তে সেটি ব্যবহার করতে পারেন।
৭. IF অপারেটর ব্যবহার করুন
চলুন প্রথমে PostgreSQL-এর প্রচলিত পদ্ধতি ব্যবহার করে ক্লাসিক সার্চটি চেষ্টা করে দেখি।
মহাকাশ অভিযান বিষয়ক কোনো সিনেমা খুঁজতে চাইলে আমরা নিম্নলিখিত কোয়েরিটি ব্যবহার করতে পারি।
SELECT title,description AS movies_about_space
FROM movies
WHERE description like '%space%' OR title like '%space%';
এটি কোনো ফলাফল দেখায়নি। কিন্তু আমি নিশ্চিত যে আমাদের কাছে অন্তত একটি সিনেমা আছে যা ওই বিভাগের অন্তর্ভুক্ত হবে। আমরা পূর্ণ পাঠ্য অনুসন্ধান পদ্ধতি ব্যবহার করে দেখতে পারি।
SELECT title,description
FROM movies
WHERE to_tsvector('english', description) @@ to_tsquery('english', 'space');
এবং আমরা হয়তো কোনো ফলাফলই পাব না। তাই PostgreSQL সার্চের ‘ক্লাসিক’ কৌশলগুলো ব্যবহার করতে আমাদের কিছু মূল শব্দ বা বাক্যাংশ জানা প্রয়োজন।
এখন আমরা google_ml.if ফাংশন ব্যবহার করে এআই-চালিত সিমান্টিক ফিল্টারিং চেষ্টা করতে পারি। এটি আমাদের স্বাভাবিক ভাষার অনুরোধের উপর ভিত্তি করে সিমান্টিক ফিল্টারিং করার জন্য নেপথ্যে এআই ব্যবহার করবে।
SELECT title,description AS movies_about_space
FROM movies
WHERE
google_ml.if(
prompt => 'Here are descriptions of movies, can you return the ones about space adventures: '||description);
অনুরোধটির শিরোনাম বা বিবরণে ‘মহাকাশ’ শব্দটি না থাকলেও, আমরা শুধুমাত্র তার অর্থগত তাৎপর্যের উপর ভিত্তি করে ‘ইন্টারস্টেলার’ সিনেমাটি নিয়ে আসছি। আপনারা যেমনটা লক্ষ্য করেছেন, আমরাও আগে থেকে কিছুই তৈরি করিনি এবং সম্পূর্ণরূপে স্বয়ংক্রিয় অন্তর্নির্মিত ফাংশনগুলোর উপর নির্ভর করেছি।
৮. IF অপারেটরের সাথে JOIN ব্যবহার করুন
যদি আমরা এআই-চালিত সিমান্টিক ফিল্টারিং ব্যবহার করে দুটি টেবিল যুক্ত করতে চাই, তাহলে কী হবে? উদাহরণস্বরূপ, আমরা ব্যবহারকারীর রিভিউয়ের উপর ভিত্তি করে সিনেমাটির সাথে রিভিউটি মেলানোর চেষ্টা করতে পারি, যদি রিভিউটিতে সিনেমাটির উল্লেখ থাকে।
একটি নতুন AlloyDB Studio এডিটর ট্যাবে চালান:
SELECT title, rating, movie_reviews
FROM movies
JOIN
movie_reviews ON
google_ml.if(
prompt => 'Does the following reviews talk about a movie mentioned? The review: ' || review_text||' and the movie title is: '||title)
AND
title='Interstellar';
এবং শিরোনামে উল্লিখিত সিনেমার নামের উপর ভিত্তি করে আমরা আমাদের অনুরোধের সাথে মিলে যাওয়া দুটি রিভিউ পাই। এবং আমরা অনুরোধটিকে আরও সহজ করে তুলতে পারি:
SELECT title, rating, movie_reviews
FROM movies
JOIN
movie_reviews ON
google_ml.if(
prompt => 'Do we have the movie in the review?: ' || review_text||' and the movie title is: '||title)
AND
title='Interstellar';
৯. বিষয়বস্তুর উপর ভিত্তি করে স্কোরের ফলাফল
`movie_reviews` টেবিলে সিনেমাগুলোর রেটিং রয়েছে, কিন্তু আমরা যদি নিজেদের রেটিং ব্যবস্থা প্রয়োগ করতে চাই, তাহলে তার জন্য `google_ml.rank` ফাংশনটি ব্যবহার করতে পারি। আমরা স্বাভাবিক ভাষায় সংজ্ঞায়িত শর্তের উপর ভিত্তি করে আমাদের রিভিউগুলোকে স্কোর করতে পারি এবং উদাহরণস্বরূপ, সিনেমাগুলোর জন্য সেরা ৫টি রিভিউ পেতে পারি ও তুলনার জন্য মূল রেটিংটি প্রদর্শন করতে পারি।
SELECT rating,review_text AS top_five
FROM movie_reviews
ORDER BY google_ml.rank('Score of 7 to 10 if the review says the movie was really good, 3 to 6 if the review says it''s alright is and 1 to 2 if the review says it was not worth of time. Review: ' || review_text) DESC
LIMIT 5;
আর যদি আমরা মূল রেটিংটির পাশে নতুন রেটিংটি দেখাতে চাই, তাহলে আমরা সেটিকে কলামের তালিকায় যোগ করতে পারি।
SELECT rating,
google_ml.rank('Score of 7 to 10 if the review says the movie was really good, 3 to 6 if the review says it''s alright is and 1 to 2 if the review says it was not worth of time. Review: ' || review_text) AS ml_rank,
review_text AS top_five
FROM movie_reviews
ORDER BY ml_rank DESC
LIMIT 5;
আর এখানে রইল সেরা ৫টি রিভিউ।
rating | ml_rank | top_five
--------+---------+-----------------------------------------------------------------------
5 | 9 | The Dark Knight: Heath Ledger's Joker is iconic. Dark and thrilling.
5 | 9 | The Matrix: Revolutionary visuals and a compelling story.
5 | 9 | Interstellar: Visually stunning and emotionally powerful. A must-see.
5 | 9 | Inception: Absolutely mind-bending! A masterpiece of sci-fi.
5 | 9 | Pulp Fiction: Quirky, violent, and endlessly quotable.
(5 rows)
5 rows in set (0.13 sec)
সেরা রিভিউগুলোর জন্য নির্বাচিত রেটিং ছিল ১০-এর মধ্যে ৯।
ডকুমেন্টেশনে AlloyDB AI অপারেটরগুলো সম্পর্কে আরও পড়ুন।
১০. র্যাঙ্কিং ব্যবহার করে সিমান্টিক সার্চ উন্নত করুন
আরও সুনির্দিষ্ট ফলাফল পেতে আমরা আমাদের সিমান্টিক সার্চের সাথে র্যাঙ্কিংকে একত্রিত করতে পারি।
পুনর্বিন্যাস মডেলে প্রবেশাধিকার
র্যাঙ্কিং মডেল ব্যবহার করার জন্য, আমাদের অবশ্যই ডিসকভারি ইঞ্জিন এপিআই (Discovery Engine API) সক্রিয় করতে হবে এবং অ্যালয়ডিবি (AlloyDB) সার্ভিস অ্যাকাউন্টে 'discoveryengine.viewer' রোলটি প্রদান করতে হবে। আমাদের ল্যাবের প্রথম ধাপেই এপিআই এবং রোলটি সক্রিয় করা হয়েছে। ai.rank ফাংশনটি স্বয়ংক্রিয়ভাবে ভার্টেক্স এআই (Vertex AI)-তে সর্বশেষ রির্যাঙ্কিং মডেলটি খুঁজে বের করে এবং ব্যবহার করে।
কোয়েরিতে রির্যাঙ্কিং মডেল ব্যবহার করুন
এখন আমরা আমাদের রির্যাঙ্কিং মডেলটি কোয়েরিগুলোতে ব্যবহার করে সিমান্টিক সার্চের ফলাফল উন্নত করতে, সেগুলোকে আরও সুনির্দিষ্ট করতে এবং সেরা বিকল্পগুলো বেছে নিতে পারি।
চলুন অ্যাকশন মুভি খুঁজে বের করি এবং তারপর 'কম্পিউটার ও ভবিষ্যৎ'-কে শর্ত হিসেবে ব্যবহার করে সেগুলোকে র্যাঙ্ক করি।
WITH
action_movies AS (
SELECT
title,
description,
ROW_NUMBER() OVER (ORDER BY title, description) AS ref_number
FROM
movies
WHERE
google_ml.if(
prompt => 'The following movies are action movies. The movie title: ' || title || ' and the description is: ' || description
)
),
ranked_documents_array AS (
SELECT
ARRAY_AGG(description ORDER BY ref_number) AS docs
FROM
action_movies
),
reranked_results AS (
SELECT
r.index,
r.score
FROM
ranked_documents_array,
ai.rank(
model_id => 'semantic-ranker-default',
search_string => 'Computers and future',
documents => ranked_documents_array.docs
) AS r
)
SELECT
am.title,
left(am.description,80) as description,
rr.score
FROM
action_movies am
JOIN
reranked_results rr ON am.ref_number = rr.index
ORDER BY
rr.score DESC;
ফলাফলে অ্যাকশন মুভিগুলোর একটি তালিকা প্রকাশ করা হবে, যেখানে আশা করা যায় ভবিষ্যৎ ও কম্পিউটার বিষয়ক সিনেমাগুলো তালিকার শীর্ষে থাকবে।
title | description | score
-----------------------------------------------+----------------------------------------------------------------------------------+--------
The Matrix | A computer hacker learns about the true nature of his reality. | 0.1197
Inception | A thief who steals information by entering people's dreams. | 0.0646
Blade Runner 2049 | Young Blade Runner K's discovery of a long-buried secret leads him to track down | 0.022
Mad Max: Fury Road | In a post-apocalyptic wasteland, a woman rebels against a tyrannical ruler in se | 0.0206
Gladiator | A former Roman General sets out to exact vengeance against the corrupt emperor w | 0.0189
Avengers: Endgame | After the devastating events of Avengers: Infinity War, the universe is in ruins | 0.0175
Fight Club | An insomniac office worker looking for a way to change his life crosses paths wi | 0.0162
The Dark Knight | When the menace known as the Joker wreaks havoc and chaos on the people of Gotha | 0.0095
The Lord of the Rings: The Return of the King | Gandalf and Aragorn lead the World of Men against Sauron's army to draw his gaze | 0.0056
(9 rows)
বিভিন্ন শর্ত দিয়ে এটি চেষ্টা করে দেখুন এবং লক্ষ্য করুন র্যাঙ্কিং কীভাবে আউটপুটের ক্রমকে প্রভাবিত করে।
ডকুমেন্টেশনে অপশন এবং রি-র্যাঙ্কিং সম্পর্কে আরও পড়ুন।
১১. পরিবেশ পরিষ্কার করা
ল্যাবের কাজ শেষ হলে AlloyDB ইনস্ট্যান্স এবং ক্লাস্টারটি ধ্বংস করে দিন।
AlloyDB ক্লাস্টার এবং এর সমস্ত ইনস্ট্যান্স মুছে ফেলুন
আপনি যদি AlloyDB-এর ট্রায়াল সংস্করণ ব্যবহার করে থাকেন এবং সেই ট্রায়াল ক্লাস্টার ব্যবহার করে অন্যান্য ল্যাব ও রিসোর্স পরীক্ষা করার পরিকল্পনা থাকে, তাহলে সেটি ডিলিট করবেন না। আপনি একই প্রজেক্টে আরেকটি ট্রায়াল ক্লাস্টার তৈরি করতে পারবেন না।
`force` অপশনটির মাধ্যমে ক্লাস্টারটি ধ্বংস করা হয়, যা ক্লাস্টারের অন্তর্গত সমস্ত ইনস্ট্যান্সকেও মুছে দেয়।
যদি আপনার সংযোগ বিচ্ছিন্ন হয়ে যায় এবং পূর্বের সমস্ত সেটিংস হারিয়ে যায়, তাহলে ক্লাউড শেলে প্রজেক্ট এবং এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করুন:
gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)
ক্লাস্টারটি মুছে ফেলুন:
gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force All of the cluster data will be lost when the cluster is deleted. Do you want to continue (Y/n)? Y Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f Deleting cluster...done.
AlloyDB ব্যাকআপগুলি মুছুন
ক্লাস্টারের সমস্ত AlloyDB ব্যাকআপ মুছে ফেলুন:
for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f Deleting backup...done.
১২. অভিনন্দন
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।
গুগল ক্লাউড লার্নিং পাথ
এই ল্যাবটি ‘প্রোডাকশন-রেডি এআই উইথ গুগল ক্লাউড’ লার্নিং পাথের একটি অংশ।
- প্রোটোটাইপ থেকে উৎপাদনে উত্তরণের ব্যবধান পূরণ করতে সম্পূর্ণ পাঠ্যক্রমটি অন্বেষণ করুন ।
-
#ProductionReadyAIহ্যাশট্যাগটি ব্যবহার করে আপনার অগ্রগতি শেয়ার করুন।
আমরা যা আলোচনা করেছি
- AlloyDB ক্লাস্টার এবং প্রাইমারি ইনস্ট্যান্স কীভাবে স্থাপন করবেন
- AlloyDB AI অপারেটরদের কীভাবে সক্রিয় করবেন
- বিভিন্ন AlloyDB AI অপারেটর কীভাবে ব্যবহার করবেন
- AlloyDB AI অপারেটরগুলিতে ফলাফলের মান উন্নত করতে কীভাবে রির্যাঙ্কিং ব্যবহার করবেন
১৩. জরিপ
আউটপুট: