MySQL-এর জন্য ক্লাউড এসকিউএল-এ ভেক্টর এম্বেডিংয়ের সাথে শুরু করা

1. ভূমিকা

এই কোডল্যাবে আপনি শিখবেন কিভাবে ভেক্টর সার্চ এবং ভার্টেক্স এআই এম্বেডিং একত্রিত করে মাইএসকিউএল ভার্টেক্স এআই ইন্টিগ্রেশনের জন্য ক্লাউড এসকিউএল ব্যবহার করবেন।

8aa6ba3bc12a1593.png সম্পর্কে

পূর্বশর্ত

  • গুগল ক্লাউড, কনসোল সম্পর্কে প্রাথমিক ধারণা
  • কমান্ড লাইন ইন্টারফেস এবং ক্লাউড শেলের মৌলিক দক্ষতা।

তুমি কি শিখবে

  • PostgreSQL ইনস্ট্যান্সের জন্য ক্লাউড SQL কীভাবে স্থাপন করবেন
  • কিভাবে ডাটাবেস তৈরি করবেন এবং ক্লাউড SQL AI ইন্টিগ্রেশন সক্ষম করবেন
  • ডাটাবেসে ডেটা কীভাবে লোড করবেন
  • ক্লাউড এসকিউএল স্টুডিও কীভাবে ব্যবহার করবেন
  • ক্লাউড এসকিউএল-এ ভার্টেক্স এআই এমবেডিং মডেল কীভাবে ব্যবহার করবেন
  • ভার্টেক্স এআই স্টুডিও কীভাবে ব্যবহার করবেন
  • ভার্টেক্স এআই জেনারেটিভ মডেল ব্যবহার করে ফলাফল কীভাবে সমৃদ্ধ করা যায়
  • ভেক্টর সূচক ব্যবহার করে কর্মক্ষমতা কীভাবে উন্নত করা যায়

তোমার যা লাগবে

  • একটি গুগল ক্লাউড অ্যাকাউন্ট এবং গুগল ক্লাউড প্রকল্প
  • ক্রোমের মতো একটি ওয়েব ব্রাউজার যা গুগল ক্লাউড কনসোল এবং ক্লাউড শেল সমর্থন করে

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

প্রকল্প সেটআপ

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

কর্মক্ষেত্র বা স্কুল অ্যাকাউন্টের পরিবর্তে ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন।

  1. একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। গুগল ক্লাউড কনসোলে একটি নতুন প্রকল্প তৈরি করতে, হেডারে, একটি প্রকল্প নির্বাচন করুন বোতামে ক্লিক করুন যা একটি পপআপ উইন্ডো খুলবে।

295004821bab6a87.png সম্পর্কে

"একটি প্রকল্প নির্বাচন করুন" উইন্ডোতে "নতুন প্রকল্প" বোতামটি টিপুন যা নতুন প্রকল্পের জন্য একটি ডায়ালগ বক্স খুলবে।

37d264871000675d.png সম্পর্কে

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

96d86d3d5655cdbe.png সম্পর্কে

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

বিলিং সক্ষম করুন

বিলিং সক্ষম করার জন্য, আপনার কাছে দুটি বিকল্প আছে। আপনি হয় আপনার ব্যক্তিগত বিলিং অ্যাকাউন্ট ব্যবহার করতে পারেন অথবা নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করে ক্রেডিট রিডিম করতে পারেন।

$৫ গুগল ক্লাউড ক্রেডিট রিডিম করুন (ঐচ্ছিক)

এই কর্মশালাটি পরিচালনা করার জন্য, আপনার কিছু ক্রেডিট সহ একটি বিলিং অ্যাকাউন্ট প্রয়োজন। আপনি যদি নিজের বিলিং ব্যবহার করার পরিকল্পনা করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।

  1. এই লিঙ্কে ক্লিক করুন এবং একটি ব্যক্তিগত গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
  2. তুমি এরকম কিছু দেখতে পাবে:

