১. ভূমিকা
এই কোডল্যাবে আপনি শিখবেন কীভাবে এমবেডিং ব্যবহার করে সিমান্টিক সার্চের জন্য MySQL AI ইন্টিগ্রেশনে ক্লাউড এসকিউএল ব্যবহার করতে হয় এবং ভেক্টর ডেটার উপর ইনডেক্স ব্যবহার করে কীভাবে পারফরম্যান্স উন্নত করা যায়।

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

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

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

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

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেন্টিকেশন উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে।
৩. শুরু করার আগে
এপিআই সক্ষম করুন
Cloud SQL , Compute Engine , Service Networking , এবং Gemini Enterprise Agent Platform ব্যবহার করতে, আপনার Google Cloud প্রজেক্টে এগুলোর নিজ নিজ API সক্রিয় করুন।
ক্লাউড শেল টার্মিনালে, আপনার প্রজেক্ট আইডি সেট করা আছে কিনা তা নিশ্চিত করুন:
gcloud config get project
যদি এটি একটি খালি স্ট্রিং রিটার্ন করে, তবে এটি এভাবে সেট করুন:
gcloud config set project [YOUR-PROJECT-ID]
PROJECT_ID এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:
PROJECT_ID=$(gcloud config get-value project)
সকল প্রয়োজনীয় এপিআই সক্রিয় করুন:
gcloud services enable sqladmin.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.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 sqladmin.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.
আপনি ডকুমেন্টেশনে প্রতিটি সক্রিয় API সম্পর্কে পড়তে পারেন।
৪. একটি ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন
জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্ম ডাটাবেস ইন্টিগ্রেশন সহ একটি ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন।
ডাটাবেস পাসওয়ার্ড তৈরি করুন
ডিফল্ট ডাটাবেস ব্যবহারকারীর জন্য একটি পাসওয়ার্ড নির্ধারণ করুন। আপনি নিজের পাসওয়ার্ড তৈরি করতে পারেন অথবা একটি র্যান্ডম ফাংশন ব্যবহার করে তা তৈরি করতে পারেন:
export CLOUDSQL_PASSWORD=`openssl rand -hex 16`
তৈরি হওয়া পাসওয়ার্ডের মান প্রদর্শন করুন:
echo $CLOUDSQL_PASSWORD
পরবর্তীতে ব্যবহারের জন্য তৈরি হওয়া পাসওয়ার্ডটি লিখে রাখুন।
MySQL ইনস্ট্যান্সের জন্য ক্লাউড SQL তৈরি করুন
গুগল ক্লাউড কনসোল, টেরাফর্ম, বা গুগল ক্লাউড সিএলআই ( gcloud ) সহ বিভিন্ন পদ্ধতি ব্যবহার করে ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করা যায়। এই কোডল্যাবে, আপনি gcloud ব্যবহার করবেন। অন্যান্য টুল দিয়ে কীভাবে ইনস্ট্যান্স তৈরি করতে হয় তা জানতে, 'ইনস্ট্যান্স তৈরি করুন ' ডকুমেন্টেশনটি দেখুন।
একটি ইনস্ট্যান্স তৈরি করার সময় cloudsql_vector ফ্ল্যাগটি সক্রিয় করা যেতে পারে। MySQL 8.0 R20241208.01_00 বা তার পরবর্তী সংস্করণগুলোর জন্য ভেক্টর সাপোর্ট উপলব্ধ।
ক্লাউড শেল সেশনে নিম্নলিখিতটি সম্পাদন করুন:
gcloud sql instances create my-cloudsql-instance \
--database-version=MYSQL_8_4 \
--tier=db-custom-2-8192 \
--region=us-central1 \
--enable-google-ml-integration \
--edition=ENTERPRISE \
--root-password=$CLOUDSQL_PASSWORD
gcloud sql connect ব্যবহার করে ইনস্ট্যান্সটিতে সংযোগ করুন। অনুরোধ করা হলে, পাসওয়ার্ডটি লিখুন:
gcloud sql connect my-cloudsql-instance --user=root
প্রত্যাশিত আউটপুট:
$gcloud sql connect my-cloudsql-instance --user=root Allowlisting your IP for incoming connection for 5 minutes...done. Connecting to database with SQL user [root].Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 71 Server version: 8.4.4-google (Google) Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Ctrl+D চেপে অথবা exit লিখে mysql সেশন থেকে বেরিয়ে যান।
exit
জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্ম ইন্টিগ্রেশন সক্ষম করুন
Gemini Enterprise Agent Platform ইন্টিগ্রেশন সক্ষম করতে ক্লাউড SQL সার্ভিস অ্যাকাউন্টকে প্রয়োজনীয় IAM রোলটি প্রদান করুন।
ক্লাউড SQL পরিষেবা অ্যাকাউন্টের ইমেলটি সংগ্রহ করুন এবং এটিকে একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে এক্সপোর্ট করুন:
SERVICE_ACCOUNT_EMAIL=$(gcloud sql instances describe my-cloudsql-instance --format="value(serviceAccountEmailAddress)")
echo $SERVICE_ACCOUNT_EMAIL
ক্লাউড SQL পরিষেবা অ্যাকাউন্টকে roles/aiplatform.user রোলটি প্রদান করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
--role="roles/aiplatform.user"
ইনস্ট্যান্স তৈরি এবং কনফিগারেশন সম্পর্কে আরও জানতে এখানে ক্লাউড এসকিউএল ডকুমেন্টেশন পড়ুন।
৫. ডাটাবেস প্রস্তুত করুন
একটি ডাটাবেস তৈরি করুন এবং ভেক্টর সাপোর্ট সক্রিয় করুন।
ডাটাবেস তৈরি করুন
quickstart_db নামে একটি ডেটাবেস তৈরি করুন। আপনি ডেটাবেস ক্লায়েন্ট (যেমন mysql ), Google Cloud CLI, বা Cloud SQL Studio ব্যবহার করে ডেটাবেস তৈরি করতে পারেন। এই ধাপে, gcloud ব্যবহার করুন।
ক্লাউড শেলে ডাটাবেস তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud sql databases create quickstart_db --instance=my-cloudsql-instance
৬. ডেটা লোড করুন
পাবলিক ক্লাউড স্টোরেজ বাকেটে CSV ফরম্যাটে সংরক্ষিত কাল্পনিক সিম্বাল স্টোর ডেটাসেট ফাইল ব্যবহার করে ডাটাবেসে টেবিল তৈরি করুন এবং ডেটা লোড করুন।
ডাটাবেসের সাথে সংযোগ স্থাপন, সমস্ত অবজেক্ট তৈরি এবং ডেটা লোড করার জন্য ক্লাউড শেল হবে আপনার প্রধান পরিবেশ।
আমাদের ক্লাউড এসকিউএল ইনস্ট্যান্সের জন্য অনুমোদিত নেটওয়ার্কের তালিকায় আপনার ক্লাউড শেল পাবলিক আইপি যোগ করুন।
ক্লাউড শেলে নিম্নলিখিতটি চালান:
gcloud sql instances patch my-cloudsql-instance --authorized-networks=$(curl ifconfig.me)
যদি আপনার সেশন হারিয়ে যায়, রিসেট হয়ে যায় অথবা আপনি অন্য কোনো টুল থেকে কাজ করেন, তাহলে আপনার CLOUDSQL_PASSWORD ভেরিয়েবলটি আবার এক্সপোর্ট করুন:
export CLOUDSQL_PASSWORD=...your password defined for the instance...
প্রয়োজনীয় ডাটাবেস অবজেক্টগুলো তৈরি করুন। পাবলিক সোর্স থেকে স্কিমা ডাউনলোড ও প্রয়োগ করার জন্য mysql ও curl ব্যবহার করুন।
ক্লাউড শেলে নিম্নলিখিতটি চালান:
export INSTANCE_IP=$(gcloud sql instances describe my-cloudsql-instance --format="value(ipAddresses.ipAddress)")
curl -LJ https://raw.githubusercontent.com/GoogleCloudPlatform/devrel-demos/main/infrastructure/cymbal-store-embeddings/cymbal_mysql_schema.sql | mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD quickstart_db
কমান্ডের বিবরণ। পূর্ববর্তী ধাপে, আপনি আপনার ডাটাবেসের সাথে সংযোগ স্থাপন করেছেন এবং টেবিল, ইনডেক্স ও সিকোয়েন্স তৈরি করার জন্য SQL স্ক্রিপ্টটি চালিয়েছেন।
এরপরে, curl এবং mysql চালিয়ে cymbal_products ডেটা দিয়ে ডেটাবেসটি পূরণ করুন:
curl -LJ https://raw.githubusercontent.com/GoogleCloudPlatform/devrel-demos/main/infrastructure/cymbal-store-embeddings/cymbal_products.csv | mysql --enable-local-infile --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD quickstart_db -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE cymbal_products FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;"
সিম্বাল_স্টোরস নিয়ে চালিয়ে যান।
curl -LJ https://raw.githubusercontent.com/GoogleCloudPlatform/devrel-demos/main/infrastructure/cymbal-store-embeddings/cymbal_stores.csv | mysql --enable-local-infile --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD quickstart_db -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE cymbal_stores FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;"
এবং এর সাথে রয়েছে সিম্বাল ইনভেন্টরি, যেখানে প্রতিটি দোকানে থাকা প্রতিটি পণ্যের সংখ্যা উল্লেখ থাকে।
curl -LJ https://raw.githubusercontent.com/GoogleCloudPlatform/devrel-demos/main/infrastructure/cymbal-store-embeddings/cymbal_inventory.csv | mysql --enable-local-infile --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD quickstart_db -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE cymbal_inventory FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;"
ঐচ্ছিক: আপনার নিজস্ব নমুনা ডেটাসেট থাকলে, তার পরিবর্তে গুগল ক্লাউড কনসোলের ইমপোর্ট টুল ব্যবহার করে সামঞ্জস্যপূর্ণ CSV ফাইল ইম্পোর্ট করতে পারেন।
৭. এমবেডিং তৈরি করুন
জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্মের text-embedding-005 মডেল ব্যবহার করে পণ্যের বিবরণগুলির জন্য এম্বেডিং তৈরি করুন এবং সেগুলিকে ভেক্টর ডেটা হিসাবে সংরক্ষণ করুন।
ভেক্টর ডেটা সংরক্ষণ করতে হলে আপনাকে আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সে ভেক্টর কার্যকারিতা সক্রিয় করতে হবে।
ক্লাউড শেলে চালান:
gcloud sql instances patch my-cloudsql-instance \
--database-flags=cloudsql_vector=on
ডাটাবেসে সংযোগ করুন:
mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD quickstart_db
embedding ফাংশন ব্যবহার করে cymbal_products টেবিলে একটি নতুন কলাম embedding তৈরি করুন। ঐ নতুন কলামটি product_description কলামের টেক্সটের উপর ভিত্তি করে ভেক্টর embedding-গুলো ধারণ করবে:
ALTER TABLE cymbal_products ADD COLUMN embedding vector(768) using varbinary;
UPDATE cymbal_products SET embedding = mysql.ml_embedding('text-embedding-005', product_description);
দ্রষ্টব্য: ২,০০০ সারির জন্য এমবেডিং তৈরি করতে সাধারণত ৫ মিনিটেরও কম সময় লাগে।
mysql সেশন থেকে প্রস্থান করুন:
exit
৮. সাদৃশ্য অনুসন্ধান চালান
পণ্যের বিবরণের জন্য গণনা করা ভেক্টর এমবেডিংগুলোকে একটি সার্চ কোয়েরির এমবেডিংয়ের সাথে তুলনা করে একটি সাদৃশ্য অনুসন্ধান চালান।
আপনি কমান্ড লাইন থেকে অথবা ক্লাউড এসকিউএল স্টুডিও থেকে এসকিউএল কোয়েরি চালাতে পারেন। ক্লাউড এসকিউএল স্টুডিও আউটপুটে একাধিক সারি সহ দীর্ঘ এসকিউএল স্টেটমেন্ট সম্পাদনা এবং কার্যকর করার আরও সুবিধাজনক উপায় প্রদান করে।
ক্লাউড এসকিউএল স্টুডিওর জন্য একটি MySQL ব্যবহারকারী তৈরি করুন
আপনার একটি নতুন ডাটাবেস ব্যবহারকারী প্রয়োজন যা ক্লাউড এসকিউএল স্টুডিও ব্যবহার করতে পারবে। রুট ব্যবহারকারীর জন্য ব্যবহৃত পাসওয়ার্ডটি দিয়ে student নামে একটি বিল্ট-ইন ব্যবহারকারী তৈরি করুন।
ক্লাউড শেলে নিম্নলিখিতটি চালান:
gcloud sql users create student --instance=my-cloudsql-instance --password=$CLOUDSQL_PASSWORD --host=%
ক্লাউড এসকিউএল স্টুডিও শুরু করুন
- গুগল ক্লাউড কনসোলে, Cloud SQL instances- এ যান এবং
my-cloudsql-instanceক্লিক করুন।

