AlloyDB-তে মাল্টিমোডাল এম্বেডিং

১. ভূমিকা

bb67830f66d83d3f.png

এই কোডল্যাবটি AlloyDB স্থাপন এবং মাল্টিমোডাল এমবেডিং ব্যবহার করে সিমান্টিক সার্চের জন্য এআই ইন্টিগ্রেশন কাজে লাগানোর একটি নির্দেশিকা প্রদান করে। এই ল্যাবটি AlloyDB-এর এআই বৈশিষ্ট্যগুলির জন্য নিবেদিত একটি ল্যাব সংগ্রহের অংশ। আপনি ডকুমেন্টেশনের AlloyDB এআই পৃষ্ঠায় আরও বিস্তারিত পড়তে পারেন।

পূর্বশর্ত

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

আপনি যা শিখবেন

  • কীভাবে AlloyDB for Postgres স্থাপন করবেন
  • AlloyDB Studio কীভাবে ব্যবহার করবেন
  • মাল্টিমোডাল ভেক্টর সার্চ কীভাবে ব্যবহার করবেন
  • AlloyDB AI অপারেটরদের কীভাবে সক্রিয় করবেন
  • মাল্টিমোডাল সার্চের জন্য কীভাবে বিভিন্ন AlloyDB AI অপারেটর ব্যবহার করবেন
  • টেক্সট এবং ইমেজ সার্চের ফলাফল একত্রিত করতে AlloyDB AI কীভাবে ব্যবহার করবেন

আপনার যা যা লাগবে

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

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

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

  1. Google Cloud Console- এ সাইন-ইন করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে একটি তৈরি করতে হবে।

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

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

295004821bab6a87.png

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

37d264871000675d.png

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

96d86d3d5655cdbe.png

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

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

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

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

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

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট তৈরি করুন

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

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট তৈরি করতে, ক্লাউড কনসোলে বিলিং চালু করার জন্য এখানে যান

কিছু নোট:

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

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

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

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

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

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

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

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

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

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

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

AlloyDB , Compute Engine , Networking services , এবং Vertex AI ব্যবহার করার জন্য, আপনাকে আপনার Google Cloud প্রজেক্টে এগুলোর নিজ নিজ API সক্রিয় করতে হবে।

টার্মিনালে ক্লাউড শেল-এর ভিতরে, আপনার প্রজেক্ট আইডি সেট আপ করা আছে কিনা তা নিশ্চিত করুন। প্রজেক্ট আইডিটি কমান্ড প্রম্পটে নিম্নলিখিতের মতো বন্ধনীর মধ্যে দেখানো উচিত:

student@cloudshell:~ (test-project-001-402417)$

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

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 \
                       secretmanager.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 \
                       secretmanager.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.

৪. AlloyDB স্থাপন করুন

AlloyDB ক্লাস্টার এবং প্রাইমারি ইনস্ট্যান্স তৈরি করুন। নিম্নলিখিত পদ্ধতিতে Google Cloud SDK ব্যবহার করে একটি AlloyDB ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করার পদ্ধতি বর্ণনা করা হয়েছে। আপনি যদি কনসোল পদ্ধতি পছন্দ করেন, তবে এখান থেকে ডকুমেন্টেশন অনুসরণ করতে পারেন।

একটি 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-এর অনুমতি যোগ করুন।

উপরে থাকা "+" চিহ্নটি ব্যবহার করে আরেকটি ক্লাউড শেল ট্যাব খুলুন।

abc505ac4d41f24e.png

নতুন ক্লাউড শেল ট্যাবে নিম্নলিখিতটি চালান:

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"

প্রত্যাশিত কনসোল আউটপুট:

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-এর Clusters পৃষ্ঠায় যান।

প্রাইমারি ইনস্ট্যান্সটিতে ক্লিক করে আপনার AlloyDB ক্লাস্টারের ওয়েব কনসোল ইন্টারফেসটি খুলুন।

1d7298e7096e7313.png

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

a33131c72ad29478.png

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