f54628965f465486.png সম্পর্কে

  1. আপনার ক্রেডিট অ্যাক্সেস করতে এখানে ক্লিক করুন বোতামটি ক্লিক করুন। এটি আপনাকে আপনার বিলিং প্রোফাইল সেট আপ করার জন্য একটি পৃষ্ঠায় নিয়ে যাবে। যদি আপনাকে একটি বিনামূল্যে ট্রায়াল সাইন আপ স্ক্রিন দেখানো হয়, তাহলে বাতিল করুন ক্লিক করুন এবং বিলিং লিঙ্ক করতে থাকুন।

20e88842cf2a732e.png সম্পর্কে

  1. আপনি এখন একটি Google Cloud Platform ট্রায়াল বিলিং অ্যাকাউন্টের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন-এ ক্লিক করুন।

cdc87f1c57777951.png সম্পর্কে

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট সেট আপ করুন

আপনি যদি গুগল ক্লাউড ক্রেডিট ব্যবহার করে বিলিং সেট আপ করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট সেট আপ করতে, ক্লাউড কনসোলে বিলিং সক্ষম করতে এখানে যান

কিছু নোট:

  • এই ল্যাবটি সম্পূর্ণ করতে ক্লাউড রিসোর্সে $3 USD এর কম খরচ হবে।
  • আরও চার্জ এড়াতে আপনি এই ল্যাবের শেষে রিসোর্স মুছে ফেলার ধাপগুলি অনুসরণ করতে পারেন।
  • নতুন ব্যবহারকারীরা $300 USD বিনামূল্যে ট্রায়ালের জন্য যোগ্য।

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

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

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

ক্লাউড শেল সক্রিয় করুন

অথবা আপনি G তারপর S টিপতে পারেন। আপনি যদি Google Cloud Console-এর মধ্যে থাকেন অথবা এই লিঙ্কটি ব্যবহার করেন তবে এই ক্রমটি Cloud Shell সক্রিয় করবে।

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

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট যা দেখায় যে পরিবেশটি সংযুক্ত হয়েছে

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

৩. শুরু করার আগে

API সক্ষম করুন

ক্লাউড এসকিউএল , কম্পিউট ইঞ্জিন , নেটওয়ার্কিং পরিষেবা এবং ভার্টেক্স এআই ব্যবহার করার জন্য, আপনাকে আপনার গুগল ক্লাউড প্রকল্পে তাদের নিজ নিজ API গুলি সক্ষম করতে হবে।

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

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 গুলির সাথে পরিচয় করিয়ে দেওয়া হচ্ছে

  • ক্লাউড এসকিউএল অ্যাডমিন এপিআই ( sqladmin.googleapis.com ) আপনাকে প্রোগ্রাম্যাটিকভাবে ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি, কনফিগার এবং পরিচালনা করতে দেয়। এটি গুগলের সম্পূর্ণরূপে পরিচালিত রিলেশনাল ডাটাবেস পরিষেবা (MySQL, PostgreSQL এবং SQL সার্ভার সমর্থন করে) এর জন্য নিয়ন্ত্রণ সমতল প্রদান করে, প্রভিশনিং, ব্যাকআপ, উচ্চ প্রাপ্যতা এবং স্কেলিং এর মতো কাজগুলি পরিচালনা করে।
  • কম্পিউট ইঞ্জিন API ( compute.googleapis.com ) আপনাকে ভার্চুয়াল মেশিন (VM), স্থায়ী ডিস্ক এবং নেটওয়ার্ক সেটিংস তৈরি এবং পরিচালনা করতে দেয়। এটি আপনার কাজের চাপ চালানোর জন্য এবং অনেক পরিচালিত পরিষেবার জন্য অন্তর্নিহিত অবকাঠামো হোস্ট করার জন্য প্রয়োজনীয় মূল অবকাঠামো-অ্যাজ-এ-সার্ভিস (IaaS) ভিত্তি প্রদান করে।
  • ক্লাউড রিসোর্স ম্যানেজার API ( cloudresourcemanager.googleapis.com ) আপনাকে আপনার গুগল ক্লাউড প্রকল্পের মেটাডেটা এবং কনফিগারেশন প্রোগ্রাম্যাটিকভাবে পরিচালনা করতে দেয়। এটি আপনাকে সংস্থানগুলি সংগঠিত করতে, পরিচয় এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) নীতিগুলি পরিচালনা করতে এবং প্রকল্পের শ্রেণিবিন্যাস জুড়ে অনুমতিগুলি যাচাই করতে সক্ষম করে।
  • সার্ভিস নেটওয়ার্কিং API ( servicenetworking.googleapis.com ) আপনাকে আপনার ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্ক এবং গুগলের পরিচালিত পরিষেবাগুলির মধ্যে ব্যক্তিগত সংযোগের সেটআপ স্বয়ংক্রিয় করতে দেয়। AlloyDB এর মতো পরিষেবাগুলির জন্য ব্যক্তিগত IP অ্যাক্সেস স্থাপন করা বিশেষভাবে প্রয়োজন যাতে তারা আপনার অন্যান্য সংস্থানগুলির সাথে নিরাপদে যোগাযোগ করতে পারে।
  • Vertex AI API ( aiplatform.googleapis.com ) আপনার অ্যাপ্লিকেশনগুলিকে মেশিন লার্নিং মডেল তৈরি, স্থাপন এবং স্কেল করতে সক্ষম করে। এটি Google ক্লাউডের সমস্ত AI পরিষেবার জন্য একীভূত ইন্টারফেস প্রদান করে, যার মধ্যে রয়েছে জেনারেটিভ AI মডেলগুলিতে অ্যাক্সেস (যেমন জেমিনি) এবং কাস্টম মডেল প্রশিক্ষণ।