- নেভিগেশন মেনুতে, ক্লাউড এসকিউএল স্টুডিও-তে ক্লিক করুন।

- প্রমাণীকরণ ডায়ালগে, ডেটাবেসের নাম এবং ক্রেডেনশিয়াল প্রবেশ করান:
- ডাটাবেস :
quickstart_db - ব্যবহারকারী :
student - পাসওয়ার্ড :
- ডাটাবেস :
- প্রমাণীকরণ-এ ক্লিক করুন।

- SQL এডিটর খোলার জন্য Untitled query ট্যাবটিতে ক্লিক করুন।

কোয়েরি চালান
গ্রাহকের জিজ্ঞাসা "এখানে কোন ধরনের ফলের গাছ ভালো জন্মায়?"- এর সাথে সবচেয়ে প্রাসঙ্গিক শীর্ষ ৫টি পণ্য খুঁজে বের করতে একটি কোয়েরি চালান।
KNN (সঠিক) ভেক্টর অনুসন্ধানের জন্য cosine_distance সহ কোয়েরি চালান
cosine_distance ফাংশন ব্যবহার করে আমাদের অনুরোধের জন্য সবচেয়ে উপযুক্ত প্রথম ৫টি আইটেম বেছে নিতে আপনি এই কোয়েরিটি চালাতে পারেন:
SELECT mysql.ML_EMBEDDING('text-embedding-005','What kind of fruit trees grow well here?') into @query_vector;
SELECT
cp.product_name,
left(cp.product_description,80) as description,
cp.sale_price,
cs.zip_code,
cosine_distance(cp.embedding ,@query_vector) as distance
FROM
cymbal_products cp
JOIN cymbal_inventory ci on
ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
cs.store_id=ci.store_id
AND ci.inventory>0
AND cs.store_id = 1583
ORDER BY
distance ASC
LIMIT 5;
ক্লাউড এসকিউএল স্টুডিওতে, কোয়েরিটি লিখুন এবং রান-এ ক্লিক করুন (অথবা আপনার sql সেশনে কোয়েরিটি চালান):