2fcb84f70448118c.png

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

9124e0e69f275c1.jpeg

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

a0cac3c673d54e0c.jpeg

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

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

AlloyDB Studio Editor-এ নিম্নলিখিত কমান্ডটি চালান।

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

CREATE DATABASE quickstart_db

প্রত্যাশিত আউটপুট:

Statement executed successfully

quickstart_db-এর সাথে সংযোগ করুন

ব্যবহারকারী/ডাটাবেস পরিবর্তন করার বাটনটি ব্যবহার করে স্টুডিওতে পুনরায় সংযোগ করুন।

6f5c98f5d0b3d550.png

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

309e09003db414c3.png

এটি একটি নতুন সংযোগ খুলবে যেখানে আপনি quickstart_db ডাটাবেসের অবজেক্টগুলো নিয়ে কাজ করতে পারবেন।

৬. নমুনা তথ্য

এখন আমাদের ডাটাবেসে অবজেক্ট তৈরি করতে হবে এবং ডেটা লোড করতে হবে। আমরা কাল্পনিক ডেটা সহ একটি কাল্পনিক 'সিম্বল' স্টোর ব্যবহার করতে যাচ্ছি।

ডেটা ইম্পোর্ট করার আগে আমাদের ডেটাটাইপ এবং ইনডেক্স সমর্থনকারী এক্সটেনশনগুলো সক্রিয় করতে হবে। আমাদের দুটি এক্সটেনশন প্রয়োজন: একটি যা ভেক্টর ডেটা টাইপ সমর্থন করে এবং অন্যটি যা AlloyDB ScaNN ইনডেক্স সমর্থন করে।

AlloyDB Studio-তে, quickstart_db-এর সাথে সংযোগ করুন এবং নিম্নলিখিত কমান্ডটি চালান:

CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS alloydb_scann;

ডেটা সেটটি একটি SQL ফাইল হিসাবে প্রস্তুত করে রাখা হয়, যা ইম্পোর্ট ইন্টারফেস ব্যবহার করে ডাটাবেসে লোড করা যায়। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters import $ADBCLUSTER --region=$REGION --database=quickstart_db --gcs-uri='gs://sample-data-and-media/ecomm-retail/ecom_generic_vectors.sql' --user=postgres --sql

এই কমান্ডটি AlloyDB SDK ব্যবহার করে agentspace_user নামে একটি ইউজার তৈরি করে এবং তারপর সমস্ত প্রয়োজনীয় অবজেক্ট তৈরি ও ডেটা ইনসার্ট করার মাধ্যমে সরাসরি GCS বাকেট থেকে ডেটাবেসে স্যাম্পল ডেটা ইম্পোর্ট করে।

ইম্পোর্ট করার পর আমরা AlloyDB Studio-তে টেবিলগুলো যাচাই করতে পারি। টেবিলগুলো ecomm স্কিমাতে রয়েছে:

225f01e0ed6b9997.jpeg

এবং টেবিলগুলোর মধ্যে একটির সারির সংখ্যা যাচাই করুন।

select count(*) from ecomm.products;

ee327738738a9c7f.jpeg

আমরা সফলভাবে আমাদের নমুনা ডেটা ইম্পোর্ট করেছি এবং পরবর্তী পদক্ষেপগুলো নিয়ে এগিয়ে যেতে পারি।

৭. টেক্সট এমবেডিং ব্যবহার করে শব্দার্থিক অনুসন্ধান

এই অধ্যায়ে আমরা টেক্সট এমবেডিং ব্যবহার করে সিমান্টিক সার্চ প্রয়োগের চেষ্টা করব এবং এর সাথে প্রচলিত পোস্টগ্রেস টেক্সট ও ফুলটেক্সট সার্চের তুলনা করব।

চলুন প্রথমে LIKE অপারেটর ব্যবহার করে স্ট্যান্ডার্ড PostgreSQL SQL দিয়ে ক্লাসিক সার্চটি চেষ্টা করে দেখি।