৪. একটি ক্লাউড SQL ইনস্ট্যান্স তৈরি করুন

ভার্টেক্স এআই-এর সাথে ডাটাবেস ইন্টিগ্রেশনের মাধ্যমে ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন।

ডাটাবেস পাসওয়ার্ড তৈরি করুন

ডিফল্ট ডাটাবেস ব্যবহারকারীর জন্য পাসওয়ার্ড নির্ধারণ করুন। আপনি নিজের পাসওয়ার্ড নির্ধারণ করতে পারেন অথবা একটি র্যান্ডম ফাংশন ব্যবহার করে একটি তৈরি করতে পারেন:

export CLOUDSQL_PASSWORD=`openssl rand -hex 12`

পাসওয়ার্ডের জন্য তৈরি মানটি লক্ষ্য করুন:

echo $CLOUDSQL_PASSWORD

MySQL ইনস্ট্যান্সের জন্য ক্লাউড SQL তৈরি করুন

একটি ইনস্ট্যান্স তৈরি করার সময় 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 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

ভার্টেক্স এআই ইন্টিগ্রেশন সক্ষম করুন

ভার্টেক্স এআই ইন্টিগ্রেশন ব্যবহার করতে সক্ষম হওয়ার জন্য অভ্যন্তরীণ ক্লাউড এসকিউএল পরিষেবা অ্যাকাউন্টে প্রয়োজনীয় সুযোগ-সুবিধা প্রদান করুন।

ক্লাউড SQL ইন্টার্নাল সার্ভিস অ্যাকাউন্টের ইমেল খুঁজে বের করুন এবং এটি একটি ভেরিয়েবল হিসেবে এক্সপোর্ট করুন।

SERVICE_ACCOUNT_EMAIL=$(gcloud sql instances describe my-cloudsql-instance --format="value(serviceAccountEmailAddress)")
echo $SERVICE_ACCOUNT_EMAIL

ক্লাউড SQL পরিষেবা অ্যাকাউন্টে Vertex AI-এর অ্যাক্সেস দিন:

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
  --role="roles/aiplatform.user"

ক্লাউড SQL ডকুমেন্টেশনে ইনস্ট্যান্স তৈরি এবং কনফিগারেশন সম্পর্কে আরও পড়ুন এখানে

৫. ডাটাবেস প্রস্তুত করুন

এখন আমাদের একটি ডাটাবেস তৈরি করতে হবে এবং ভেক্টর সাপোর্ট সক্ষম করতে হবে।

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