কোয়েরিটি কোসাইন দূরত্ব অনুসারে সাজানো মিলে যাওয়া পণ্যগুলো ফেরত দেয়:
+-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ | product_name | description | sale_price | zip_code | distance | +-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ | Malus Domestica | Malus Domestica, the classic apple tree, brings beauty and delicious fruit to yo | 100.00 | 93230 | 0.37740096545831603 | | Cerasus | Cerasus: A beautiful cherry tree that brings delicious fruit and vibrant color t | 75.00 | 93230 | 0.405704177142419 | | Persica | Persica: Enjoy homegrown, delicious peaches with this beautiful peach tree. Reac | 150.00 | 93230 | 0.41031799106722877 | | Meyer Lemon | Grow your own juicy Meyer Lemons with this semi-dwarf tree, California's favorit | 34.00 | 93230 | 0.42823360959352186 | | Acer | Acer, the classic maple. Known for vibrant fall foliage in reds, oranges, and ye | 100.00 | 93230 | 0.42953897057301615 | +-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ 5 rows in set (0.13 sec)
cosine_distance ফাংশন ব্যবহার করে কোয়েরিটি সম্পন্ন হতে আনুমানিক ০.১৩ সেকেন্ড সময় লাগে।
KNN (সঠিক) ভেক্টর অনুসন্ধানের জন্য আনুমানিক দূরত্ব সহ কোয়েরি চালান।
একই কোয়েরিটি চালান, কিন্তু approx_distance ফাংশন ব্যবহার করে KNN সার্চ পদ্ধতিতে। আপনার এমবেডিংগুলোর জন্য যদি কোনো ANN ইনডেক্স না থাকে, তবে এটি নেপথ্যে স্বয়ংক্রিয়ভাবে এক্সাক্ট সার্চে ফিরে যায়।
SELECT mysql.ML_EMBEDDING('text-embedding-005','What kind of fruit trees grow well here?') into @query_vector;
SELECT
cp.product_name,
left(cp.product_description,80) as description,
cp.sale_price,
cs.zip_code,
approx_distance(cp.embedding ,@query_vector, 'distance_measure=cosine') as distance
FROM
cymbal_products cp
JOIN cymbal_inventory ci on
ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
cs.store_id=ci.store_id
AND ci.inventory>0
AND cs.store_id = 1583
ORDER BY
distance ASC
LIMIT 5;
এবং এখানে কোয়েরি দ্বারা প্রাপ্ত পণ্যগুলির তালিকা দেওয়া হল।
+-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ | product_name | description | sale_price | zip_code | distance | +-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ | Malus Domestica | Malus Domestica, the classic apple tree, brings beauty and delicious fruit to yo | 100.00 | 93230 | 0.37740096545831603 | | Cerasus | Cerasus: A beautiful cherry tree that brings delicious fruit and vibrant color t | 75.00 | 93230 | 0.405704177142419 | | Persica | Persica: Enjoy homegrown, delicious peaches with this beautiful peach tree. Reac | 150.00 | 93230 | 0.41031799106722877 | | Meyer Lemon | Grow your own juicy Meyer Lemons with this semi-dwarf tree, California's favorit | 34.00 | 93230 | 0.42823360959352186 | | Acer | Acer, the classic maple. Known for vibrant fall foliage in reds, oranges, and ye | 100.00 | 93230 | 0.42953897057301615 | +-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ 5 rows in set, 1 warning (0.12 sec)
কোয়েরিটি সম্পাদন হতে মাত্র ০.১২ সেকেন্ড সময় লেগেছে। আমরা KNN এক্সাক্ট কোসাইন_ডিস্ট্যান্স ফাংশনের মতোই একই ফলাফল পেয়েছি।
Cloud SQL for MySQL ডকুমেন্টেশনে ফাংশনটি সম্পর্কে আরও পড়ুন।
৯. সংগৃহীত ডেটা ব্যবহার করে এলএলএম প্রতিক্রিয়া উন্নত করুন
জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্মের ফাউন্ডেশন ল্যাঙ্গুয়েজ মডেলে একটি প্রম্পটে গ্রাউন্ডেড কনটেক্সট হিসেবে কোয়েরির ফলাফল পাস করার মাধ্যমে ক্লায়েন্ট অ্যাপ্লিকেশনের জেনারেটিভ এআই প্রতিক্রিয়া উন্নত করুন।
এটি সম্পন্ন করতে:
- ক্লাউড এসকিউএল-এ ভেক্টর সার্চের ফলাফল থেকে একটি JSON পেলোড তৈরি করুন।
- এজেন্ট প্ল্যাটফর্ম স্টুডিওতে প্রম্পটটি পরীক্ষা করুন।
-
google_mlইন্টিগ্রেশন ব্যবহার করে সরাসরি SQL থেকে এন্ড-টু-এন্ড প্রম্পটটি চালান।
আউটপুট JSON ফরম্যাটে তৈরি করুন
ফলাফলকে JSON ফরম্যাটে সাজিয়ে একটি সারি ফেরত দেওয়ার জন্য কোয়েরিটি পরিবর্তন করুন:
SELECT mysql.ML_EMBEDDING('text-embedding-005','What kind of fruit trees grow well here?') into @query_vector;
WITH trees as (
SELECT
cp.product_name,
left(cp.product_description,80) as description,
cp.sale_price,
cs.zip_code,
cp.uniq_id as product_id
FROM
cymbal_products cp
JOIN cymbal_inventory ci on
ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
cs.store_id=ci.store_id
AND ci.inventory>0
AND cs.store_id = 1583
ORDER BY
(approx_distance(cp.embedding ,@query_vector, 'distance_measure=cosine')) ASC
LIMIT 1)
SELECT json_arrayagg(json_object('product_name',product_name,'description',description,'sale_price',sale_price,'zip_code',zip_code,'product_id',product_id)) FROM trees;
প্রত্যাশিত JSON আউটপুট:
[{"zip_code": 93230, "product_id": "23e41a71d63d8bbc9bdfa1d118cfddc5", "sale_price": 100.00, "description": "Malus Domestica, the classic apple tree, brings beauty and delicious fruit to yo", "product_name": "Malus Domestica"}]
এজেন্ট প্ল্যাটফর্ম স্টুডিওতে প্রম্পটটি চালান।
এজেন্ট প্ল্যাটফর্ম স্টুডিও-তে একটি জেনারেটিভ মডেলের প্রম্পটে জেনারেট করা JSON-টি কনটেক্সট হিসেবে সরবরাহ করুন।
- গুগল ক্লাউড কনসোলে, এজেন্ট প্ল্যাটফর্ম স্টুডিও খুলুন।

