এই কোডল্যাব সম্পর্কে
1. ওভারভিউ
মাস্টার ডেটা ম্যানেজমেন্ট কি?
মাস্টার ডেটা ম্যানেজমেন্ট (MDM) হল আপনার প্রতিষ্ঠানের সবচেয়ে গুরুত্বপূর্ণ ডেটার জন্য সত্যের একক, নির্ভরযোগ্য উৎস তৈরি করা। একটি সূক্ষ্মভাবে সংগঠিত লাইব্রেরি কল্পনা করুন যেখানে প্রতিটি বই (ডেটা পয়েন্ট) সঠিকভাবে লেবেলযুক্ত, আপ টু ডেট এবং খুঁজে পাওয়া সহজ।
মাস্টার ডেটা মূল, মৌলিক ব্যবসায়িক সত্তাগুলিকে প্রতিনিধিত্ব করে যা একটি কোম্পানির ক্রিয়াকলাপের জন্য অপরিহার্য। এখানে মাস্টার ডেটার মূল উপাদানগুলি রয়েছে:
- ব্যবসায়িক সত্তা: সত্তা যেমন গ্রাহক, পণ্য, সরবরাহকারী, অবস্থান এবং কর্মচারী যা আপনার ব্যবসার চারপাশে আবর্তিত বিশেষ্য
- শনাক্তকারী: অনন্য শনাক্তকারী যা নিশ্চিত করে যে প্রতিটি সত্তা আলাদা এবং সিস্টেম জুড়ে সনাক্তযোগ্য
- গুণাবলী : বৈশিষ্ট্যগুলি যা প্রতিটি সত্তাকে বর্ণনা করে, উদাহরণস্বরূপ, একটি গ্রাহকের ঠিকানা, একটি পণ্যের মূল্য ইত্যাদি।
মাস্টার ডেটা আরও ভালভাবে বুঝতে সাহায্য করার জন্য, আসুন এটিকে লেনদেন সংক্রান্ত ডেটার সাথে তুলনা করি। লেনদেন সংক্রান্ত ডেটা পৃথক ইভেন্টগুলি ক্যাপচার করে (একটি ক্রয়, একটি চালান ইত্যাদি)। যেখানে, মাস্টার ডেটা জড়িত সত্তাগুলিকে সংজ্ঞায়িত করে সেই ইভেন্টগুলির জন্য প্রসঙ্গ সরবরাহ করে। উদাহরণস্বরূপ, একটি বিক্রয় লেনদেন গ্রাহক, পণ্য এবং বিক্রয়কর্মীর জন্য মাস্টার ডেটার সাথে লিঙ্ক করে।
কৌশলগত সিদ্ধান্ত গ্রহণের জন্য শক্তিশালী MDM বাস্তবায়ন অপরিহার্য, এটি জটিল এবং সম্পদ-নিবিড় হতে পারে। এখানেই জেমিনি 1.0 প্রো, জেমিনি 1.0 প্রো ভিশন, জেমিনি 1.5 প্রো-এর মতো মডেলগুলি, বিশেষ করে জেমিনি 1.0 প্রো-এর মতো মডেলগুলি জেনারেটিভ এআই-এর রূপান্তরকারী শক্তি কার্যকর হয়৷
2. উদ্দেশ্য
এই কোডল্যাবে, আপনি দেখাবেন কিভাবে Gemini 1.0 Pro বিগকুয়েরি পাবলিক ডেটাসেটে উপলব্ধ citibike_stations ডেটার জন্য সমৃদ্ধকরণ এবং ডিডপ্লিকেশনের মতো মাস্টার ডেটা ম্যানেজমেন্ট অ্যাপ্লিকেশনগুলিকে সহজ করে।
আপনি কি ব্যবহার করবেন
- BigQuery পাবলিক ডেটাসেট
bigquery-public-data.new_york_citibike
। - জেমিনি ফাংশন কলিং (একটি জাভা ক্লাউড ফাংশন যা সিটিবাইক_স্টেশন ডেটার সাথে উপলব্ধ স্থানাঙ্কগুলির জন্য বিপরীত জিওকোডিং API ব্যবহার করে ঠিকানার তথ্য পায়)।
- ডুপ্লিকেট শনাক্ত করতে BigQuery-এ Vertex AI এম্বেডিং এপিআই এবং ভেক্টর সার্চ।
আপনি কি নির্মাণ করবেন
- আপনি ব্যবহারের ক্ষেত্রে একটি BigQuery ডেটাসেট তৈরি করবেন। এই ডেটাসেটে, আপনি সর্বজনীন ডেটাসেট টেবিল
bigquery-public-data.new_york_citibike.citibike_stations
থেকে ডেটা সহ একটি ল্যান্ডিং টেবিল তৈরি করবেন। - আপনি ক্লাউড ফাংশন স্থাপন করবেন যার মধ্যে অ্যাড্রেস স্ট্যান্ডার্ডাইজেশনের জন্য জেমিনি ফাংশন কলিং অন্তর্ভুক্ত রয়েছে।
- আপনি ল্যান্ডিং টেবিলে সমৃদ্ধ ঠিকানা ডেটা সংরক্ষণ করবেন (এই প্রদর্শনের জন্য সরবরাহ করা দুটি উত্স থেকে)।
- আপনি ঠিকানা ডেটাতে BigQuery থেকে Vertex AI এম্বেডিং এপিআই ব্যবহার করবেন।
- ডুপ্লিকেট রেকর্ড শনাক্ত করতে আপনি BigQuery ভেক্টর অনুসন্ধান ব্যবহার করবেন।
নিম্নলিখিত চিত্রটি তথ্যের প্রবাহ এবং বাস্তবায়নের সাথে জড়িত পদক্ষেপগুলিকে উপস্থাপন করে।
3. প্রয়োজনীয়তা
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
- বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প৷
4. আপনি শুরু করার আগে
- Google ক্লাউড কনসোলে , প্রকল্প নির্বাচক পৃষ্ঠায়, একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন।
- নিশ্চিত করুন যে আপনার ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে৷ একটি প্রকল্পে বিলিং সক্ষম কিনা তা পরীক্ষা করতে শিখুন।
- আপনি ক্লাউড শেল ব্যবহার করবেন, Google ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ যা bq এর সাথে প্রিলোড করা হয়। গুগল ক্লাউড কনসোলের শীর্ষে সক্রিয় ক্লাউড শেল ক্লিক করুন।
- একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি পরীক্ষা করে দেখুন যে আপনি ইতিমধ্যেই প্রমাণীকৃত হয়েছেন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করে প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে:
gcloud auth list
- gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
- যদি আপনার প্রজেক্ট সেট করা না থাকে, তাহলে এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
- API সক্ষম করতে Google ক্লাউড মার্কেটপ্লেসের জন্য Gemini- এ নেভিগেট করুন। এছাড়াও আপনি ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- BigQuery, BigQuery কানেকশন, ক্লাউড ফাংশন, ক্লাউড রান, ভার্টেক্স এআই এবং ক্লাউড বিল্ড এপিআই চালু আছে কিনা নিশ্চিত করুন। gcloud কমান্ডের বিকল্প হল এই লিঙ্কটি ব্যবহার করে কনসোলের মাধ্যমে।
জিক্লাউড কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন পড়ুন।
5. একটি BigQuery ডেটাসেট এবং বাহ্যিক সংযোগ তৈরি করুন
একটি ডেটাসেট এবং একটি ক্লাউড রিসোর্স সংযোগ তৈরি করে শুরু করা যাক।
BigQuery-এ একটি ডেটাসেট হল আপনার অ্যাপ্লিকেশনের জন্য সমস্ত টেবিল এবং অবজেক্টের একটি ধারক।
একটি ডেটাসেট তৈরি করতে, নিম্নলিখিতগুলি করুন:
- Google ক্লাউড কনসোলে BigQuery পৃষ্ঠায় যান।
- এক্সপ্লোরার প্যানেলে, আপনি যেখানে ডেটাসেট তৈরি করতে চান সেই প্রকল্পটি নির্বাচন করুন।
- অ্যাকশন বিকল্পটি প্রসারিত করুন (উল্লম্ব উপবৃত্ত আইকন), এবং ডেটাসেট তৈরি করুন ক্লিক করুন।
- ডেটাসেট আইডি ক্ষেত্রে
mdm_gemini
লিখুন। - আপনার অবস্থানের ধরন
Multi-region
হিসাবে সেট করুন এবং ডিফল্ট মান গ্রহণ করুন, যাUS(multiple regions in United States.
- ডেটাসেট তৈরি করুন ক্লিক করুন।
- পরীক্ষা করুন যে ডেটাসেট তৈরি করা হয়েছে এবং এক্সপ্লোরার প্যানে আপনার প্রকল্প আইডির অধীনে তালিকাভুক্ত হয়েছে।
আপনার ক্লাউড ফাংশনের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি BigQuery সংযোগ প্রয়োজন। একটি দূরবর্তী ফাংশন তৈরি করতে, আপনাকে অবশ্যই একটি BigQuery সংযোগ তৈরি করতে হবে৷ এই কোডল্যাবে, আমরা ক্লাউড ফাংশনের মাধ্যমে BigQuery থেকে মডেল অ্যাক্সেস করতে BigLake সংযোগ ব্যবহার করব। BigLake সংযোগগুলি সূক্ষ্ম-দানাযুক্ত BigQuery অ্যাক্সেস নিয়ন্ত্রণ এবং সুরক্ষা বজায় রেখে বাহ্যিক ডেটা উত্স সংযোগ করতে সহায়তা করে, যা আমাদের ক্ষেত্রে Vertex AI Gemini Pro API।
BigLake সংযোগ তৈরি করতে, নিম্নলিখিতগুলি করুন:
- BigQuery পৃষ্ঠার এক্সপ্লোরার প্যানে অ্যাড ক্লিক করুন।
- বাহ্যিক ডেটা উৎসের সংযোগে ক্লিক করুন।
- সংযোগ প্রকারের তালিকায়, Vertex AI রিমোট মডেল, দূরবর্তী ফাংশন এবং BigLake (ক্লাউড রিসোর্স) নির্বাচন করুন।
- সংযোগ আইডি ক্ষেত্রে, আপনার সংযোগের নামটি
gemini-bq-conn
হিসাবে লিখুন। - আপনার অবস্থানের ধরন
Multi-region
হিসাবে সেট করুন এবং ডিফল্ট মান গ্রহণ করুন, যাUS(multiple regions in United States.
- সংযোগ তৈরি করুন ক্লিক করুন।
- সংযোগে যান ক্লিক করুন এবং তারপর সংযোগ তথ্য ফলকে পরিষেবা অ্যাকাউন্ট আইডি অনুলিপি করুন৷
- IAM এবং অ্যাডমিন পৃষ্ঠায় যান এবং অ্যাক্সেস মঞ্জুর করুন ক্লিক করুন।
- নতুন নীতির ক্ষেত্রে পরিষেবা অ্যাকাউন্ট আইডি আটকান।
- ভূমিকা তালিকা থেকে
Vertex AI user
ভূমিকা নির্বাচন করুন, এবং তারপর সংরক্ষণ করুন ক্লিক করুন।
আপনি এখন সফলভাবে ডেটাসেট এবং BigQuery সংযোগ তৈরি করেছেন।
6. জেমিনি ফাংশন কলিং (জাভা ক্লাউড ফাংশন) স্থাপন করুন
জেমিনি ফাংশন কলিং অন্তর্ভুক্ত জাভা ক্লাউড ফাংশন স্থাপন করতে এই পদক্ষেপগুলি অনুসরণ করুন৷
- নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার ক্লাউড শেল টার্মিনাল থেকে গিথুব সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/AbiramiSukumaran/GeminiFunctionCalling
- আপনার মানগুলির সাথে
YOUR_API_KEY
এবংYOUR_PROJECT_ID
স্থানধারকগুলিকে প্রতিস্থাপন করুন৷
আপনি যদি এখানে ব্লগটি পড়েন, আপনি জানতে পারবেন যে ফাংশন কলিং বাস্তবায়নগুলি বিপরীত জিওকোডিং API ব্যবহার করে। আপনি এখানে নির্দেশাবলী থেকে আপনার নিজস্ব API_KEY তৈরি করতে পারেন।
- ক্লাউড শেল টার্মিনালে, নতুন ক্লোন করা প্রকল্প ডিরেক্টরি GeminiFunctionCalling- এ যান এবং ক্লাউড ফাংশন তৈরি এবং স্থাপন করতে নিম্নলিখিত বিবৃতিটি চালান:
gcloud functions deploy gemini-fn-calling --gen2 --region=us-central1 --runtime=java11 --source=. --entry-point=cloudcode.helloworld.HelloWorld --trigger-http
যখন আপনাকে "অপ্রমাণিত আহ্বানের অনুমতি দিন" প্রশ্নগুলির সাথে অনুরোধ করা হয় তখন "y" বলুন৷ আদর্শভাবে আপনি সুপারিশ অনুযায়ী আপনার এন্টারপ্রাইজ অ্যাপ্লিকেশনের জন্য প্রমাণীকরণ সেট আপ করবেন। কিন্তু যেহেতু এটি একটি ডেমো অ্যাপ, আমরা অননুমোদিতভাবে এগিয়ে যাব।
আউটপুটটি নিম্নলিখিত বিন্যাসে একটি REST URL:
https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling
- টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে এই ক্লাউড ফাংশনটি পরীক্ষা করুন:
gcloud functions call gemini-fn-calling --region=us-central1 --gen2 --data '{"calls":[["40.714224,-73.961452"]]}'
একটি র্যান্ডম নমুনা প্রম্পটের জন্য প্রতিক্রিয়া:
'{"replies":["{ \"DOOR_NUMBER\": \"277\", \"STREET_ADDRESS\": \"Bedford Ave\", \"AREA\":
null, \"CITY\": \"Brooklyn\", \"TOWN\": null, \"COUNTY\": \"Kings County\", \"STATE\":
\"NY\", \"COUNTRY\": \"USA\", \"ZIPCODE\": \"11211\", \"LANDMARK\": null}}```"]}'
এই ক্লাউড ফাংশনের অনুরোধ এবং প্রতিক্রিয়া প্যারামিটারগুলি এমনভাবে প্রয়োগ করা হয় যা BigQuery-এর রিমোট ফাংশন আহ্বানের সাথে সামঞ্জস্যপূর্ণ। এটি সরাসরি BigQuery ডেটা ইন-প্লেস থেকে ব্যবহার করা যেতে পারে। এর মানে হল যে যদি আপনার ডেটা ইনপুট (ল্যাট এবং লং ডেটা) BigQuery-এ থাকে তাহলে আপনি ডেটাতে রিমোট ফাংশন কল করতে পারেন এবং ফাংশন প্রতিক্রিয়া পেতে পারেন যা সরাসরি BigQuery-এর মধ্যে সংরক্ষণ বা প্রক্রিয়া করা যেতে পারে।
- একটি দূরবর্তী ফাংশন তৈরি করতে BigQuery থেকে নিম্নলিখিত DDL চালান যা এই স্থাপন করা ক্লাউড ফাংশনকে আহ্বান করে:
CREATE OR REPLACE FUNCTION
`mdm_gemini.MDM_GEMINI` (latlng STRING) RETURNS STRING
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (
endpoint = 'https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-fn-calling', max_batching_rows = 1
);
তৈরি করা নতুন রিমোট ফাংশন ব্যবহার করতে পরীক্ষা ক্যোয়ারী:
mdm_gemini.MDM_GEMINI
CITIBIKE_STATIONS সীমা 1 থেকে mdm_gemini (ল্যাটলং) নির্বাচন করুন;
ক্লাউড ফাংশন অনুমতি সমস্যার কারণে BigQuery-এ তৈরি করা নতুন রিমোট ফাংশন ব্যবহার করা টেস্ট কোয়েরি ব্যর্থ হলে, Google ক্লাউড কনসোল থেকে ক্লাউড ফাংশনে যান এবং " gemini-fn-calling" নামে ক্লাউড ফাংশনটি সনাক্ত করুন। অনুমতি ট্যাবে যান, প্রধানকে "সমস্ত ব্যবহারকারী" হিসাবে যুক্ত করুন এবং ক্লাউড ফাংশনগুলি সমস্ত ব্যবহারকারীর কাছে অ্যাক্সেসযোগ্য তা নিশ্চিত করতে "ক্লাউড ফাংশন ইনভোকার" ভূমিকাটি মঞ্জুর করুন (কেবল এটি একটি ডেমো অ্যাপ)৷
7. একটি সমাধান চেষ্টা করুন
যদি আপনার কাছে রিভার্স জিওকোডিং ফাংশন কলিং পদ্ধতির জন্য প্রয়োজনীয় API_KEY না থাকে, অথবা কোনো কারণে ক্লাউড ফাংশন স্থাপন করা না থাকে, তাহলে আপনি বিকল্প হিসাবে নিম্নলিখিতগুলি করতে পারেন:
- আপনার ক্লাউড শেল প্রকল্প ফোল্ডারে সংগ্রহস্থল থেকে CITIBIKE_STATIONS.csv ফাইলটি ডাউনলোড করুন এবং সেই ফোল্ডারে নেভিগেট করুন৷
- ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার নতুন BigQuery ডেটাসেট
mdm_gemini
এ csv থেকে ডেটা রপ্তানি করুন:
bq load --source_format=CSV --skip_leading_rows=1 mdm_gemini.CITIBIKE_STATIONS ./CITIBIKE_STATIONS.csv \ name:string,latlng:string,capacity:numeric,num_bikes_available:numeric,num_docks_available:numeric,last_reported:timestamp,full_address_string:string
8. টেবিল তৈরি করুন এবং ঠিকানা ডেটা সমৃদ্ধ করুন
ধাপ 1: টেবিল তৈরি করুন
Imp: এই ধাপটি এড়িয়ে যান, যদি আপনি ওয়ার্কঅ্যারাউন্ডটি ব্যবহার করেন যেমন আপনি অবশ্যই ইতিমধ্যে টেবিল তৈরি করেছেন।
আপনি যদি সমাধান ব্যবহার না করে থাকেন, তাহলে BigQuery SQL এডিটরে নিম্নলিখিত DDL চালান:
CREATE TABLE mdm_gemini.CITIBIKE_STATIONS as (
select name, latitude || ',' || longitude as latlong, capacity, num_bikes_available, num_docks_available,last_reported,
'' as full_address_string
from bigquery-public-data.new_york_citibike.citibike_stations) ;
এখন টেবিলে উপলব্ধ অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্কের রিমোট ফাংশন চালু করে ঠিকানা ডেটা সমৃদ্ধ করা যাক। ডেটার জন্য নিম্নলিখিত শর্তগুলি সেট করুন:
- 2024 সালে রিপোর্ট করা হয়েছে
- উপলব্ধ বাইকের সংখ্যা > 0
- ক্ষমতা > 100
নিম্নলিখিত ক্যোয়ারী চালান:
update `mdm_gemini.CITIBIKE_STATIONS`
set full_address_string = `mdm_gemini.MDM_GEMINI`(latlong)
where EXTRACT(YEAR FROM last_reported) = 2024 and num_bikes_available > 0 and capacity > 100;
ধাপ 2: বাইক স্টেশন অবস্থান ডেটার জন্য একটি দ্বিতীয় উৎস তৈরি করুন
আপনি টেবিল তৈরি করার জন্য সমাধানের পদ্ধতি ব্যবহার করলেও এই ধাপটি এড়িয়ে যাবেন না।
এই ধাপে, আপনি এই কোডল্যাবের উদ্দেশ্যে বাইক স্টেশন অবস্থানের ডেটার জন্য একটি দ্বিতীয় উৎস তৈরি করবেন। এটি দেখানোর জন্য যে MDM একাধিক উত্স থেকে ডেটা একত্রিত করছে এবং সোনালী সত্যকে চিহ্নিত করছে।
দুটি রেকর্ড সহ অবস্থান ডেটার দ্বিতীয় উৎস তৈরি করার জন্য BigQuery SQL এডিটরে নিম্নলিখিত DDLগুলি চালান৷ আসুন এই টেবিলের নাম রাখি mdm_gemini.CITIBIKE_STATIONS_SOURCE2
এবং এতে দুটি রেকর্ড সন্নিবেশ করান।
CREATE TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE2 (name STRING(55), address STRING(1000), embeddings_src ARRAY<FLOAT64>);
insert into mdm_gemini.CITIBIKE_STATIONS_SOURCE2 VALUES ('Location broadway and 29','{ "DOOR_NUMBER": "1593", "STREET_ADDRESS": "Broadway", "AREA": null, "CITY": "New York", "TOWN": null, "COUNTY": "New York County", "STATE": "NY", "COUNTRY": "USA", "ZIPCODE": "10019", "LANDMARK": null}', null);
insert into mdm_gemini.CITIBIKE_STATIONS_SOURCE2 VALUES ('Allen St & Hester','{ "DOOR_NUMBER": "36", "STREET_ADDRESS": "Allen St", "AREA": null, "CITY": "New York", "TOWN": null, "COUNTY": "New York County", "STATE": "NY", "COUNTRY": "USA", "ZIPCODE": "10002", "LANDMARK": null}', null);
9. ঠিকানা ডেটার জন্য এম্বেডিং তৈরি করুন
এমবেডিং হল উচ্চ-মাত্রিক সংখ্যাসূচক ভেক্টর যা একটি প্রদত্ত সত্তাকে প্রতিনিধিত্ব করে, যেমন পাঠ্যের টুকরো বা একটি অডিও ফাইল। মেশিন লার্নিং (এমএল) মডেলগুলি এম্বেডিং ব্যবহার করে এই ধরনের সত্ত্বা সম্পর্কে শব্দার্থবিদ্যা এনকোড করার জন্য তাদের সম্পর্কে যুক্তি এবং তুলনা করা সহজ করে। উদাহরণ স্বরূপ, ক্লাস্টারিং, শ্রেণীবিভাগ এবং সুপারিশ মডেলগুলির একটি সাধারণ ক্রিয়াকলাপ হল একটি এমবেডিং স্পেসে ভেক্টরের মধ্যে দূরত্ব পরিমাপ করা যাতে শব্দার্থগতভাবে একই রকম আইটেমগুলি খুঁজে পাওয়া যায়। Vertex AI text-embeddings API আপনাকে Vertex AI-তে Generative AI ব্যবহার করে একটি টেক্সট এম্বেডিং তৈরি করতে দেয়। টেক্সট এম্বেডিং হল টেক্সটের সংখ্যাসূচক উপস্থাপনা যা শব্দ এবং বাক্যাংশের মধ্যে সম্পর্ক ক্যাপচার করে। ভার্টেক্স এআই টেক্সট এমবেডিং সম্পর্কে এখানে আরও পড়ুন।
- Vertex AI টেক্সট এম্বেডিং এপিআই-এর জন্য একটি দূরবর্তী মডেল তৈরি করতে নীচের DDL চালান:
CREATE OR REPLACE MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (ENDPOINT = 'textembedding-gecko@latest');
- এখন যেহেতু দূরবর্তী এম্বেডিং মডেলটি প্রস্তুত, আসুন প্রথম উত্সের জন্য এম্বেডিং তৈরি করি এবং নিম্নলিখিত ক্যোয়ারী ব্যবহার করে এটি একটি টেবিলে সংরক্ষণ করি:
CREATE TABLE `mdm_gemini.CITIBIKE_STATIONS_SOURCE1` AS (
SELECT *
FROM ML.GENERATE_EMBEDDING(
MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`,
( select name, full_address_string as content from `mdm_gemini.CITIBIKE_STATIONS`
where full_address_string is not null )
)
);
একটি নতুন টেবিল তৈরি করার পরিবর্তে, আপনি এমবেডিংয়ের ফলাফলের ক্ষেত্রটি একই mdm_gemini.CITIBIKE_STATIONS টেবিলে সংরক্ষণ করতে পারেন যা আপনি আগে তৈরি করেছিলেন৷
- CITIBIKE_STATIONS_SOURCE2 টেবিলে ঠিকানা ডেটার জন্য এমবেডিং তৈরি করতে, নিম্নলিখিত ক্যোয়ারীটি চালান:
update `mdm_gemini.CITIBIKE_STATIONS_SOURCE2` a set embeddings_src =
(
SELECT ml_generate_embedding_result
FROM ML.GENERATE_EMBEDDING(
MODEL `mdm_gemini.CITIBIKE_STATIONS_ADDRESS_EMB`,
( select name, address as content from `mdm_gemini.CITIBIKE_STATIONS_SOURCE2` ))
where name = a.name) where name is not null;
এটি দ্বিতীয় উৎসের জন্য এমবেডিং তৈরি করা উচিত। মনে রাখবেন যে আমরা একই টেবিল CITIBIKE_STATIONS_SOURCE2 এ এমবেডিং ক্ষেত্র তৈরি করেছি।
- সোর্স ডেটা টেবিল 1 এবং 2-এর জন্য জেনারেট করা এমবেডিংগুলি কল্পনা করতে, নিম্নলিখিত ক্যোয়ারীটি চালান:
select name,address,embeddings_src from `mdm_gemini.CITIBIKE_STATIONS_SOURCE2`;
select name,content,ml_generate_embedding_result from `mdm_gemini.CITIBIKE_STATIONS_SOURCE1`;
এখন এগিয়ে যান এবং সদৃশ সনাক্ত করতে একটি ভেক্টর অনুসন্ধান সঞ্চালন করা যাক।
10. ডুপ্লিকেট ঠিকানা পতাকাঙ্কিত করার জন্য একটি ভেক্টর অনুসন্ধান চালান
এই ধাপে, আপনি mdm_gemini.CITIBIKE_STATIONS_SOURCE1 টেবিলের এমবেডিং এম্বেডিং ml_generate_embedding_result কলাম অনুসন্ধান করবেন ।
এটি করতে, নিম্নলিখিত ক্যোয়ারী চালান:
select query.name name1,base.name name2,
/* (select address from mdm_gemini.CITIBIKE_STATIONS_SOURCE2 where name = query.name) content1, base.content content2, */
distance
from VECTOR_SEARCH(
TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE1,
'ml_generate_embedding_result',
(SELECT * FROM mdm_gemini.CITIBIKE_STATIONS_SOURCE2),
'embeddings_src',
top_k => 2
) where query.name <> base.name
order by distance desc;
আমরা যে টেবিলটি জিজ্ঞাসা করছি: mdm_gemini.CITIBIKE_STATIONS_SOURCE1
ক্ষেত্রে ml_generate_embedding_result
সারণী যা আমরা বেস হিসাবে ব্যবহার করি: mdm_gemini.CITIBIKE_STATIONS_SOURCE2
ক্ষেত্রে embeddings_src
top_k: নিকটতম প্রতিবেশীর সংখ্যা নির্দিষ্ট করে যা ফেরত দিতে হবে। ডিফল্ট হল 10। একটি নেতিবাচক মানকে অসীম হিসাবে বিবেচনা করা হয়, যার অর্থ হল সমস্ত মান প্রতিবেশী হিসাবে গণনা করা হয় এবং ফেরত দেওয়া হয়।
দূরত্ব_প্রকার: দুটি ভেক্টরের মধ্যে দূরত্ব গণনা করতে ব্যবহার করার জন্য মেট্রিকের ধরন নির্দিষ্ট করে। সমর্থিত দূরত্বের প্রকারগুলি হল ইউক্লিডীয় এবং কোসাইন । ডিফল্ট হল ইউক্লিডীয় ।
প্রশ্নের ফলাফল নিম্নরূপ:
আপনি দেখতে পাচ্ছেন, এটি CITIBIKE_STATIONS_SOURCE1
থেকে CITIBIKE_STATIONS_SOURCE2
এ দুটি সারির জন্য দুটি নিকটতম প্রতিবেশীকে (অন্য কথায়, নিকটতম সদৃশ) তালিকাভুক্ত করেছে। যেহেতু distance_type
অনির্দিষ্ট, তাই এটি অনুমান করে যে এটি ইউক্লিডীয় এবং দূরত্বটি দুটি উত্সের মধ্যে ঠিকানা TEXT মানের দূরত্ব হিসাবে পড়া হয়, সর্বনিম্নটি সবচেয়ে অনুরূপ ঠিকানা পাঠ্য।
চলুন নিচের ক্যোয়ারীটি ব্যবহার করে distance_type
কোসাইনে সেট করি:
select query.name name1,base.name name2,
/* (select address from mdm_gemini.CITIBIKE_STATIONS_SOURCE2 where name = query.name) content1, base.content content2, */
distance
from VECTOR_SEARCH(
TABLE mdm_gemini.CITIBIKE_STATIONS_SOURCE1,
'ml_generate_embedding_result',
(SELECT * FROM mdm_gemini.CITIBIKE_STATIONS_SOURCE2),
'embeddings_src',
top_k => 2,distance_type => 'COSINE'
) where query.name <> base.name
order by distance desc;
প্রশ্নের ফলাফল নিম্নরূপ:
উভয় ক্যোয়ারী (উভয় দূরত্বের প্রকারের) দূরত্ব DESCENDING দ্বারা আদেশ করা হয় যার অর্থ আমরা দূরত্ব হ্রাসের ক্রমে ফলাফলগুলি তালিকাভুক্ত করতে চাই৷ কিন্তু আপনি লক্ষ্য করবেন যে দ্বিতীয় কোয়েরির দূরত্বের ক্রম বিপরীত হয়েছে। আপনি অনুমান করতে পারেন কেন?
হ্যাঁ!! আপনি এটা ঠিক আছে! কোসাইন সাদৃশ্যে, একটি বড় সংখ্যা মানে বৃহত্তর মিল এবং ছোট দূরত্ব। ইউক্লিডীয় দূরত্বে, একটি বৃহত্তর সংখ্যা মানে মানগুলির মধ্যে বৃহত্তর দূরত্ব।
এমডিএম বোঝার বিষয়ে আরও তথ্যের জন্য এবং ইউক্লিডিয়ান এবং কোসাইনের পার্থক্য এবং প্রয়োগগুলি বোঝার টিপস, ব্লগটি পড়ুন।
11. পরিষ্কার করুন
এই পোস্টে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- Google ক্লাউড কনসোলে, সম্পদ পরিচালনা পৃষ্ঠাতে যান।
- প্রকল্প তালিকায়, আপনি যে প্রকল্পটি মুছতে চান সেটি নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন।
- ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন এবং তারপরে প্রোজেক্ট মুছে ফেলতে শাট ডাউন ক্লিক করুন।
- আপনি যদি আপনার প্রকল্পটি রাখতে চান, উপরের পদক্ষেপগুলি এড়িয়ে যান এবং ক্লাউড ফাংশনে নেভিগেট করে ক্লাউড ফাংশনটি মুছুন এবং ফাংশনগুলির তালিকা থেকে, আপনি যেটি মুছতে চান সেটি চেক করুন এবং মুছুন ক্লিক করুন৷
12. অভিনন্দন
অভিনন্দন! আপনি জেমিনি 1.0 প্রো এবং ফাংশন কলিং ব্যবহার করার ক্ষমতা প্রদর্শন করেছেন কিছু MDM কার্যক্রমকে সরলীকৃত অথচ শক্তিশালী, নির্ধারক এবং নির্ভরযোগ্য জেনারেটিভ এআই সক্ষমতায় রূপান্তরিত করার জন্য। এখন আপনি জানেন যে, একই ব্যবহারের ক্ষেত্রে বা অন্যান্য MDM কার্যকারিতা বাস্তবায়নের অন্যান্য উপায়গুলি নির্দ্বিধায় চিহ্নিত করুন৷ এমন কোন ডেটাসেট আছে যা আপনি যাচাই করতে পারেন, তথ্যের শূন্যতা পূরণ করতে পারেন, অথবা আপনার জেনারেটিভ AI প্রতিক্রিয়ার মধ্যে এম্বেড করা স্ট্রাকচার্ড কলের মাধ্যমে স্বয়ংক্রিয়ভাবে কাজ করা যেতে পারে? আরও গভীর দিকনির্দেশনার জন্য Vertex AI , BigQuery রিমোট ফাংশন , ক্লাউড ফাংশন , এম্বেডিং এবং ভেক্টর অনুসন্ধানের জন্য ডকুমেন্টেশন পড়ুন। এখানে এই প্রকল্পের জন্য গিথুব রেপো । এই শিক্ষা দিয়ে আপনি কি তৈরি করেন তা আমাদের জানান!