quickstart_db নামে একটি ডাটাবেস তৈরি করুন। এটি করার জন্য আমাদের কাছে বিভিন্ন বিকল্প রয়েছে যেমন কমান্ড লাইন ডাটাবেস ক্লায়েন্ট যেমন mySQL, SDK বা Cloud SQL Studio এর জন্য mysql। আমরা ডাটাবেস তৈরির জন্য SDK (gcloud) ব্যবহার করব।

ক্লাউড শেলে ডাটাবেস তৈরির জন্য কমান্ডটি কার্যকর করুন

gcloud sql databases create quickstart_db --instance=my-cloudsql-instance

6. ডেটা লোড করুন

এখন আমাদের ডাটাবেসে অবজেক্ট তৈরি করতে হবে এবং ডেটা লোড করতে হবে। আমরা কাল্পনিক সিম্বাল স্টোর ডেটা ব্যবহার করতে যাচ্ছি। ডেটা SQL (স্কিমার জন্য) এবং 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 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 কোডটি কার্যকর করেছি যা টেবিল, সূচী এবং ক্রম তৈরি করেছে।

পরবর্তী ধাপ হল cymbal_products ডেটা লোড করা। আমরা একই curl এবং mysql ইউটিলিটি ব্যবহার করি।

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;"

তারপর আমরা cymbal_stores দিয়ে এগিয়ে যাব।

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;"

এবং cymbal_inventory দিয়ে সম্পূর্ণ করুন যেখানে প্রতিটি দোকানের প্রতিটি পণ্যের সংখ্যা রয়েছে।

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 ফাইলগুলি ক্লাউড কনসোল থেকে ক্লাউড SQL আমদানি সরঞ্জামের সাথে সামঞ্জস্যপূর্ণ থাকে তবে আপনি উপস্থাপিত পদ্ধতির পরিবর্তে এটি ব্যবহার করতে পারেন।

৭. এম্বেডিং তৈরি করুন

পরবর্তী ধাপ হল Google Vertex AI থেকে textembedding-005 মডেল ব্যবহার করে আমাদের পণ্যের বর্ণনার জন্য এম্বেডিং তৈরি করা এবং cymbal_products টেবিলের নতুন কলামে সেগুলি সংরক্ষণ করা।

ভেক্টর ডেটা সংরক্ষণ করার জন্য আমাদের ক্লাউড SQL ইনস্ট্যান্সে ভেক্টর কার্যকারিতা সক্ষম করতে হবে। ক্লাউড শেলে এক্সিকিউট করুন:

gcloud sql instances patch my-cloudsql-instance \
--database-flags=cloudsql_vector=on

ডাটাবেসের সাথে সংযোগ স্থাপন করুন:

mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD quickstart_db

এবং আমাদের cymbal_products টেবিলে embedding ফাংশন ব্যবহার করে একটি নতুন কলাম তৈরি করুন। সেই নতুন কলামটি product_description কলামের টেক্সটের উপর ভিত্তি করে ভেক্টর এম্বেডিংগুলিকে ধরে রাখবে।

ALTER TABLE cymbal_products ADD COLUMN embedding vector(768) using varbinary;
UPDATE cymbal_products SET embedding = mysql.ml_embedding('text-embedding-005', product_description);

২০০০ সারির জন্য ভেক্টর এম্বেডিং তৈরি করতে সাধারণত ৫ মিনিটেরও কম সময় লাগে, তবে কখনও কখনও কিছুটা বেশি সময় লাগতে পারে এবং প্রায়শই অনেক দ্রুত শেষ হয়।

৮. সাদৃশ্য অনুসন্ধান চালান

আমরা এখন একই এমবেডিং মডেল ব্যবহার করে আমাদের অনুরোধের জন্য তৈরি করা ভেক্টর মানের উপর ভিত্তি করে বর্ণনার জন্য গণনা করা ভেক্টর মানের উপর ভিত্তি করে সাদৃশ্য অনুসন্ধান ব্যবহার করে আমাদের অনুসন্ধান চালাতে পারি।