AlloyDB Studio-তে quickstart_db-এর সাথে সংযোগ স্থাপন করুন এবং নিম্নলিখিত কোয়েরিটি ব্যবহার করে একটি রেইন জ্যাকেট অনুসন্ধান করার চেষ্টা করুন:

SET session.my_search_var='%wet%conditions%jacket%';
SELECT
  name,
  product_description,
  retail_price,   replace(product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url
FROM
  ecomm.products
WHERE
  name ILIKE current_setting('session.my_search_var')
  OR product_description ILIKE current_setting('session.my_search_var')
LIMIT
  10;

কোয়েরিটি কোনো সারি ফেরত দেয় না, কারণ এর জন্য পণ্যের নাম বা বিবরণে 'wet conditions' এবং 'jacket'-এর মতো হুবহু শব্দ থাকা প্রয়োজন। এবং 'wet conditions jacket' ও 'rain conditions jacket' এক জিনিস নয়।

আমরা অনুসন্ধানে সম্ভাব্য সব রকমফের অন্তর্ভুক্ত করার চেষ্টা করতে পারি। চলুন, শুধু দুটি শব্দ অন্তর্ভুক্ত করার চেষ্টা করি। উদাহরণস্বরূপ:

SELECT
  name,
  product_description,
  retail_price,
   replace(product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url
FROM
  ecomm.products
WHERE
  name ILIKE '%wet%jacket%'
  OR name ILIKE '%jacket%wet%'
  OR name ILIKE '%jacket%'
  OR name ILIKE '%%wet%'
  OR product_description ILIKE '%wet%jacket%'
  OR product_description ILIKE '%jacket%wet%'
  OR product_description ILIKE '%jacket%'
  OR product_description ILIKE '%wet%'
LIMIT
  10;

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

এখন আমরা এমবেডিং ব্যবহার করে একই ধরনের অনুসন্ধান করতে পারি। আমরা ইতিমধ্যেই বিভিন্ন মডেল ব্যবহার করে আমাদের পণ্যগুলির জন্য এমবেডিং পূর্ব-গণনা করেছি। আমরা গুগলের সর্বশেষ gemini-embedding-001 মডেলটি ব্যবহার করতে যাচ্ছি। আমরা সেগুলিকে ecomm.products টেবিলের ' product_embedding ' কলামে সংরক্ষণ করেছি। যদি আমরা নিম্নলিখিত কোয়েরিটি ব্যবহার করে আমাদের 'rain jacket for men' অনুসন্ধানের শর্তের জন্য একটি কোয়েরি চালাই:

SELECT
  name,
  product_description,
  retail_price,
   replace(product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url,
  product_embedding <=> embedding ('gemini-embedding-001','wet conditions jacket for men')::vector AS distance
FROM
  ecomm.products
ORDER BY distance
LIMIT
  10;

এটি শুধু ভেজা অবস্থার জন্য জ্যাকেটই দেখাবে না, বরং সমস্ত ফলাফল সাজিয়ে সবচেয়ে প্রাসঙ্গিক ফলাফলগুলোকে উপরে রাখবে।

এমবেডিং সহ কোয়েরিটি ৯০-১৫০ মিলিসেকেন্ডের মধ্যে ফলাফল প্রদান করে, যার কিছু অংশ ক্লাউড এমবেডিং মডেল থেকে ডেটা সংগ্রহ করতে ব্যয় হয়। এক্সিকিউশন প্ল্যান দেখলে বোঝা যায়, মডেলে পাঠানো অনুরোধটি প্ল্যানিং টাইমের মধ্যেই অন্তর্ভুক্ত থাকে। কোয়েরির যে অংশটি সার্চের কাজ করে, তা বেশ সংক্ষিপ্ত। AlloyDB ScaNN ইনডেক্স ব্যবহার করে ২৯ হাজার রেকর্ডে সার্চটি করতে ৭ মিলিসেকেন্ডেরও কম সময় লাগে।

এখানে এক্সিকিউশন প্ল্যানের আউটপুট দেওয়া হলো:

সীমা (খরচ=২৭০৯.২০..২৭১৮.৮২ সারি=১০ প্রস্থ=৪৯০) (প্রকৃত সময়=৬.৯৬৬..৭.০৪৯ সারি=১০ লুপ=১)

-> products-এর উপর embedding_scann ব্যবহার করে ইন্ডেক্স স্ক্যান (খরচ=২৭০৯.২০..৩০৭৩৬.৪০ সারি=২৯১২০ প্রস্থ=৪৯০) (প্রকৃত সময়=৬.৯৬৪..৭.০৪৬ সারি=১০ লুপ=১)

     Order By: (product_embedding &lt;=&gt; '[-0.0020264734,-0.016582033,0.027258193

...

-0.0051468653,-0.012440448]'::ভেক্টর)

     Limit: 10

পরিকল্পনার সময়: ১৩৬.৫৭৯ মিলিসেকেন্ড

সম্পাদনের সময়: ৬.৭৯১ মিলিসেকেন্ড

(৬ সারি)

এটি ছিল টেক্সট-অনলি এমবেডিং মডেল ব্যবহার করে করা টেক্সট এমবেডিং সার্চ। কিন্তু আমাদের প্রোডাক্টের ছবিও আছে এবং আমরা সার্চের সাথে সেগুলোও ব্যবহার করতে পারি। পরবর্তী অধ্যায়ে আমরা দেখাবো কিভাবে মাল্টিমোডাল মডেল সার্চের জন্য ছবি ব্যবহার করে।

৮. মাল্টিমোডাল সার্চ ব্যবহার করা

যদিও টেক্সট-ভিত্তিক সিমান্টিক সার্চ বেশ কার্যকর, তবে জটিল বিবরণ বর্ণনা করা কঠিন হতে পারে। AlloyDB-এর মাল্টিমোডাল সার্চ একটি বাড়তি সুবিধা দেয়, যা ছবির মাধ্যমে পণ্য খুঁজে বের করার সুযোগ করে দেয়। এটি বিশেষভাবে সহায়ক হয় যখন শুধুমাত্র টেক্সট বর্ণনার চেয়ে ভিজ্যুয়াল উপস্থাপনা অনুসন্ধানের উদ্দেশ্যকে আরও কার্যকরভাবে স্পষ্ট করে। উদাহরণস্বরূপ - "ছবিতে থাকা এই কোটটির মতো একটি কোট খুঁজে দিন"।

চলুন আমাদের জ্যাকেটের উদাহরণে ফিরে যাই। আমি যা খুঁজতে চাই তার মতো দেখতে কোনো জ্যাকেটের ছবি যদি আমার কাছে থাকে, তাহলে আমি সেটি গুগল মাল্টিমোডাল এমবেডিং মডেলে পাঠাতে পারি এবং আমার প্রোডাক্টগুলোর ছবির এমবেডিংগুলোর সাথে তুলনা করতে পারি। আমাদের টেবিলে 'product_image_embedding' কলামে আমাদের প্রোডাক্টগুলোর ছবির জন্য গণনা করা এমবেডিংগুলো আগে থেকেই দেওয়া আছে এবং 'product_image_embedding_model' কলামে ব্যবহৃত মডেলটিও আপনি দেখতে পারেন।

আমাদের অনুসন্ধানের জন্য, আমরা image_embedding ফাংশনটি ব্যবহার করে আমাদের ছবির এমবেডিং পেতে পারি এবং সেটিকে পূর্ব-গণনাকৃত এমবেডিংগুলোর সাথে তুলনা করতে পারি। ফাংশনটি সক্রিয় করতে, আমাদের নিশ্চিত করতে হবে যে আমরা google_ml_integration এক্সটেনশনটির সঠিক সংস্করণ ব্যবহার করছি।

চলুন এক্সটেনশনের বর্তমান সংস্করণটি যাচাই করে নিই। AlloyDB Studio-তে এটি চালান।

SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
  

সংস্করণটি ১.৫.২ এর চেয়ে কম হলে নিম্নলিখিত পদ্ধতিটি অনুসরণ করুন।

CALL google_ml.upgrade_to_preview_version();

এবং এক্সটেনশনটির ভার্সন পুনরায় যাচাই করুন। এটি ১.৫.৩ হওয়া উচিত।

SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';

আমাদের ডাটাবেসে এআই কোয়েরি ইঞ্জিন ফিচারগুলোও সক্রিয় করতে হবে। এটি ইনস্ট্যান্সের সমস্ত ডাটাবেসের জন্য ইনস্ট্যান্স ফ্ল্যাগ আপডেট করে অথবা শুধুমাত্র আমাদের ডাটাবেসের জন্য সক্রিয় করে করা যেতে পারে। `quickstart_db` ডাটাবেসের জন্য এটি সক্রিয় করতে AlloyDB Studio-তে নিম্নলিখিত কমান্ডটি চালান।

ALTER DATABASE quickstart_db SET google_ml_integration.enable_ai_query_engine = 'on';

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

664bf0bc3fc4e72d.jpeg

এবং এটি gs://pr-public-demo-data/alloydb-retail-demo/user_photos/4.png-এ আপলোড করা হয়েছে।

ছবি দ্বারা ছবি অনুসন্ধান

প্রথমে, আমরা শুধু ছবি দিয়ে অনুসন্ধান করার চেষ্টা করি:

SELECT
  name,
  product_description,
  retail_price,
  replace(product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url,
  product_image_embedding <=> google_ml.image_embedding (model_id => 'multimodalembedding@001',image => 'gs://pr-public-demo-data/alloydb-retail-demo/user_photos/4.png', mimetype => 'image/png')::vector AS distance
FROM
  ecomm.products
ORDER BY distance
LIMIT
  4;

এবং আমরা ইনভেন্টরিতে কিছু গরম জ্যাকেট খুঁজে পেতে সক্ষম হয়েছি। ছবিগুলো দেখার জন্য, আপনি ক্লাউড এসডিকে ( gcloud storage cp ) ব্যবহার করে `public_url` কলামটি সরবরাহ করে সেগুলো ডাউনলোড করতে পারেন এবং তারপর ছবি নিয়ে কাজ করে এমন যেকোনো টুল দিয়ে এটি খুলতে পারেন।

ইমেজ সার্চটি আমাদের তুলনার জন্য দেওয়া ছবির মতো দেখতে আইটেমগুলো ফেরত দেয়। আমি আগেই যেমন বলেছি, আপনি আপনার নিজের ছবিগুলো একটি পাবলিক বাকেটে আপলোড করে দেখতে পারেন যে এটি বিভিন্ন ধরনের পোশাক খুঁজে পায় কি না।

আমরা আমাদের ইমেজ সার্চের জন্য গুগলের 'multimodalembedding@001' মডেলটি ব্যবহার করেছি। আমাদের image_embedding ফাংশনটি ইমেজটিকে Vertex AI-তে পাঠায়, সেটিকে একটি ভেক্টরে রূপান্তর করে এবং আমাদের ডাটাবেসে সংরক্ষিত ইমেজ ভেক্টরগুলোর সাথে তুলনা করার জন্য তা ফেরত পাঠায়।

আমাদের AlloyDB ScanN ইনডেক্সের সাথে এটি কতটা দ্রুত কাজ করে, তা আমরা 'EXPLAIN ANALYZE' ব্যবহার করেও যাচাই করতে পারি।

এক্সিকিউশন প্ল্যানের আউটপুট নিচে দেওয়া হলো:

সীমা (খরচ=৯৭১.৭০..৯৭৫.৫৫ সারি=৪ প্রস্থ=৪৯০) (প্রকৃত সময়=২.৪৫৩..২.৪৭৭ সারি=৪ লুপ=১)

-> product_image_embedding_scann ব্যবহার করে products-এর উপর ইন্ডেক্স স্ক্যান (খরচ=৯৭১.৭০..২৮৯৯৮.৯০ সারি=২৯১২০ প্রস্থ=৪৯০) (প্রকৃত সময়=২.৪৫১..২.৪৭৫ সারি=৪ লুপ=১)

     Order By: (product_image_embedding &lt;=&gt; '[0.02119865,0.034206174,0.030682731,

...

,-0.010307034,-0.010053742]'::ভেক্টর)

     Limit: 4

পরিকল্পনার সময়: ৯১৩.৩২২ মিলিসেকেন্ড

সম্পাদনের সময়: ২.৫১৭ মিলিসেকেন্ড

(৬ সারি)

এবং আবারও আগের উদাহরণের মতোই আমরা দেখতে পাচ্ছি যে, বেশিরভাগ সময় ব্যয় হয়েছে ক্লাউড এন্ডপয়েন্ট ব্যবহার করে আমাদের ছবিকে এমবেডিং-এ রূপান্তর করতে এবং ভেক্টর সার্চ করতে সময় লেগেছে মাত্র ২.৫ মিলিসেকেন্ড।

টেক্সট দ্বারা ছবি অনুসন্ধান

মাল্টিমোডালের সাহায্যে আমরা যে জ্যাকেটটি খুঁজছি তার একটি টেক্সট বিবরণও google_ml.text_embedding ব্যবহার করে একই মডেলে পাঠাতে পারি এবং এটি কী ধরনের ছবি ফেরত দেয় তা দেখার জন্য ইমেজ এমবেডিংগুলোর সাথে তুলনা করতে পারি।

SELECT
  name,
  product_description,
  retail_price,
  replace(product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url,
  product_image_embedding <=> google_ml.text_embedding (model_id => 'multimodalembedding@001',content => 'puffy jacket for men, grey or dark colour')::vector AS distance
FROM
  ecomm.products
ORDER BY distance
LIMIT
  4;

আর আমরা ধূসর বা গাঢ় রঙের কিছু ফোলা জ্যাকেট পেলাম।

আমরা কিছুটা ভিন্ন ধরনের জ্যাকেট পেয়েছি, কিন্তু ইমেজ এমবেডিংগুলোর মধ্যে অনুসন্ধান করার সময় এটি আমাদের বর্ণনা অনুযায়ী সঠিকভাবে জ্যাকেটগুলো খুঁজে বের করেছে।

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

ছবি দ্বারা টেক্সট অনুসন্ধান

আমরা আমাদের ছবির এমবেডিং ব্যবহার করে ছবি খোঁজার চেষ্টা করেছি এবং আমাদের পণ্যগুলোর জন্য আগে থেকে গণনা করা ইমেজ এমবেডিংগুলোর সাথে তুলনা করেছি। আমরা আমাদের টেক্সট অনুরোধের জন্য একটি এমবেডিং ব্যবহার করে পণ্যের ছবিগুলোর জন্য একই এমবেডিংয়ের মধ্যে অনুসন্ধান করারও চেষ্টা করেছি। চলুন এখন আমাদের ছবির জন্য একটি এমবেডিং ব্যবহার করে পণ্যের বিবরণের টেক্সট এমবেডিংগুলোর সাথে এর তুলনা করে দেখি। এই এমবেডিংগুলো `product_description_embedding` কলামে সংরক্ষিত থাকে এবং একই `multimodalembedding@001` মডেল ব্যবহার করে।

আমাদের প্রশ্নটি হলো:

SELECT
  name,
  product_description,
  retail_price,
  replace(product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url,
  product_description_embedding <=> google_ml.image_embedding (model_id => 'multimodalembedding@001',image => 'gs://pr-public-demo-data/alloydb-retail-demo/user_photos/4.png', mimetype => 'image/png')::vector AS distance

FROM
  ecomm.products
ORDER BY distance
LIMIT
  4;

আর এখানে আমরা ধূসর বা গাঢ় রঙের কিছুটা ভিন্ন ধরনের জ্যাকেট পেয়েছি, যেগুলোর মধ্যে কয়েকটি আমাদের খোঁজা অন্য পদ্ধতিগুলোতে বেছে নেওয়া জ্যাকেটগুলোর মতোই বা খুব কাছাকাছি।

ছবির এমবেডিংয়ের ওপর ভিত্তি করে, এটি টেক্সট বিবরণের জন্য গণনাকৃত এমবেডিংগুলোর সাথে তুলনা করতে পারে এবং পণ্যের সঠিক সেটটি ফেরত দিতে পারে।

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

WITH image_search AS (
            SELECT id,
                RANK () OVER (ORDER BY  product_image_embedding <=>google_ml.image_embedding(model_id => 'multimodalembedding@001',image => 'gs://pr-public-demo-data/alloydb-retail-demo/user_photos/4.png', mimetype => 'image/png')::vector) AS rank
                FROM ecomm.products
                ORDER BY product_image_embedding <=>google_ml.image_embedding(model_id => 'multimodalembedding@001',image => 'gs://pr-public-demo-data/alloydb-retail-demo/user_photos/4.png', mimetype => 'image/png')::vector LIMIT 5
        ),
      text_search AS (
            SELECT id,
                RANK () OVER (ORDER BY product_description_embedding <=>google_ml.text_embedding(model_id => 'multimodalembedding@001',content => 'puffy jacket for men, grey or dark colour'
    )::vector) AS rank
            FROM ecomm.products
            ORDER BY product_description_embedding <=>google_ml.text_embedding(model_id => 'multimodalembedding@001',content => 'puffy jacket for men, grey or dark colour'
    )::vector LIMIT 5
        ),
      rrf_score AS (
        SELECT
            COALESCE(image_search.id, text_search.id) AS id,
            COALESCE(1.0 / (60 + image_search.rank), 0.0) + COALESCE(1.0 / (60 + text_search.rank), 0.0) AS rrf_score
        FROM image_search FULL OUTER JOIN text_search ON image_search.id = text_search.id
        ORDER BY rrf_score DESC
      )
      SELECT 
        ep.name,
        ep.product_description,
        ep.retail_price,
        replace(ep.product_image_uri,'gs://','https://storage.googleapis.com/') AS public_url
      FROM ecomm.products ep, rrf_score 
      WHERE 
        ep.id=rrf_score.id 
      ORDER by rrf_score DESC
      LIMIT 4;

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

এর মাধ্যমে ল্যাবটি শেষ হলো। অপ্রত্যাশিত চার্জ এড়াতে অব্যবহৃত রিসোর্সগুলো মুছে ফেলার পরামর্শ দেওয়া হচ্ছে।

৯. পরিবেশ পরিষ্কার করা

ল্যাবের কাজ শেষ হলে 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.                                                                                                                                                                                                                                                            

১০. অভিনন্দন

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন। আপনি শিখেছেন কীভাবে টেক্সট এবং ইমেজের জন্য এমবেডিং ফাংশন ব্যবহার করে AlloyDB-তে মাল্টিমোডাল সার্চ করতে হয়। আপনি AlloyDB AI অপারেটরদের জন্য কোডল্যাবটি ব্যবহার করে google_ml.rank ফাংশনের সাহায্যে মাল্টিমোডাল সার্চটি পরীক্ষা করে দেখতে এবং এটিকে আরও উন্নত করতে পারেন।

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

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

আমরা যা আলোচনা করেছি

  • কীভাবে AlloyDB for Postgres স্থাপন করবেন
  • AlloyDB Studio কীভাবে ব্যবহার করবেন
  • মাল্টিমোডাল ভেক্টর সার্চ কীভাবে ব্যবহার করবেন
  • AlloyDB AI অপারেটরদের কীভাবে সক্রিয় করবেন
  • মাল্টিমোডাল সার্চের জন্য কীভাবে বিভিন্ন AlloyDB AI অপারেটর ব্যবহার করবেন
  • টেক্সট এবং ইমেজ সার্চের ফলাফল একত্রিত করতে AlloyDB AI কীভাবে ব্যবহার করবেন

১১. জরিপ

আউটপুট:

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

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