- এজেন্ট প্ল্যাটফর্ম স্টুডিওতে নিম্নলিখিত প্রম্পটটি প্রবেশ করান:

You are a friendly advisor helping to find a product based on the customer's needs.
Based on the client request we have loaded a list of products closely related to search.
The list in JSON format with list of values like {"product_name":"name","description":"some description","sale_price":10,"zip_code": 10234, "produt_id": "02056727942aeb714dc9a2313654e1b0"}
Here is the list of products:
<JSON_OUTPUT>
The customer asked "What tree is growing the best here?"
You should give information about the product, price and some supplemental information.
Do not ask any additional questions and assume location based on the zip code provided in the list of products.
প্রতিস্থাপন করুন আপনার কোয়েরি থেকে প্রাপ্ত JSON প্রতিক্রিয়া সহ:
You are a friendly advisor helping to find a product based on the customer's needs.
Based on the client request we have loaded a list of products closely related to search.
The list in JSON format with list of values like {"product_name":"name","description":"some description","sale_price":10,"zip_code": 10234, "produt_id": "02056727942aeb714dc9a2313654e1b0"}
Here is the list of products:
{"zip_code": 93230, "product_id": "23e41a71d63d8bbc9bdfa1d118cfddc5", "sale_price": 100.00, "description": "Malus Domestica, the classic apple tree, brings beauty and delicious fruit to yo", "product_name": "Malus Domestica"}
The customer asked "What tree is growing the best here?"
You should give information about the product, price and some supplemental information.
Do not ask any additional questions and assume location based on the zip code provided in the list of products.