SQL কোয়েরি একই কমান্ড লাইন ইন্টারফেস থেকে অথবা বিকল্প হিসেবে, Cloud SQL Studio থেকে কার্যকর করা যেতে পারে। যেকোনো মাল্টি-রো এবং জটিল কোয়েরি ক্লাউড SQL স্টুডিওতে পরিচালনা করা ভালো।

একজন ব্যবহারকারী তৈরি করুন

আমাদের একজন নতুন ব্যবহারকারীর প্রয়োজন যিনি ক্লাউড এসকিউএল স্টুডিও ব্যবহার করতে পারবেন। আমরা রুট ব্যবহারকারীর জন্য যে পাসওয়ার্ড ব্যবহার করেছি সেই একই পাসওয়ার্ড দিয়ে একটি বিল্ট-ইন টাইপ ইউজার স্টুডেন্ট তৈরি করতে যাচ্ছি।

ক্লাউড শেল এক্সিকিউটে:

gcloud sql users create student  --instance=my-cloudsql-instance --password=$CLOUDSQL_PASSWORD --host=%

ক্লাউড এসকিউএল স্টুডিও শুরু করুন

কনসোলে আমরা আগে তৈরি করা ক্লাউড SQL ইনস্ট্যান্সে ক্লিক করুন।

27f060eb2764a26a.png সম্পর্কে

ডান প্যানেলে এটি খোলা হলে আমরা ক্লাউড SQL স্টুডিও দেখতে পাব। এটিতে ক্লিক করুন।

অনুসরণ

এটি একটি ডায়ালগ খুলবে যেখানে আপনি ডাটাবেসের নাম এবং আপনার শংসাপত্রগুলি প্রদান করবেন:

  • ডাটাবেস: কুইকস্টার্ট_ডিবি
  • ব্যবহারকারী: ছাত্র
  • পাসওয়ার্ড: ব্যবহারকারীর জন্য আপনার উল্লেখিত পাসওয়ার্ড

এবং "AUTHENTICATE" বোতামে ক্লিক করুন।

5c898e4a4a0adb96.png সম্পর্কে

এটি পরবর্তী উইন্ডোটি খুলবে যেখানে আপনি ডানদিকে "সম্পাদক" ট্যাবে ক্লিক করলে SQL সম্পাদক খুলবেন।

983d35d20f8a3dda.png সম্পর্কে

এখন আমরা আমাদের প্রশ্নগুলি চালানোর জন্য প্রস্তুত।

কোয়েরি চালান

ক্লায়েন্টের অনুরোধের সাথে সবচেয়ে ঘনিষ্ঠভাবে সম্পর্কিত উপলব্ধ পণ্যগুলির একটি তালিকা পেতে একটি কোয়েরি চালান। ভেক্টর মান পেতে আমরা Vertex AI-কে যে অনুরোধটি পাঠাতে যাচ্ছি তা "এখানে কোন ধরণের ফলের গাছ ভালো জন্মে?" এর মতো শোনাচ্ছে।

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 স্টুডিও এডিটরে পেস্ট করুন এবং "RUN" বোতাম টিপুন অথবা quickstart_db ডাটাবেসের সাথে সংযোগকারী আপনার কমান্ড লাইন সেশনে পেস্ট করুন।

a8be9da7d5c2b176.png সম্পর্কে

এবং এখানে প্রশ্নের সাথে মিলে যাওয়া পণ্যগুলির একটি তালিকা রয়েছে।

+-----------------+----------------------------------------------------------------------------------+------------+----------+---------------------+
| 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 ফাংশনের মাধ্যমে কোয়েরি এক্সিকিউশন করতে ০.১৩ সেকেন্ড সময় লেগেছে।

এখন আমরা একই কোয়েরি চালাই কিন্তু 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)

কোয়েরি এক্সিকিউশন করতে মাত্র ০.১২ সেকেন্ড সময় লেগেছে। আমরা cosine_distance ফাংশনের মতো একই ফলাফল পেয়েছি।

৯. পুনরুদ্ধারকৃত ডেটা ব্যবহার করে এলএলএম প্রতিক্রিয়া উন্নত করুন

আমরা সম্পাদিত কোয়েরির ফলাফল ব্যবহার করে একটি ক্লায়েন্ট অ্যাপ্লিকেশনের Gen AI LLM প্রতিক্রিয়া উন্নত করতে পারি এবং Vertex AI জেনারেটিভ ফাউন্ডেশন ল্যাঙ্গুয়েজ মডেলের প্রম্পটের অংশ হিসাবে সরবরাহিত কোয়েরি ফলাফল ব্যবহার করে একটি অর্থপূর্ণ আউটপুট প্রস্তুত করতে পারি।

এটি অর্জনের জন্য আমাদের ভেক্টর অনুসন্ধান থেকে আমাদের ফলাফলগুলি সহ একটি JSON তৈরি করতে হবে, তারপর একটি অর্থপূর্ণ আউটপুট তৈরি করতে Vertex AI-তে একটি LLM মডেলের জন্য একটি প্রম্পট যোগ করার জন্য সেই জেনারেট করা JSON ব্যবহার করতে হবে। প্রথম ধাপে আমরা JSON তৈরি করি, তারপর আমরা Vertex AI স্টুডিওতে এটি পরীক্ষা করি এবং শেষ ধাপে আমরা এটি একটি SQL স্টেটমেন্টে অন্তর্ভুক্ত করি যা একটি অ্যাপ্লিকেশনে ব্যবহার করা যেতে পারে।

JSON ফর্ম্যাটে আউটপুট তৈরি করুন

JSON ফর্ম্যাটে আউটপুট তৈরি করতে কোয়েরিটি পরিবর্তন করুন এবং Vertex AI তে পাস করার জন্য শুধুমাত্র একটি সারি ফেরত দিন।

ANN অনুসন্ধান ব্যবহার করে কোয়েরির উদাহরণ এখানে দেওয়া হল:

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"}]

ভার্টেক্স এআই স্টুডিওতে প্রম্পটটি চালান

আমরা Vertex AI স্টুডিওতে জেনারেটিভ AI টেক্সট মডেলের প্রম্পটের অংশ হিসেবে জেনারেটেড JSON ব্যবহার করতে পারি।

ক্লাউড কনসোলে Vertex AI Studio Prompt খুলুন।

d48549b1b0f449b4.png সম্পর্কে

এটি আপনাকে অতিরিক্ত API সক্রিয় করতে বলতে পারে কিন্তু আপনি অনুরোধটি উপেক্ষা করতে পারেন। আমাদের ল্যাবটি শেষ করার জন্য আমাদের কোনও অতিরিক্ত API-এর প্রয়োজন নেই।

স্টুডিওতে একটি প্রম্পট দিন।

2a6f5a338fefd229.png সম্পর্কে

আমরা যে প্রম্পটটি ব্যবহার করতে যাচ্ছি তা এখানে:

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:
[place your JSON here]
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.

এবং যখন আমরা আমাদের JSON মান সহ এবং gemini-2.5-flash মডেল ব্যবহার করে প্রম্পটটি চালাই তখন ফলাফলটি এখানে:

62fccb783d4d4985.png সম্পর্কে

এই উদাহরণে মডেলটি থেকে আমরা যে উত্তরটি পেয়েছি তা হল শব্দার্থিক অনুসন্ধানের ফলাফল এবং উল্লেখিত জিপ কোডে উপলব্ধ সেরা মিলিত পণ্য ব্যবহার করা।

SQL-এ প্রম্পটটি চালান

আমরা সরাসরি ডাটাবেসে SQL ব্যবহার করে একটি জেনারেটিভ মডেল থেকে অনুরূপ প্রতিক্রিয়া পেতে Vertex AI এর সাথে Cloud SQL AI ইন্টিগ্রেশন ব্যবহার করতে পারি।

এখন আমরা SQL ব্যবহার করে জেনারেটিভ AI টেক্সট মডেলের প্রম্পটের অংশ হিসেবে JSON ফলাফল সহ একটি সাবকোয়েরিতে জেনারেট করা তথ্য ব্যবহার করতে পারি।

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('publishers/google/models/gemini-2.0-flash-001:generateContent',
        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;

এবং এখানে নমুনা আউটপুট। মডেল সংস্করণ এবং প্যারামিটারের উপর নির্ভর করে আপনার আউটপুট ভিন্ন হতে পারে।:

"Okay, I see you're looking for fruit trees that grow well in your area. Based on the available product, the **Malus Domestica** (Apple Tree) is a great option to consider!\n\n* **Product:** Malus Domestica (Apple Tree)\n* **Description:** This classic apple tree grows to about 30 feet tall and provides beautiful seasonal color with green leaves in summer and fiery colors in the fall. It's known for its strength and provides good shade. Most importantly, it produces delicious apples!\n* **Price:** \\$100.00\n* **Growing Zones:** This particular apple tree is well-suited for USDA zones 4-8. Since your zip code is 93230, you are likely in USDA zone 9a or 9b. While this specific tree is rated for zones 4-8, with proper care and variety selection, apple trees can still thrive in slightly warmer climates. You may need to provide extra care during heat waves.\n\n**Recommendation:** I would recommend investigating varieties of Malus Domestica suited to slightly warmer climates or contacting a local nursery/arborist to verify if it is a good fit for your local climate conditions.\n"

আউটপুটটি মার্কডাউন ফর্ম্যাটে প্রদান করা হয়েছে।

১০. একটি নিকটতম-প্রতিবেশী সূচক তৈরি করুন

আমাদের ডেটাসেট তুলনামূলকভাবে ছোট এবং প্রতিক্রিয়া সময় মূলত AI মডেলগুলির সাথে মিথস্ক্রিয়ার উপর নির্ভর করে। কিন্তু যখন আপনার লক্ষ লক্ষ ভেক্টর থাকে তখন ভেক্টর অনুসন্ধান আমাদের প্রতিক্রিয়া সময়ের একটি উল্লেখযোগ্য অংশ নিতে পারে এবং সিস্টেমের উপর একটি উচ্চ লোড চাপিয়ে দিতে পারে। এটি উন্নত করার জন্য আমরা আমাদের ভেক্টরগুলির উপরে একটি সূচক তৈরি করতে পারি।

ScANN সূচক তৈরি করুন

আমরা আমাদের পরীক্ষার জন্য 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].

১২. অভিনন্দন

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

গুগল ক্লাউড লার্নিং পাথ

এই ল্যাবটি গুগল ক্লাউড লার্নিং পাথ সহ প্রোডাকশন-রেডি এআই-এর অংশ।

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

  • PostgreSQL ইনস্ট্যান্সের জন্য ক্লাউড SQL কীভাবে স্থাপন করবেন
  • কিভাবে ডাটাবেস তৈরি করবেন এবং ক্লাউড SQL AI ইন্টিগ্রেশন সক্ষম করবেন
  • ডাটাবেসে ডেটা কীভাবে লোড করবেন
  • ক্লাউড এসকিউএল স্টুডিও কীভাবে ব্যবহার করবেন
  • ক্লাউড এসকিউএল-এ ভার্টেক্স এআই এমবেডিং মডেল কীভাবে ব্যবহার করবেন
  • ভার্টেক্স এআই স্টুডিও কীভাবে ব্যবহার করবেন
  • ভার্টেক্স এআই জেনারেটিভ মডেল ব্যবহার করে ফলাফল কীভাবে সমৃদ্ধ করা যায়
  • ভেক্টর সূচক ব্যবহার করে কর্মক্ষমতা কীভাবে উন্নত করা যায়

AlloyDB-এর জন্য অনুরূপ কোডল্যাব অথবা Postgres-এর জন্য ক্লাউড SQL-এর জন্য একটি কোডল্যাব ব্যবহার করে দেখুন।

১৩. জরিপ

আউটপুট:

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

শুধু এটি পড়ুন এটি পড়ুন এবং অনুশীলনগুলি সম্পূর্ণ করুন।