- প্রম্পটটি চালান।

উত্তরটিতে দাম, বিবরণ এবং সম্পূরক তথ্য অন্তর্ভুক্ত থাকে, যা মডেলটি গাছ ও অবস্থান সম্পর্কিত তথ্যের ভিত্তিতে বাহ্যিক উৎস থেকে সংগ্রহ করে।
SQL-এ প্রম্পটটি চালান
এছাড়াও আপনি জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্মের সাথে ক্লাউড এসকিউএল এআই ইন্টিগ্রেশন ব্যবহার করে সরাসরি এসকিউএল-এর মধ্যেই একটি জেনারেটিভ মডেল থেকে প্রতিক্রিয়া পেতে পারেন।
প্রথমে মডেলটি নিবন্ধন করুন।
- প্রতিক্রিয়া তৈরির জন্য
gemini-3.5-flashমডেলটি নিবন্ধন করুন (প্রতিস্থাপন করুন)আপনার প্রজেক্ট আইডি সহ):
CALL
mysql.ml_create_model_registration(
'gemini-3.5-flash',
'https://aiplatform.googleapis.com/v1/projects/gleb-test-short-004-506517/locations/global/publishers/google/models/gemini-3.6-flash:generateContent',
'google',
'GENERIC',
NULL,
'auth_type_cloudsql_service_agent_iam',
NULL, NULL, NULL, NULL);
আমরা ভার্টেক্স এআই-এর সাথে ক্লাউড এসকিউএল এআই ইন্টিগ্রেশন ব্যবহার করে সরাসরি ডেটাবেসে এসকিউএল-এর মাধ্যমে একটি জেনারেটিভ মডেল থেকে অনুরূপ প্রতিক্রিয়া পেতে পারি।
এখন আমরা JSON ফলাফলের সাথে তৈরি করা ডেটা একটি সাবকোয়েরিতে ব্যবহার করে, SQL-এর মাধ্যমে জেনারেটিভ এআই টেক্সট মডেলকে প্রম্পটের অংশ হিসেবে সরবরাহ করতে পারি।
mysql বা Cloud SQL Studio সেশনে ডাটাবেসে কোয়েরিটি চালান।
SELECT mysql.ML_EMBEDDING('text-embedding-005','What kind of fruit trees grow well here?') into @query_vector;
WITH trees AS (
SELECT
cp.product_name,
cp.product_description AS description,
cp.sale_price,
cs.zip_code,
cp.uniq_id AS product_id
FROM
cymbal_products cp
JOIN cymbal_inventory ci ON
ci.uniq_id = cp.uniq_id
JOIN cymbal_stores cs ON
cs.store_id = ci.store_id
AND ci.inventory>0
AND cs.store_id = 1583
ORDER BY
(approx_distance(cp.embedding ,@query_vector, 'distance_measure=cosine')) ASC
LIMIT 1),
prompt AS (
SELECT
CONCAT( 'You are a friendly advisor helping to find a product based on the customer''s needs.
Based on the client request we have loaded a list of products closely related to search.
The list in JSON format with list of values like {"product_name":"name","product_description":"some description","sale_price":10}
Here is the list of products:', json_arrayagg(json_object('product_name',trees.product_name,'description',trees.description,'sale_price',trees.sale_price,'zip_code',trees.zip_code,'product_id',trees.product_id)) , 'The customer asked "What kind of fruit trees grow well here?"
You should give information about the product, price and some supplemental information') AS prompt_text
FROM
trees),
response AS (
SELECT
mysql.ML_PREDICT_ROW('gemini-3.5-flash',
json_object('contents',
json_object('role',
'user',
'parts',
json_array(
json_object('text',
prompt_text))))) AS resp
FROM
prompt)
SELECT
JSON_EXTRACT(resp, '$.candidates[0].content.parts[0].text')
FROM
response;
এবং এখানে নমুনা আউটপুট দেওয়া হলো। মডেল সংস্করণ এবং প্যারামিটারের উপর নির্ভর করে আপনার আউটপুট ভিন্ন হতে পারে।
"Hello there! I'd be happy to help you find the perfect fruit tree for your space. \n\nBased on your area, a wonderful option we currently have in stock is the **Malus Domestica** (the classic Apple Tree)!\n\nHere are the key details:\n\n* **Product Name:** Malus Domestica (Classic Apple Tree)\n* **Price:** $100.00\n\n### Why it's a great choice:\n* **Beautiful Seasonal Foliage:** It features vibrant green leaves during the summer that turn into gorgeous shades of red, orange, and yellow in the autumn. \n* **Shade & Size:** It grows to approximately 30 feet tall, making it a strong, durable tree that offers excellent shade for your yard alongside delicious fresh fruit.\n* **Growing Conditions:** It thrives best in cool, moist climates with well-draining, loamy soil and is ideal for USDA Hardiness Zones 4–8.\n\n### Supplemental Care Tips:\n* **Planting Location:** Choose a spot that gets full sunlight (at least 6 hours a day) to ensure maximum fruit production.\n* **Soil:** Make sure the soil is rich and loamy with good drainage so the roots stay healthy.\n* **Cross-Pollination:** Apple trees often produce a higher yield when planted near another compatible apple tree variety, so if you have extra space, adding a companion tree in the future can boost your harvest!\n\nLet me know if you have any questions about planting or care, or if you'd like help adding this to your cart!"
আউটপুটটি মার্কডাউন ফরম্যাটে প্রদান করা হয়।
১০. একটি নিকটতম-প্রতিবেশী সূচক তৈরি করুন।
লক্ষ লক্ষ ভেক্টর সমৃদ্ধ বিশাল ডেটাসেটের ক্ষেত্রে, ভেক্টর অনুসন্ধানের জন্য উল্লেখযোগ্য পরিমাণে কম্পিউটিং রিসোর্সের প্রয়োজন হতে পারে। কোয়েরির পারফরম্যান্স উন্নত করতে, ভেক্টর এমবেডিংগুলোর উপর একটি ইনডেক্স তৈরি করুন।
স্ক্যান সূচক তৈরি করুন
আমরা আমাদের পরীক্ষার জন্য ScanN ইনডেক্স টাইপটি ব্যবহার করে দেখব।
এমবেডিং কলামের জন্য ইনডেক্স তৈরি করতে, আপনাকে এমবেডিং কলামের জন্য আমাদের দূরত্বের পরিমাপ নির্ধারণ করতে হবে। আপনি ডকুমেন্টেশনে প্যারামিটারগুলো সম্পর্কে বিস্তারিতভাবে পড়তে পারেন।
CREATE VECTOR INDEX cymbal_products_embedding_idx ON cymbal_products(embedding) USING SCANN DISTANCE_MEASURE=COSINE;
প্রতিক্রিয়ার তুলনা করুন
ভেক্টর সার্চ কোয়েরিটি আবার চালান এবং ফলাফলগুলো দেখুন:
SELECT mysql.ML_EMBEDDING('text-embedding-005','What kind of fruit trees grow well here?') into @query_vector;
SELECT
cp.product_name,
left(cp.product_description,80) as description,
cp.sale_price,
cs.zip_code,
approx_distance(cp.embedding ,@query_vector, 'distance_measure=cosine') as distance
FROM
cymbal_products cp
JOIN cymbal_inventory ci on
ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
cs.store_id=ci.store_id
AND ci.inventory>0
AND cs.store_id = 1583
ORDER BY
distance ASC
LIMIT 5;
প্রত্যাশিত আউটপুট:
+-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ | product_name | description | sale_price | zip_code | distance | +-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ | Malus Domestica | Malus Domestica, the classic apple tree, brings beauty and delicious fruit to yo | 100.00 | 93230 | 0.37740096545831603 | | Cerasus | Cerasus: A beautiful cherry tree that brings delicious fruit and vibrant color t | 75.00 | 93230 | 0.405704177142419 | | Persica | Persica: Enjoy homegrown, delicious peaches with this beautiful peach tree. Reac | 150.00 | 93230 | 0.41031799106722877 | | Meyer Lemon | Grow your own juicy Meyer Lemons with this semi-dwarf tree, California's favorit | 34.00 | 93230 | 0.42823360959352186 | | Acer | Acer, the classic maple. Known for vibrant fall foliage in reds, oranges, and ye | 100.00 | 93230 | 0.42953897057301615 | +-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+ 5 rows in set (0.08 sec)
পারফরম্যান্সের উন্নতি সামান্যই, তবে এত ছোট ডেটাসেটের জন্য এটি প্রত্যাশিত। লক্ষ লক্ষ ভেক্টরযুক্ত বড় ডেটাসেটের ক্ষেত্রে এটি আরও অনেক বেশি লক্ষণীয় হবে।
EXPLAIN কমান্ড ব্যবহার করে এক্সিকিউশন প্ল্যানটি যাচাই করুন:
SELECT mysql.ML_EMBEDDING('text-embedding-005','What kind of fruit trees grow well here?') into @query_vector;
EXPLAIN ANALYZE SELECT
cp.product_name,
left(cp.product_description,80) as description,
cp.sale_price,
cs.zip_code,
approx_distance(cp.embedding ,@query_vector, 'distance_measure=cosine') as distance
FROM
cymbal_products cp
JOIN cymbal_inventory ci on
ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
cs.store_id=ci.store_id
AND ci.inventory>0
AND cs.store_id = 1583
ORDER BY
distance ASC
LIMIT 5;
বাস্তবায়ন পরিকল্পনা (উদ্ধৃতাংশ):
...
-> Nested loop inner join (cost=443 rows=5) (actual time=1.14..1.18 rows=5 loops=1)
-> Vector index scan on cp (cost=441 rows=5) (actual time=1.1..1.1 rows=5 loops=1)
-> Single-row index lookup on cp using PRIMARY (uniq_id=cp.uniq_id) (cost=0.25 rows=1) (actual time=0.0152..0.0152 rows=1 loops=5)
...
এটি cp টেবিলের (cymbal_products টেবিলের বিকল্প নাম) উপর ভেক্টর ইনডেক্স স্ক্যান দেখাচ্ছে।
আপনার নিজের ডেটা দিয়ে এটি চেষ্টা করে দেখুন অথবা MySQL-এ সিমান্টিক সার্চ কীভাবে কাজ করে তা দেখতে বিভিন্ন সার্চ কোয়েরি পরীক্ষা করুন।
১১. পরিবেশ পরিষ্কার করা
ক্লাউড SQL ইনস্ট্যান্সটি মুছে ফেলুন
ল্যাবের কাজ শেষ হলে ক্লাউড SQL ইনস্ট্যান্সটি ধ্বংস করে দিন।
যদি আপনার সংযোগ বিচ্ছিন্ন হয়ে যায় এবং পূর্বের সমস্ত সেটিংস হারিয়ে যায়, তাহলে ক্লাউড শেলে প্রজেক্ট এবং এনভায়রনমেন্ট ভেরিয়েবলগুলো নির্ধারণ করুন:
export INSTANCE_NAME=my-cloudsql-instance
export PROJECT_ID=$(gcloud config get-value project)
ইনস্ট্যান্সটি মুছে ফেলুন:
gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID
প্রত্যাশিত কনসোল আউটপুট:
student@cloudshell:~$ gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID All of the instance data will be lost when the instance is deleted. Do you want to continue (Y/n)? y Deleting Cloud SQL instance...done. Deleted [https://sandbox.googleapis.com/v1beta4/projects/test-project-001-402417/instances/my-cloudsql-instance].
১২. অভিনন্দন
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।
গুগল ক্লাউড লার্নিং পাথ
এই ল্যাবটি ‘প্রোডাকশন-রেডি এআই উইথ গুগল ক্লাউড’ লার্নিং পাথের একটি অংশ।
- প্রোটোটাইপ থেকে উৎপাদনে উত্তরণের ব্যবধান পূরণ করতে সম্পূর্ণ পাঠ্যক্রমটি অন্বেষণ করুন ।
-
#ProductionReadyAIহ্যাশট্যাগটি ব্যবহার করে আপনার অগ্রগতি শেয়ার করুন।
আপনি যা যা আলোচনা করেছেন
- কীভাবে একটি ক্লাউড এসকিউএল ফর মাইএসকিউএল ইনস্ট্যান্স স্থাপন করবেন
- কীভাবে ডাটাবেস তৈরি করবেন এবং ক্লাউড এসকিউএল এআই ইন্টিগ্রেশন সক্রিয় করবেন
- ডাটাবেসে ডেটা লোড করার পদ্ধতি
- ক্লাউড এসকিউএল স্টুডিও কীভাবে ব্যবহার করবেন
- ক্লাউড SQL-এ ভার্টেক্স এআই এমবেডিং মডেল কীভাবে ব্যবহার করবেন
- এজেন্ট প্ল্যাটফর্ম স্টুডিও কীভাবে ব্যবহার করবেন
- জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্ম মডেল ব্যবহার করে ফলাফলকে কীভাবে আরও সমৃদ্ধ করা যায়
- ভেক্টর ইনডেক্স ব্যবহার করে কীভাবে পারফরম্যান্স উন্নত করা যায়
AlloyDB-এর জন্য অনুরূপ কোডল্যাব অথবা Cloud SQL for Postgres-এর কোনো কোডল্যাব চেষ্টা করে দেখুন।
জরিপ
আউটপুট: