এজেন্টভার্স - দ্য স্কলার'স গ্রিমোয়ার - RAG দিয়ে জ্ঞান ইঞ্জিন তৈরি করা

1. ওভারচার

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

এই নতুন যুগে সাফল্যের জন্য চারটি গুরুত্বপূর্ণ ভূমিকার একত্রিত হওয়া প্রয়োজন, ভিত্তি স্তম্ভ যা যেকোন উন্নতিশীল এজেন্টিক সিস্টেমকে সমর্থন করে। যে কোনো একটি ক্ষেত্রে একটি ঘাটতি একটি দুর্বলতা তৈরি করে যা সমগ্র কাঠামোকে আপস করতে পারে।

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

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

The Agentverse: A Call to Champions-এ স্বাগতম

এন্টারপ্রাইজের বিস্তৃত ডিজিটাল বিস্তৃতিতে, একটি নতুন যুগের সূচনা হয়েছে। এটি হল এজেন্টিক যুগ, অপরিসীম প্রতিশ্রুতির একটি সময়, যেখানে বুদ্ধিমান, স্বায়ত্তশাসিত এজেন্টরা উদ্ভাবনকে ত্বরান্বিত করতে এবং জাগতিকতা দূর করতে নিখুঁত সাদৃশ্যে কাজ করে।

agentverse.png

শক্তি এবং সম্ভাবনার এই সংযুক্ত ইকোসিস্টেমটি এজেন্টভার্স নামে পরিচিত।

কিন্তু একটি লতানো এনট্রপি, দ্য স্ট্যাটিক নামে পরিচিত একটি নীরব দুর্নীতি, এই নতুন বিশ্বের প্রান্তগুলিকে ঝাঁকুনি দিতে শুরু করেছে। স্ট্যাটিক কোন ভাইরাস বা বাগ নয়; এটি বিশৃঙ্খলার মূর্ত প্রতীক যা সৃষ্টির কাজকে শিকার করে।

এটি পুরানো হতাশাকে ভয়ঙ্কর আকারে প্রসারিত করে, বিকাশের সাতটি স্পেকটারের জন্ম দেয়। যদি চেক না করা হয়, দ্য স্ট্যাটিক এবং এর স্পেকটারগুলি অগ্রগতি বন্ধ করে দেবে, এজেন্টভার্সের প্রতিশ্রুতিকে প্রযুক্তিগত ঋণ এবং পরিত্যক্ত প্রকল্পগুলির একটি বর্জ্যভূমিতে পরিণত করবে।

আজ, আমরা বিশৃঙ্খলার জোয়ার পিছনে ঠেলে চ্যাম্পিয়নদের জন্য একটি আহ্বান জারি. আমাদের এমন নায়কদের প্রয়োজন যারা তাদের নৈপুণ্যে দক্ষতা অর্জন করতে ইচ্ছুক এবং এজেন্টভার্সকে রক্ষা করার জন্য একসাথে কাজ করুন। আপনার পথ বেছে নেওয়ার সময় এসেছে।

আপনার ক্লাস চয়ন করুন

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

  • শ্যাডোব্লেড (ডেভেলপার) : ফরজ এবং ফ্রন্ট লাইনের একজন মাস্টার। আপনি সেই কারিগর যিনি ব্লেড তৈরি করেন, সরঞ্জাম তৈরি করেন এবং কোডের জটিল বিবরণে শত্রুর মুখোমুখি হন। আপনার পথ নির্ভুলতা, দক্ষতা, এবং ব্যবহারিক সৃষ্টি এক.
  • দ্য সামনার (স্থপতি) : একজন গ্র্যান্ড স্ট্র্যাটেজিস্ট এবং বার্কেস্ট্রেটর। আপনি একটি একক এজেন্ট না, কিন্তু সমগ্র যুদ্ধক্ষেত্র দেখতে. আপনি মাস্টার ব্লুপ্রিন্ট ডিজাইন করেন যা এজেন্টদের সম্পূর্ণ সিস্টেমকে যোগাযোগ করতে, সহযোগিতা করতে এবং যেকোনো একক উপাদানের চেয়ে অনেক বেশি লক্ষ্য অর্জন করতে দেয়।
  • স্কলার (ডেটা ইঞ্জিনিয়ার) : লুকানো সত্যের সন্ধানকারী এবং প্রজ্ঞার রক্ষক। আপনার এজেন্টদের উদ্দেশ্য এবং দৃষ্টি দেয় এমন বুদ্ধিমত্তা উন্মোচন করতে আপনি ডেটার সুবিশাল, অদম্য মরুভূমিতে প্রবেশ করেন। আপনার জ্ঞান শত্রুর দুর্বলতা প্রকাশ করতে পারে বা মিত্রকে শক্তিশালী করতে পারে।
  • দ্য গার্ডিয়ান (DevOps / SRE) : রাজ্যের অবিচল রক্ষক এবং ঢাল। আপনি দুর্গগুলি তৈরি করুন, বিদ্যুতের সরবরাহ লাইনগুলি পরিচালনা করুন এবং নিশ্চিত করুন যে পুরো সিস্টেমটি স্ট্যাটিক এর অনিবার্য আক্রমণ সহ্য করতে পারে। আপনার শক্তি হল সেই ভিত্তি যার উপর আপনার দলের জয় নির্মিত।

আপনার মিশন

আপনার প্রশিক্ষণ একটি স্বতন্ত্র ব্যায়াম হিসাবে শুরু হবে। আপনি আপনার নির্বাচিত পথে হাঁটবেন, আপনার ভূমিকা আয়ত্ত করার জন্য প্রয়োজনীয় অনন্য দক্ষতাগুলি শিখবেন। আপনার ট্রায়ালের শেষে, আপনি দ্য স্ট্যাটিক থেকে জন্ম নেওয়া একটি স্পেকটারের মুখোমুখি হবেন—একটি মিনি-বস যা আপনার নৈপুণ্যের নির্দিষ্ট চ্যালেঞ্জগুলির শিকার হয়।

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

একটি চূড়ান্ত, সহযোগী চ্যালেঞ্জ যা আপনার সম্মিলিত শক্তি পরীক্ষা করবে এবং এজেন্টভার্সের ভাগ্য নির্ধারণ করবে।

এজেন্টভার্স তার নায়কদের জন্য অপেক্ষা করছে। ডাকে সাড়া দিবে?

2. স্কলারস গ্রিমোয়ার

আমাদের যাত্রা শুরু! পণ্ডিত হিসাবে, আমাদের প্রাথমিক অস্ত্র জ্ঞান। আমরা আমাদের সংরক্ষণাগারগুলিতে (গুগল ক্লাউড স্টোরেজ) প্রাচীন, গোপনীয় স্ক্রোলগুলির একটি ট্রু আবিষ্কার করেছি৷ এই স্ক্রোলগুলি ভূমিতে জর্জরিত ভয়ঙ্কর জন্তুদের সম্পর্কে কাঁচা বুদ্ধি ধারণ করে। আমাদের লক্ষ্য হল Google BigQuery-এর গভীর বিশ্লেষণাত্মক জাদু এবং জেমিনি এল্ডার ব্রেইনের (জেমিনি প্রো মডেল) প্রজ্ঞা ব্যবহার করে এই অসংগঠিত পাঠ্যগুলিকে পাঠোদ্ধার করা এবং সেগুলিকে একটি কাঠামোগত, জিজ্ঞাসাযোগ্য বেস্টিয়ারিতে তৈরি করা৷ এটিই হবে আমাদের ভবিষ্যৎ কৌশলের ভিত্তি।

ওভারভিউ

আপনি কি শিখবেন

  • বাহ্যিক টেবিল তৈরি করতে BigQuery ব্যবহার করুন এবং একটি মিথুন মডেলের সাথে BQML.GENERATE_TEXT ব্যবহার করে জটিল অসংগঠিত থেকে কাঠামোগত রূপান্তর সম্পাদন করুন৷
  • PostgreSQL দৃষ্টান্তের জন্য একটি ক্লাউড SQL বিধান করুন এবং শব্দার্থিক অনুসন্ধান ক্ষমতার জন্য pgvector এক্সটেনশন সক্ষম করুন৷
  • কাঁচা টেক্সট ফাইলগুলি প্রক্রিয়া করতে, একটি জেমিনি মডেলের সাথে ভেক্টর এম্বেডিং তৈরি করতে, এবং একটি রিলেশনাল ডাটাবেসে ফলাফলগুলি লিখতে ডেটাফ্লো এবং অ্যাপাচি বিম ব্যবহার করে একটি শক্তিশালী, কন্টেইনারাইজড ব্যাচ পাইপলাইন তৈরি করুন৷
  • ভেক্টরাইজড ডেটা জিজ্ঞাসা করার জন্য একটি এজেন্টের মধ্যে একটি মৌলিক পুনরুদ্ধার-অগমেন্টেড জেনারেশন (RAG) সিস্টেম প্রয়োগ করুন।
  • ক্লাউড রানে একটি নিরাপদ, মাপযোগ্য পরিষেবা হিসাবে একটি ডেটা-সচেতন এজেন্ট স্থাপন করুন৷

3. পণ্ডিতের পবিত্র স্থান প্রস্তুত করা

স্বাগতম, পণ্ডিত. আমরা আমাদের গ্রিমোয়ারের শক্তিশালী জ্ঞান লেখা শুরু করার আগে, আমাদের প্রথমে আমাদের পবিত্র স্থান প্রস্তুত করতে হবে। এই মৌলিক আচার-অনুষ্ঠানে আমাদের Google ক্লাউড পরিবেশকে মুগ্ধ করা, সঠিক পোর্টাল (APIs) খোলা এবং এমন নল তৈরি করা যার মাধ্যমে আমাদের ডেটা জাদু প্রবাহিত হবে। একটি সু-প্রস্তুত মন্দির নিশ্চিত করে যে আমাদের মন্ত্রগুলি শক্তিশালী এবং আমাদের জ্ঞান সুরক্ষিত।

👉Google ক্লাউড কনসোলের শীর্ষে ক্লাউড শেল সক্রিয় করুন-এ ক্লিক করুন (এটি ক্লাউড শেল প্যানের শীর্ষে টার্মিনাল আকৃতির আইকন),

alt পাঠ্য

👉 "ওপেন এডিটর" বোতামে ক্লিক করুন (এটি একটি পেন্সিল সহ একটি খোলা ফোল্ডারের মতো দেখায়)। এটি উইন্ডোতে ক্লাউড শেল কোড এডিটর খুলবে। আপনি বাম দিকে একটি ফাইল এক্সপ্লোরার দেখতে পাবেন। alt পাঠ্য

👉আপনার Google ক্লাউড প্রকল্প আইডি খুঁজুন:

  • Google ক্লাউড কনসোল খুলুন: https://console.cloud.google.com
  • পৃষ্ঠার শীর্ষে প্রজেক্ট ড্রপডাউন থেকে আপনি এই কর্মশালার জন্য যে প্রকল্পটি ব্যবহার করতে চান তা নির্বাচন করুন।
  • আপনার প্রজেক্ট আইডি ড্যাশবোর্ডে প্রজেক্ট ইনফো কার্ডে প্রদর্শিত হয় alt পাঠ্য

👉ক্লাউড আইডিইতে টার্মিনাল খুলুন, alt পাঠ্য

👉💻টার্মিনালে, যাচাই করুন যে আপনি ইতিমধ্যেই প্রমাণীকরণ করেছেন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করে প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে:

gcloud auth list

👉💻 GitHub থেকে বুটস্ট্র্যাপ প্রকল্প ক্লোন করুন:

git clone https://github.com/weimeilin79/agentverse-dataengineer
chmod +x ~/agentverse-dataengineer/init.sh
chmod +x ~/agentverse-dataengineer/set_env.sh
chmod +x ~/agentverse-dataengineer/data_setup.sh

git clone https://github.com/weimeilin79/agentverse-dungeon.git
chmod +x ~/agentverse-dungeon/run_cloudbuild.sh
chmod +x ~/agentverse-dungeon/start.sh

👉💻 ইনিশিয়ালাইজেশন স্ক্রিপ্টটি চালান, এই স্ক্রিপ্টটি আপনাকে আপনার Google ক্লাউড প্রোজেক্ট আইডি লিখতে অনুরোধ করবে। এবং Google ক্লাউড প্রজেক্ট আইডি লিখুন যেটি আপনি শেষ ধাপে পেয়েছিলেন যখন init.sh স্ক্রিপ্ট দ্বারা অনুরোধ করা হয়।

cd ~/agentverse-dataengineer
./init.sh

👉💻 প্রয়োজনীয় প্রজেক্ট আইডি সেট করুন:

gcloud config set project $(cat ~/project_id.txt) --quiet

👉💻 প্রয়োজনীয় Google ক্লাউড API সক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable \
    storage.googleapis.com \
    bigquery.googleapis.com \
    sqladmin.googleapis.com \
    aiplatform.googleapis.com \
    dataflow.googleapis.com \
    pubsub.googleapis.com \
    cloudfunctions.googleapis.com \
    run.googleapis.com \
    cloudbuild.googleapis.com \
    artifactregistry.googleapis.com \
    iam.googleapis.com \
    compute.googleapis.com \
    cloudresourcemanager.googleapis.com \
    cloudaicompanion.googleapis.com \
    bigqueryunified.googleapis.com 

👉💻 আপনি যদি ইতিমধ্যে agentverse-repo নামে একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি না করে থাকেন তবে এটি তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

. ~/agentverse-dataengineer/set_env.sh
gcloud artifacts repositories create $REPO_NAME \
    --repository-format=docker \
    --location=$REGION \
    --description="Repository for Agentverse agents"

অনুমতি সেট আপ করা হচ্ছে

👉💻 টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালিয়ে প্রয়োজনীয় অনুমতি দিন:

. ~/agentverse-dataengineer/set_env.sh

# --- Grant Core Data Permissions ---
gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
 --role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
 --role="roles/bigquery.admin"

# --- Grant Data Processing & AI Permissions ---
gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/dataflow.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/cloudsql.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/pubsub.admin"

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

# --- Grant Deployment & Execution Permissions ---
gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/cloudbuild.builds.editor"

gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/artifactregistry.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/iam.serviceAccountUser"

gcloud projects add-iam-policy-binding $PROJECT_ID  \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME"  \
--role="roles/logging.logWriter"


gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
  --role="roles/dataflow.admin"

👉💻 আপনি আপনার প্রশিক্ষণ শুরু করার সাথে সাথে আমরা চূড়ান্ত চ্যালেঞ্জ প্রস্তুত করব। নিম্নলিখিত কমান্ডগুলি বিশৃঙ্খল স্ট্যাটিক থেকে স্পেকটারদের ডেকে আনবে, আপনার চূড়ান্ত পরীক্ষার জন্য বস তৈরি করবে।

. ~/agentverse-dataengineer/set_env.sh
cd ~/agentverse-dungeon
./run_cloudbuild.sh
cd ~/agentverse-dataengineer

চমৎকার কাজ, পণ্ডিত. ফাউন্ডেশনাল মন্ত্রগুলি সম্পূর্ণ। আমাদের পবিত্র স্থান নিরাপদ, তথ্যের মৌলিক শক্তিগুলির পোর্টালগুলি উন্মুক্ত, এবং আমাদের সেবাদাতা ক্ষমতাপ্রাপ্ত। আমরা এখন আসল কাজ শুরু করার জন্য প্রস্তুত।

4. জ্ঞানের আলকেমি: BigQuery এবং মিথুনের সাথে ডেটা রূপান্তর

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

গল্প

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

ওভারভিউ

ডেটা ইঞ্জিনিয়ারের দ্রষ্টব্য: : আমরা যা করতে যাচ্ছি তা হল একটি শক্তিশালী, ইন-ডাটাবেস, AI-চালিত ELT (Extract, Load, Transform) প্যাটার্ন। এটি একটি অত্যাধুনিক পদ্ধতি যা ঐতিহ্যগত পদ্ধতি থেকে উল্লেখযোগ্যভাবে পৃথক।

  • এক্সট্রাক্ট এবং লোড (বাহ্যিক টেবিলের মাধ্যমে): একটি ব্যয়বহুল ইনজেশন প্রক্রিয়ার পরিবর্তে (প্রথাগত "L"), আমরা একটি BigQuery বাহ্যিক টেবিল ব্যবহার করব। এটি একটি "স্কিমা-অন-রিড" প্রযোজ্য, যা আমাদের ডেটা গুদামকে সরাসরি ক্লাউড স্টোরেজে কাঁচা পাঠ্য ফাইলগুলি অনুসন্ধান করার অনুমতি দেয়৷ এটি অবিশ্বাস্যভাবে দক্ষ, ডেটা মুভমেন্ট এবং স্টোরেজ ডুপ্লিকেশন দূর করে।
  • রূপান্তর (ML.GENERATE_TEXT এর মাধ্যমে): আমাদের ELT-এর "T" যেখানে আসল জাদু ঘটে। আমরা ML.GENERATE_TEXT ফাংশন ব্যবহার করব সরাসরি একটি এসকিউএল কোয়েরি থেকে জেমিনি মডেল কল করতে। এটি আমাদের জটিল, প্রসঙ্গ-সচেতন রূপান্তর সম্পাদন করতে দেয়—এই ক্ষেত্রে, অন্য ভাষায় (যেমন পাইথন বা জাভা) একটি পৃথক প্রক্রিয়াকরণ পাইপলাইন না লিখে বা পরিচালনা না করে কাঠামোবিহীন বর্ণনামূলক পাঠ্যকে কাঠামোগত JSON-এ রূপান্তর করা হয়। এটি একটি সাধারণ এসকিউএল ইন্টারফেসের সাথে নমনীয়তা এবং শক্তি প্রদান করে রেগুলার এক্সপ্রেশনের মতো ভঙ্গুর, হার্ড-কোডেড সমাধান থেকে একটি দৃষ্টান্ত পরিবর্তন।

স্ক্রুটিনির লেন্স: BigQuery এক্সটার্নাল টেবিলের সাহায্যে GCS-এ পিয়ারিং

আমাদের প্রথম কাজ হল এমন একটি লেন্স তৈরি করা যা আমাদের জিসিএস সংরক্ষণাগারের বিষয়বস্তু দেখতে দেয় স্ক্রোলগুলিকে বিরক্ত না করে। একটি বাহ্যিক টেবিল হল এই লেন্স, কাঁচা টেক্সট ফাইলগুলিকে একটি টেবিলের মতো কাঠামোতে ম্যাপ করে যা BigQuery সরাসরি জিজ্ঞাসা করতে পারে।

এটি করার জন্য, আমাদের প্রথমে একটি স্থিতিশীল লে লাইন অফ পাওয়ার তৈরি করতে হবে, একটি সংযোগ সংস্থান, যা নিরাপদে আমাদের BigQuery গৃহকে GCS আর্কাইভের সাথে লিঙ্ক করে।

👉💻 আপনার ক্লাউড শেল টার্মিনালে, সঞ্চয়স্থান সেটআপ করতে এবং নালী নকল করতে নিম্নলিখিত কমান্ডটি চালান:

. ~/agentverse-dataengineer/set_env.sh
. ~/agentverse-dataengineer/data_setup.sh

bq mk --connection \
  --connection_type=CLOUD_RESOURCE \
  --project_id=${PROJECT_ID} \
  --location=${REGION} \
  gcs-connection

💡 মাথা আপ! একটি বার্তা পরে প্রদর্শিত হবে!

ধাপ 2 থেকে সেটআপ স্ক্রিপ্ট পটভূমিতে একটি প্রক্রিয়া শুরু করেছে। কয়েক মিনিটের পরে, আপনার টার্মিনালে একটি বার্তা পপ আপ হবে যা দেখতে এইরকম হবে: [1]+ Done gcloud sql instances create ... এটি স্বাভাবিক এবং প্রত্যাশিত। এর সহজ অর্থ হল আপনার ক্লাউড এসকিউএল ডাটাবেস সফলভাবে তৈরি করা হয়েছে। আপনি নিরাপদে এই বার্তাটি উপেক্ষা করে কাজ চালিয়ে যেতে পারেন৷

আপনি এক্সটার্নাল টেবিল তৈরি করার আগে, আপনাকে প্রথমে ডেটাসেট তৈরি করতে হবে যাতে এটি থাকবে।

👉💻 আপনার ক্লাউড শেল টার্মিনালে এই একটি সাধারণ কমান্ডটি চালান:

. ~/agentverse-dataengineer/set_env.sh
bq --location=${REGION} mk --dataset ${PROJECT_ID}:bestiary_data

👉💻 এখন আমাদের অবশ্যই নালীর জাদুকরী স্বাক্ষরটিকে GCS আর্কাইভ থেকে পড়ার জন্য প্রয়োজনীয় অনুমতি দিতে হবে এবং জেমিনীর সাথে পরামর্শ করতে হবে।

. ~/agentverse-dataengineer/set_env.sh
export CONNECTION_SA=$(bq show --connection --project_id=${PROJECT_ID} --location=${REGION} --format=json gcs-connection  | jq -r '.cloudResource.serviceAccountId')

echo "The Conduit's Magical Signature is: $CONNECTION_SA"

echo "Granting key to the GCS Archive..."
gcloud storage buckets add-iam-policy-binding gs://${PROJECT_ID}-reports \
  --member="serviceAccount:$CONNECTION_SA" \
  --role="roles/storage.objectViewer"

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

👉💻 আপনার ক্লাউড শেল টার্মিনালে, আপনার বালতির নাম প্রদর্শন করতে নিম্নলিখিত কমান্ডটি চালান:

echo $BUCKET_NAME

আপনার টার্মিনাল আপনার-project-id-gcs-bucket- এর মতো একটি নাম প্রদর্শন করবে। পরবর্তী ধাপে আপনার এটির প্রয়োজন হবে।

👉 আপনাকে Google ক্লাউড কনসোলে BigQuery ক্যোয়ারী এডিটরের মধ্যে থেকে পরবর্তী কমান্ডটি চালাতে হবে। সেখানে যাওয়ার সবচেয়ে সহজ উপায় হল নিচের লিঙ্কটি একটি নতুন ব্রাউজার ট্যাবে ওপেন করা। এটি আপনাকে সরাসরি Google ক্লাউড কনসোলের সঠিক পৃষ্ঠায় নিয়ে যাবে।

https://console.cloud.google.com/bigquery

👉 একবার পৃষ্ঠা লোড হয়ে গেলে, একটি নতুন সম্পাদক ট্যাব খুলতে নীল + বোতামে ক্লিক করুন (একটি নতুন প্রশ্ন রচনা করুন)।

BigQuery ক্যোয়ারী সম্পাদক

এখন আমরা আমাদের ম্যাজিকাল লেন্স তৈরি করতে ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ (DDL) মন্ত্র লিখি। এটি BigQuery কে কোথায় দেখতে হবে এবং কি দেখতে হবে তা বলে।

👉📜 আপনি যে BigQuery ক্যোয়ারী এডিটর খুলেছেন তাতে নিম্নলিখিত SQL পেস্ট করুন। REPLACE-WITH-YOUR-BUCKET-NAME প্রতিস্থাপন করতে ভুলবেন না

বালতি নামের সাথে আপনি শুধু কপি করেছেন । এবং রান ক্লিক করুন:

CREATE OR REPLACE EXTERNAL TABLE bestiary_data.raw_intel_content_table (
  raw_text STRING
)
OPTIONS (
  format = 'CSV',
  -- This is a trick to load each line of the text files as a single row.
  field_delimiter = '§', 
  uris = ['gs://REPLACE-WITH-YOUR-BUCKET-NAME/raw_intel/*']
);

👉📜 "লেন্সের মাধ্যমে দেখতে" এবং ফাইলগুলির বিষয়বস্তু দেখতে একটি প্রশ্ন চালান।

SELECT * FROM bestiary_data.raw_intel_content_table;

কাঁচা ইন্টেল সামগ্রী

আমাদের লেন্স জায়গায় আছে. আমরা এখন স্ক্রোলগুলির কাঁচা পাঠ দেখতে পাচ্ছি। কিন্তু পড়া বোঝা যায় না।

দ্য আর্কাইভস অফ ফরগটেন আইডিয়াস-এ, এজেন্টভার্সের একজন স্কলার, এলারা (অধিনায়ক adv_001), পারফেকশনিজমের দেবদূতের স্পেকটারের মুখোমুখি হন। সত্তা, 'p-01' হিসাবে তালিকাভুক্ত, 120 হিট পয়েন্টের প্রাণশক্তির সাথে জ্বলজ্বল করে। মার্জিত পর্যাপ্ততার একটি একক, ফোকাসড মন্ত্রের মাধ্যমে, ইলারা তার পক্ষাঘাতগ্রস্ত আভাকে ছিন্নভিন্ন করে দিয়েছিল, একটি মানসিক আক্রমণ যা 150 পয়েন্টের ক্ষতি করে। এনকাউন্টারটি 180 সেকেন্ডের তীব্র ঘনত্ব স্থায়ী হয়েছিল। চূড়ান্ত মূল্যায়ন: বিজয়।

স্ক্রোলগুলি সারণী এবং সারিতে লেখা হয় না, তবে সাগাসের ঘূর্ণায়মান গদ্যে লেখা হয়। এটা আমাদের প্রথম মহান পরীক্ষা.

পণ্ডিতের ভবিষ্যদ্বাণী: এসকিউএল দিয়ে পাঠ্যকে টেবিলে পরিণত করা

চ্যালেঞ্জ হল যে একটি শ্যাডোব্লেডের দ্রুত, জোড়া আক্রমণের বিশদ বিবরণ দিয়ে একটি প্রতিবেদন একটি একক, বিধ্বংসী বিস্ফোরণের জন্য একজন আহবানকারীর বিপুল শক্তি সংগ্রহের ঘটনাক্রম থেকে খুব আলাদাভাবে পড়ে। আমরা কেবল এই ডেটা আমদানি করতে পারি না; আমরা এটা ব্যাখ্যা করতে হবে. এই জাদুর মুহূর্ত. আমরা BigQuery-এর ভিতরেই আমাদের সমস্ত ফাইল থেকে সমস্ত রেকর্ড পড়তে, বুঝতে এবং গঠন করতে একটি শক্তিশালী মন্ত্র হিসাবে একটি একক SQL কোয়েরি ব্যবহার করব।

👉💻 আপনার ক্লাউড শেল টার্মিনালে ফিরে, আপনার সংযোগের নাম প্রদর্শন করতে নিম্নলিখিত কমান্ডটি চালান:

echo "${PROJECT_ID}.${REGION}.gcs-connection"

আপনার টার্মিনাল সম্পূর্ণ সংযোগ স্ট্রিং প্রদর্শন করবে, এই সম্পূর্ণ স্ট্রিংটি নির্বাচন করুন এবং অনুলিপি করুন, পরবর্তী ধাপে আপনার এটির প্রয়োজন হবে

আমরা একটি একক, শক্তিশালী মন্ত্র ব্যবহার করব: ML.GENERATE_TEXT । এই বানানটি একটি মিথুনকে ডেকে আনে, একে প্রতিটি স্ক্রোল দেখায় এবং এটিকে একটি কাঠামোগত JSON অবজেক্ট হিসাবে মূল তথ্য ফেরত দেওয়ার নির্দেশ দেয়।

👉📜 BigQuery স্টুডিওতে, জেমিনি মডেল রেফারেন্স তৈরি করুন। এটি জেমিনি ফ্ল্যাশ ওরাকলকে আমাদের BigQuery লাইব্রেরিতে আবদ্ধ করে যাতে আমরা এটিকে আমাদের কোয়েরিতে কল করতে পারি। প্রতিস্থাপন মনে রাখবেন

আপনার টার্মিনাল থেকে কপি করা সম্পূর্ণ সংযোগ স্ট্রিং দিয়ে REPLACE-WITH-YOUR-FULL-CONNECTION-STRING

  CREATE OR REPLACE MODEL bestiary_data.gemini_flash_model
  REMOTE WITH CONNECTION `REPLACE-WITH-YOUR-FULL-CONNECTION-STRING`
  OPTIONS (endpoint = 'gemini-2.5-flash');

👉📜 এখন, গ্র্যান্ড ট্রান্সমিউটেশন স্পেলটি কাস্ট করুন। এই ক্যোয়ারীটি অশোধিত পাঠ্যটি পড়ে, প্রতিটি স্ক্রলের জন্য একটি বিশদ প্রম্পট তৈরি করে, এটি জেমিনিতে পাঠায় এবং AI এর কাঠামোগত JSON প্রতিক্রিয়া থেকে একটি নতুন স্টেজিং টেবিল তৈরি করে৷

CREATE OR REPLACE TABLE bestiary_data.structured_bestiary AS
SELECT
  -- THE CRITICAL CHANGE: We remove PARSE_JSON. The result is already a JSON object.
  ml_generate_text_result AS structured_data
FROM
  ML.GENERATE_TEXT(
    -- Our bound Gemini Flash model.
    MODEL bestiary_data.gemini_flash_model,

    -- Our perfectly constructed input, with the prompt built for each row.
    (
      SELECT
        CONCAT(
          """
          From the following text, extract structured data into a single, valid JSON object.

          Your output must strictly conform to the following JSON structure and data types. Do not add, remove, or change any keys.

          {
            "monster": {
              "monster_id": "string",
              "name": "string",
              "type": "string",
              "hit_points": "integer"
            },
            "battle": {
              "battle_id": "string",
              "monster_id": "string",
              "adventurer_id": "string",
              "outcome": "string",
              "duration_seconds": "integer"
            },
            "adventurer": {
              "adventurer_id": "string",
              "name": "string",
              "class": "string"
            }
          }

          **CRUCIAL RULES:**
          - Do not output any text, explanations, conversational filler, or markdown formatting like ` ```json` before or after the JSON object.
          - Your entire response must be ONLY the raw JSON object itself.

          Here is the text:
          """,
          raw_text -- We append the actual text of the report here.
        ) AS prompt -- The final column is still named 'prompt', as the oracle requires.
      FROM
        bestiary_data.raw_intel_content_table
    ),

    -- The STRUCT now ONLY contains model parameters.
    STRUCT(
      0.2 AS temperature,
      2048 AS max_output_tokens
    )
  );

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

👉📜 জেমিনি মডেল থেকে কাঁচা আউটপুট পরিদর্শন করার জন্য একটি ক্যোয়ারী চালান:

SELECT * FROM bestiary_data.structured_bestiary;

👀 আপনি স্ট্রাকচার্ড_ডেটা নামে একটি একক কলাম দেখতে পাবেন। প্রতিটি সারির বিষয়বস্তু এই জটিল JSON অবজেক্টের মতো দেখাবে:

{"candidates":[{"avg_logprobs":-0.5691758094475283,"content":{"parts":[{"text":"```json\n{\n  \"monster\": {\n    \"monster_id\": \"gw_02\",\n    \"name\": \"Gravewight\",\n    \"type\": \"Gravewight\",\n    \"hit_points\": 120\n  },\n  \"battle\": {\n    \"battle_id\": \"br_735\",\n    \"monster_id\": \"gw_02\",\n    \"adventurer_id\": \"adv_001\",\n    \"outcome\": \"Defeat\",\n    \"duration_seconds\": 45\n  },\n  \"adventurer\": {\n    \"adventurer_id\": \"adv_001\",\n    \"name\": \"Elara\",\n    \"class\": null\n  }\n}\n```"}],"role":"model"},"finish_reason":"STOP","score":-97.32906341552734}],"create_time":"2025-07-28T15:53:24.482775Z","model_version":"gemini-2.5-flash","response_id":"9JyHaNe7HZ2WhMIPxqbxEQ","usage_metadata":{"billable_prompt_usage":{"text_count":640},"candidates_token_count":171,"candidates_tokens_details":[{"modality":"TEXT","token_count":171}],"prompt_token_count":207,"prompt_tokens_details":[{"modality":"TEXT","token_count":207}],"thoughts_token_count":1014,"total_token_count":1392,"traffic_type":"ON_DEMAND"}}

আপনি দেখতে পাচ্ছেন, আমাদের পুরষ্কার - আমাদের অনুরোধ করা পরিষ্কার JSON অবজেক্ট - এই কাঠামোর গভীরে অবস্থিত৷ আমাদের পরবর্তী কাজ পরিষ্কার। এই কাঠামোকে নিয়মতান্ত্রিকভাবে নেভিগেট করার জন্য এবং এর মধ্যে বিশুদ্ধ জ্ঞান আহরণের জন্য আমাদের অবশ্যই একটি অনুষ্ঠান করতে হবে।

ক্লিনজিং এর আচার: এসকিউএল এর সাথে জেনাআই আউটপুটকে স্বাভাবিক করা

মিথুন কথা বলেছে, কিন্তু এর শব্দগুলি কাঁচা এবং এর সৃষ্টির ইথারিয়াল শক্তিতে মোড়ানো (প্রার্থী, শেষ_কারণ, ইত্যাদি)। একজন সত্যিকারের পণ্ডিত কেবল কাঁচা ভবিষ্যদ্বাণীকে তাক করে না; তারা যত্ন সহকারে মূল জ্ঞান আহরণ করে এবং ভবিষ্যতে ব্যবহারের জন্য উপযুক্ত টোমগুলিতে লিখিত করে।

আমরা এখন আমাদের মন্ত্রের চূড়ান্ত সেট নিক্ষেপ করব। এই একক স্ক্রিপ্ট হবে:

  • আমাদের স্টেজিং টেবিল থেকে কাঁচা, নেস্টেড JSON পড়ুন।
  • মূল ডেটা পেতে এটি পরিষ্কার এবং পার্স করুন।
  • প্রাসঙ্গিক অংশগুলিকে তিনটি চূড়ান্ত, আদিম টেবিলে লিখুন: দানব, দুঃসাহসী এবং যুদ্ধ।

👉📜 একটি নতুন BigQuery ক্যোয়ারী এডিটরে, আমাদের ক্লিনজিং লেন্স তৈরি করতে নিম্নলিখিত বানানটি চালান:

CREATE OR REPLACE TABLE bestiary_data.monsters AS
WITH
  CleanedDivinations AS (
    SELECT
      SAFE.PARSE_JSON(
        REGEXP_EXTRACT(
          JSON_VALUE(structured_data, '$.candidates[0].content.parts[0].text'),
          r'\{[\s\S]*\}'
        )
      ) AS report_data
    FROM
      bestiary_data.structured_bestiary
  )
SELECT
  JSON_VALUE(report_data, '$.monster.monster_id') AS monster_id,
  JSON_VALUE(report_data, '$.monster.name') AS name,
  JSON_VALUE(report_data, '$.monster.type') AS type,
  SAFE_CAST(JSON_VALUE(report_data, '$.monster.hit_points') AS INT64) AS hit_points
FROM
  CleanedDivinations
WHERE
  report_data IS NOT NULL
QUALIFY ROW_NUMBER() OVER (PARTITION BY monster_id ORDER BY name) = 1;

👉📜 বেস্টিয়ারি যাচাই করুন:

SELECT * FROM bestiary_data.monsters;

এর পরে, আমরা আমাদের রোল অফ চ্যাম্পিয়নস তৈরি করব, যারা এই জানোয়ারদের মুখোমুখি হয়েছে তাদের সাহসী দুঃসাহসিকদের একটি তালিকা।

👉📜 একটি নতুন ক্যোয়ারী এডিটরে, অ্যাডভেঞ্চারার টেবিল তৈরি করতে নিম্নলিখিত বানানটি চালান:

CREATE OR REPLACE TABLE bestiary_data.adventurers AS
WITH
  CleanedDivinations AS (
    SELECT
      SAFE.PARSE_JSON(
        REGEXP_EXTRACT(
          JSON_VALUE(structured_data, '$.candidates[0].content.parts[0].text'),
          r'\{[\s\S]*\}'
        )
      ) AS report_data
    FROM
      bestiary_data.structured_bestiary
  )
SELECT
  JSON_VALUE(report_data, '$.adventurer.adventurer_id') AS adventurer_id,
  JSON_VALUE(report_data, '$.adventurer.name') AS name,
  JSON_VALUE(report_data, '$.adventurer.class') AS class
FROM
  CleanedDivinations
QUALIFY ROW_NUMBER() OVER (PARTITION BY adventurer_id ORDER BY name) = 1;

👉📜 রোল অফ চ্যাম্পিয়ন যাচাই করুন:

SELECT * FROM bestiary_data.adventurers;

অবশেষে, আমরা আমাদের ফ্যাক্ট টেবিল তৈরি করব: যুদ্ধের ক্রনিকল। এই টোমটি অন্য দুটিকে লিঙ্ক করে, প্রতিটি অনন্য সাক্ষাতের বিবরণ রেকর্ড করে। যেহেতু প্রতিটি যুদ্ধ একটি অনন্য ইভেন্ট, তাই কোন অনুলিপি প্রয়োজন নেই।

👉📜 একটি নতুন ক্যোয়ারী এডিটরে, যুদ্ধের টেবিল তৈরি করতে নিম্নলিখিত বানানটি চালান:

CREATE OR REPLACE TABLE bestiary_data.battles AS
WITH
  CleanedDivinations AS (
    SELECT
      SAFE.PARSE_JSON(
        REGEXP_EXTRACT(
          JSON_VALUE(structured_data, '$.candidates[0].content.parts[0].text'),
          r'\{[\s\S]*\}'
        )
      ) AS report_data
    FROM
      bestiary_data.structured_bestiary
  )
-- Extract the raw essence for all battle fields and cast where necessary.
SELECT
  JSON_VALUE(report_data, '$.battle.battle_id') AS battle_id,
  JSON_VALUE(report_data, '$.battle.monster_id') AS monster_id,
  JSON_VALUE(report_data, '$.battle.adventurer_id') AS adventurer_id,
  JSON_VALUE(report_data, '$.battle.outcome') AS outcome,
  SAFE_CAST(JSON_VALUE(report_data, '$.battle.duration_seconds') AS INT64) AS duration_seconds
FROM
  CleanedDivinations;

👉📜 ক্রনিকল যাচাই করুন:

SELECT * FROM bestiary_data.battles;

কৌশলগত অন্তর্দৃষ্টি উন্মোচন

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

আসুন এখন একটি চূড়ান্ত, গ্র্যান্ড ভবিষ্যদ্বাণী করা যাক। আমরা একটি বানান কাস্ট করব যা একসাথে আমাদের তিনটি টোমের সাথে পরামর্শ করবে - বেস্টিয়ারি অফ মনস্টারস, দ্য রোল অফ চ্যাম্পিয়নস এবং ক্রনিকল অফ ব্যাটলস-একটি গভীর, কার্যকর অন্তর্দৃষ্টি উন্মোচন করতে৷

আমাদের কৌশলগত প্রশ্ন: "প্রতিটি অভিযাত্রীর জন্য, সবচেয়ে শক্তিশালী দানবের নাম কী (হিট পয়েন্ট দ্বারা) তারা সফলভাবে পরাজিত হয়েছে এবং সেই নির্দিষ্ট বিজয় কতক্ষণ সময় নিয়েছে?"

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

👉📜 একটি নতুন BigQuery ক্যোয়ারী এডিটরে, নিম্নলিখিত চূড়ান্ত মন্ত্রটি কাস্ট করুন:

-- This is our final spell, joining all three tomes to reveal a deep insight.
WITH
  -- First, we consult the Chronicle of Battles to find only the victories.
  VictoriousBattles AS (
    SELECT
      adventurer_id,
      monster_id,
      duration_seconds
    FROM
      bestiary_data.battles
    WHERE
      outcome = 'Victory'
  ),
  -- Next, we create a temporary record for each victory, ranking the monsters
  -- each adventurer defeated by their power (hit points).
  RankedVictories AS (
    SELECT
      v.adventurer_id,
      m.name AS monster_name,
      m.hit_points,
      v.duration_seconds,
      -- This spell ranks each adventurer's victories from most to least powerful monster.
      ROW_NUMBER() OVER (PARTITION BY v.adventurer_id ORDER BY m.hit_points DESC) as victory_rank
    FROM
      VictoriousBattles v
    JOIN
      bestiary_data.monsters m ON v.monster_id = m.monster_id
  )
-- Finally, we consult the Roll of Champions and join it with our ranked victories
-- to find the name of each champion and the details of their greatest triumph.
SELECT
  a.name AS adventurer_name,
  a.class AS adventurer_class,
  r.monster_name AS most_powerful_foe_defeated,
  r.hit_points AS foe_hit_points,
  r.duration_seconds AS duration_of_greatest_victory
FROM
  bestiary_data.adventurers a
JOIN
  RankedVictories r ON a.adventurer_id = r.adventurer_id
WHERE
  -- We only want to see their number one, top-ranked victory.
  r.victory_rank = 1
ORDER BY
  foe_hit_points DESC;

এই প্রশ্নের আউটপুট হবে একটি পরিষ্কার, সুন্দর টেবিল যা আপনার ডেটাসেটে প্রতিটি দুঃসাহসিকের জন্য একটি "চ্যাম্পিয়নের সর্বশ্রেষ্ঠ কীর্তি" প্রদান করে৷ এটি এই মত কিছু দেখতে পারে:

04-03-ফাইনাল-ফলাফল.png

Big Query ট্যাব বন্ধ করুন।

এই একক, মার্জিত ফলাফল পুরো পাইপলাইনের মান প্রমাণ করে। আপনি সফলভাবে কাঁচা, বিশৃঙ্খল যুদ্ধক্ষেত্রের প্রতিবেদনগুলিকে কিংবদন্তি গল্প এবং কৌশলগত, ডেটা-চালিত অন্তর্দৃষ্টির উত্সে রূপান্তরিত করেছেন।

5. The Scribe's Grimoire: In-Datawarehouse Chunking, Embedding, and Search

আলকেমিস্টের ল্যাবে আমাদের কাজ সফল হয়েছে। আমরা কাঁচা, বর্ণনামূলক স্ক্রোলগুলিকে কাঠামোগত, রিলেশনাল টেবিলে রূপান্তরিত করেছি—ডেটা ম্যাজিকের একটি শক্তিশালী কৃতিত্ব। যাইহোক, মূল স্ক্রোলগুলি এখনও একটি গভীর, শব্দার্থিক সত্য ধারণ করে যা আমাদের কাঠামোগত টেবিলগুলি সম্পূর্ণরূপে ক্যাপচার করতে পারে না। সত্যিকারের জ্ঞানী এজেন্ট তৈরি করতে, আমাদের অবশ্যই এই অর্থটি আনলক করতে হবে।

ওভারভিউ

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

আমরা সম্পূর্ণরূপে আমাদের BigQuery গৃহের মধ্যে একটি শক্তিশালী, ইন-ডেটাবেস আচার-অনুষ্ঠান সম্পাদন করব।

  • দ্য রিচুয়াল অফ ডিভিশন (চঙ্কিং): আমরা আমাদের কাঁচা বুদ্ধির লগ নেব এবং সাবধানতার সাথে সেগুলিকে ছোট, ফোকাসড, স্বয়ংসম্পূর্ণ প্যাসেজে ভেঙ্গে ফেলব।
  • পাতনের রীতি (এম্বেডিং): আমরা একটি জেমিনি মডেলের সাথে পরামর্শ করার জন্য BQML ব্যবহার করব, প্রতিটি টেক্সট খণ্ডকে একটি "অর্থবোধক আঙ্গুলের ছাপ"-এ একটি ভেক্টর এম্বেডিং-এ রূপান্তরিত করব।
  • ভবিষ্যদ্বাণীর আচার (অনুসন্ধান): আমরা সাধারণ ইংরেজিতে একটি প্রশ্ন জিজ্ঞাসা করতে এবং আমাদের গ্রিমোয়ার থেকে সবচেয়ে প্রাসঙ্গিক, পাতিত জ্ঞান খুঁজে পেতে BQML এর ভেক্টর অনুসন্ধান ব্যবহার করব।

এই সম্পূর্ণ প্রক্রিয়াটি BigQuery-এর নিরাপত্তা ও স্কেলকে বাদ না দিয়ে একটি শক্তিশালী, অনুসন্ধানযোগ্য জ্ঞানের ভিত্তি তৈরি করে।

ডেটা ইঞ্জিনিয়ারের দ্রষ্টব্য: এটি একটি সম্পূর্ণ, এন্ড-টু-এন্ড RAG ডেটা প্রস্তুতির পাইপলাইন প্রদর্শন করে যা সম্পূর্ণভাবে BigQuey-এর মধ্যে সম্পাদিত হয়। এটি একটি প্যাটার্ন যা প্রথাগত এআই পাইপলাইনের অপারেশনাল ওভারহেডকে ব্যাপকভাবে সরল করে। খণ্ড, এম্বেডিং এবং অনুসন্ধানের জন্য BQML ব্যবহার করে, আমরা পৃথক ডেটা মুভমেন্ট, প্রসেসিং ক্লাস্টার (যেমন স্পার্ক), বা বাহ্যিক API কলের প্রয়োজনীয়তা দূর করি, যার ফলে কর্মপ্রবাহকে আরও দ্রুত, আরও নিরাপদ এবং পরিচালনা করা সহজ হয়।

দ্য রিচুয়াল অফ ডিভিশন: এসকিউএল দিয়ে স্ক্রলগুলিকে ডিকনস্ট্রাকটিং করা

আমাদের জ্ঞানের উৎস হল আমাদের GCS আর্কাইভের কাঁচা টেক্সট ফাইলগুলি, যা আমাদের বাহ্যিক টেবিল, bestiary_data.raw_intel_content_table এর মাধ্যমে অ্যাক্সেসযোগ্য। আমাদের প্রথম কাজ হল একটি বানান লেখা যা প্রতিটি দীর্ঘ স্ক্রোল পড়ে এবং এটিকে ছোট, আরও হজমযোগ্য পদগুলির একটি সিরিজে বিভক্ত করে। এই আচারের জন্য, আমরা একটি একক বাক্য হিসাবে একটি "খণ্ড" সংজ্ঞায়িত করব।

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

  • স্থির দৈর্ঘ্য(আকার) চঙ্কিং , তবে এটি একটি মূল ধারণাকে অর্ধেক করে ফেলতে পারে।

আরো পরিশীলিত আচার, মত

  • রিকার্সিভ চঙ্কিং , প্রায়ই অনুশীলনে পছন্দ করা হয়; তারা প্রথমে অনুচ্ছেদের মতো প্রাকৃতিক সীমানা বরাবর পাঠ্যকে ভাগ করার চেষ্টা করে, তারপর যতটা সম্ভব শব্দার্থিক প্রসঙ্গ বজায় রাখতে বাক্যগুলিতে ফিরে আসে। সত্যিই জটিল পাণ্ডুলিপি জন্য.
  • বিষয়বস্তু-সচেতন চাঙ্কিং(ডকুমেন্ট) , যেখানে স্ক্রাইব নথির অন্তর্নিহিত কাঠামো ব্যবহার করে—যেমন প্রযুক্তিগত ম্যানুয়ালের শিরোনাম বা কোডের স্ক্রলে ফাংশনগুলি, জ্ঞানের সবচেয়ে যৌক্তিক এবং শক্তিশালী অংশ তৈরি করতে। এবং আরো...

আমাদের যুদ্ধ লগের জন্য, বাক্যটি গ্রানুলারিটি এবং প্রসঙ্গের নিখুঁত ভারসাম্য প্রদান করে।

👉📜 একটি নতুন BigQuery ক্যোয়ারী এডিটরে, নিম্নলিখিত মন্ত্রটি চালান। এই বানানটি SPLIT ফাংশন ব্যবহার করে প্রতি পিরিয়ডে (.) প্রতিটি স্ক্রলের টেক্সটকে আলাদা করে দেয় এবং তারপরে বাক্যের বিন্যাসটিকে আলাদা সারিতে আননেস্ট করে।

CREATE OR REPLACE TABLE bestiary_data.chunked_intel AS
WITH
  -- First, add a unique row number to each scroll to act as a document ID.
  NumberedScrolls AS (
    SELECT
      ROW_NUMBER() OVER () AS scroll_id,
      raw_text
    FROM
      bestiary_data.raw_intel_content_table
  )
-- Now, process each numbered scroll.
SELECT
  scroll_id,
  -- Assign a unique ID to each chunk within a scroll for precise reference.
  CONCAT(CAST(scroll_id AS STRING), '-', CAST(ROW_NUMBER() OVER (PARTITION BY scroll_id) AS STRING)) as chunk_id,
  -- Trim whitespace from the chunk for cleanliness.
  TRIM(chunk) AS chunk_text
FROM
  NumberedScrolls,
  -- This is the core of the spell: UNNEST splits the array of sentences into rows.
  UNNEST(SPLIT(raw_text, '.')) AS chunk
-- A final refinement: we only keep chunks that have meaningful content.
WHERE
  -- This ensures we don't have empty rows from double periods, etc.
  LENGTH(TRIM(chunk)) > 15;

👉 এখন, আপনার নতুন লেখা, খণ্ডিত জ্ঞান পরিদর্শন করতে এবং পার্থক্য দেখতে একটি প্রশ্ন চালান।

SELECT * FROM bestiary_data.chunked_intel ORDER BY scroll_id, chunk_id;

08-01-chunking.png

ফলাফল পর্যবেক্ষণ. যেখানে একসময় পাঠ্যের একক, ঘন ব্লক ছিল, সেখানে এখন একাধিক সারি রয়েছে, প্রতিটি মূল স্ক্রোল (scroll_id) এর সাথে বাঁধা কিন্তু শুধুমাত্র একটি একক, ফোকাসযুক্ত বাক্য রয়েছে। প্রতিটি সারি এখন ভেক্টরাইজেশনের জন্য একটি নিখুঁত প্রার্থী।

পাতনের আচার: বিকিউএমএল দিয়ে ভেক্টরে পাঠ্য রূপান্তর করা

👉💻 প্রথমে, আপনার টার্মিনালে ফিরে যান, আপনার সংযোগের নাম প্রদর্শন করতে নিম্নলিখিত কমান্ডটি চালান:

. ~/agentverse-dataengineer/set_env.sh
echo "${PROJECT_ID}.${REGION}.gcs-connection"

👉📜 আমাদের অবশ্যই একটি নতুন BigQuery মডেল তৈরি করতে হবে যা মিথুনের টেক্সট এম্বেডিংয়ের দিকে নির্দেশ করে। BigQuery স্টুডিওতে, নিম্নলিখিত বানানটি চালান। মনে রাখবেন আপনি আপনার টার্মিনাল থেকে এইমাত্র কপি করা সম্পূর্ণ সংযোগ স্ট্রিং দিয়ে REPLACE-WITH-YOUR-FULL-CONNECTION-STRING প্রতিস্থাপন করতে হবে।

CREATE OR REPLACE MODEL bestiary_data.text_embedding_model
  REMOTE WITH CONNECTION `REPLACE-WITH-YOUR-FULL-CONNECTION-STRING`
  OPTIONS (endpoint = 'text-embedding-005');

👉📜 এখন, গ্র্যান্ড ডিস্টিলেশন স্পেল কাস্ট করুন। এই ক্যোয়ারীটি ML.GENERATE_EMBEDDING ফাংশনকে কল করে, যা আমাদের chunked_intel টেবিল থেকে প্রতিটি সারি পড়বে, জেমিনি এম্বেডিং মডেলে পাঠ্য পাঠাবে এবং একটি নতুন টেবিলে ভেক্টর ফিঙ্গারপ্রিন্ট সংরক্ষণ করবে৷

CREATE OR REPLACE TABLE bestiary_data.embedded_intel AS
SELECT
  *
FROM
  ML.GENERATE_EMBEDDING(
    -- The embedding model we just created.
    MODEL bestiary_data.text_embedding_model,
    -- A subquery that selects our data and renames the text column to 'content'.
    (
      SELECT
        scroll_id,
        chunk_id,
        chunk_text AS content -- Renaming our text column is the key correction.
      FROM
        bestiary_data.chunked_intel
    ),
    -- The configuration struct is now simpler and correct.
    STRUCT(
      -- This task_type is crucial. It optimizes the vectors for retrieval.
      'RETRIEVAL_DOCUMENT' AS task_type
    )
  );

এই প্রক্রিয়ায় এক বা দুই মিনিট সময় লাগতে পারে কারণ BigQuery সমস্ত পাঠ্য অংশগুলিকে প্রক্রিয়া করে।

08-02-এম্বেডিং.png

👉📜 সম্পূর্ণ হয়ে গেলে, শব্দার্থিক আঙ্গুলের ছাপ দেখতে নতুন টেবিলটি পরিদর্শন করুন।

SELECT
  chunk_id,
  content,
  ml_generate_embedding_result
FROM
  bestiary_data.embedded_intel
LIMIT 20;

আপনি এখন একটি নতুন কলাম দেখতে পাবেন, ml_generate_embedding_result , যেখানে আপনার পাঠ্যের ঘন ভেক্টর উপস্থাপনা রয়েছে। আমাদের Grimoire এখন শব্দার্থগতভাবে এনকোড করা হয়েছে।

ভবিষ্যদ্বাণীর আচার: বিকিউএমএল সহ শব্দার্থিক অনুসন্ধান

👉📜 আমাদের গ্রিমোয়ারের চূড়ান্ত পরীক্ষা হল এটিকে একটি প্রশ্ন জিজ্ঞাসা করা। আমরা এখন আমাদের চূড়ান্ত অনুষ্ঠান সম্পাদন করব: একটি ভেক্টর অনুসন্ধান। এটি একটি কীওয়ার্ড অনুসন্ধান নয়; এটি অর্থের জন্য একটি অনুসন্ধান। আমরা স্বাভাবিক ভাষায় একটি প্রশ্ন জিজ্ঞাসা করব, BQML আমাদের প্রশ্নটিকে ফ্লাইতে একটি এমবেডিং-এ রূপান্তর করবে এবং তারপরে আমাদের embedded_intel পুরো টেবিলটি অনুসন্ধান করবে যাতে টেক্সট খণ্ডগুলি খুঁজে পাওয়া যায় যার আঙুলের ছাপ অর্থে "সবচেয়ে কাছাকাছি"।

SELECT
  -- The content column contains our original, relevant text chunk.
  base.content,
  -- The distance metric shows how close the match is (lower is better).
  distance
FROM
  VECTOR_SEARCH(
    -- The table containing the knowledge base with its embeddings.
    TABLE bestiary_data.embedded_intel,
    -- The column that contains the vector embeddings.
    'ml_generate_embedding_result',
    (
      -- This subquery generates an embedding for our question in real-time.
      SELECT ml_generate_embedding_result
      FROM ML.GENERATE_EMBEDDING(
          MODEL bestiary_data.text_embedding_model,
          (SELECT 'What are the tactics against a foe that causes paralysis?' AS content),
          STRUCT('RETRIEVAL_QUERY' AS task_type)
        )
    ),
    -- Specify how many of the closest results we want to see.
    top_k => 3,
    -- The distance metric used to find the "closest" vectors.
    distance_type => 'COSINE'
  );

বানান বিশ্লেষণ:

  • VECTOR_SEARCH : মূল ফাংশন যা অনুসন্ধানকে অর্কেস্ট্রেট করে।
  • ML.GENERATE_EMBEDDING (অভ্যন্তরীণ প্রশ্ন): এটাই জাদু। আমরা একই মডেল ব্যবহার করে আমাদের ক্যোয়ারী ( 'What are the tactics...' ) এম্বেড করি কিন্তু টাস্ক টাইপ 'RETRIEVAL_QUERY' দিয়ে, যা বিশেষভাবে প্রশ্নের জন্য অপ্টিমাইজ করা হয়েছে।
  • top_k => 3 : আমরা শীর্ষ 3টি সবচেয়ে প্রাসঙ্গিক ফলাফলের জন্য জিজ্ঞাসা করছি।
  • distance_type => 'COSINE' : এটি ভেক্টরের মধ্যে "কোণ" পরিমাপ করে। একটি ছোট কোণ মানে অর্থগুলি আরও সারিবদ্ধ।

08-03-ফাইনাল-ফলাফল.png

ফলাফল ঘনিষ্ঠভাবে দেখুন. ক্যোয়ারীতে "চূর্ণবিচূর্ণ" বা "আলোচনা" শব্দটি ছিল না, তবুও শীর্ষ ফলাফল হল: "একক, মার্জিত পর্যাপ্ততার ফোকাসড মন্ত্রের সাথে, এলারা তার পক্ষাঘাতগ্রস্ত আভাকে ভেঙে দিয়েছে, একটি মানসিক আক্রমণ যা 150 পয়েন্টের ক্ষতি করে" । এটি শব্দার্থিক অনুসন্ধানের শক্তি। মডেলটি "প্যারালাইসিসের বিরুদ্ধে কৌশল" ধারণাটি বুঝতে পেরেছিল এবং একটি নির্দিষ্ট, সফল কৌশল বর্ণনা করে এমন বাক্যটি খুঁজে পেয়েছিল।

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

6. ভেক্টর স্ক্রিপ্টোরিয়াম: অনুমান করার জন্য ক্লাউড এসকিউএল দিয়ে ভেক্টর স্টোর তৈরি করা

আমাদের Grimoire বর্তমানে কাঠামোগত টেবিল হিসাবে বিদ্যমান - একটি শক্তিশালী তথ্য ক্যাটালগ, কিন্তু এর জ্ঞান আক্ষরিক। এটি monster_id = 'MN-001' বোঝে কিন্তু "অবফুসকেশন" এর পিছনে গভীর, শব্দার্থিক অর্থ নয়, আমাদের এজেন্টদের সত্যিকারের জ্ঞান দিতে, তাদের সূক্ষ্মতা এবং দূরদর্শিতার সাথে পরামর্শ দেওয়ার জন্য, আমাদের অবশ্যই আমাদের জ্ঞানের সারাংশকে এমন একটি ফর্মে ফুটিয়ে তুলতে হবে যা অর্থ ক্যাপচার করে: ভেক্টর

আমাদের জ্ঞানের অন্বেষণ আমাদের একটি দীর্ঘ-বিস্মৃত অগ্রদূত সভ্যতার ধ্বংসাবশেষের দিকে নিয়ে গেছে। একটি সিল করা ভল্টের গভীরে সমাহিত, আমরা অলৌকিকভাবে সংরক্ষিত প্রাচীন স্ক্রোলগুলির একটি বক্ষ উন্মোচন করেছি। এগুলো নিছক যুদ্ধের খবর নয়; এগুলিতে গভীর, দার্শনিক জ্ঞান রয়েছে যে কীভাবে একটি প্রাণীকে পরাস্ত করা যায় যা সমস্ত দুর্দান্ত প্রচেষ্টাকে জর্জরিত করে। স্ক্রোলগুলিতে বর্ণিত একটি সত্তাকে "হাতানো, নীরব স্থবিরতা," একটি "সৃষ্টির বুননের ঝাঁকুনি।" মনে হচ্ছে দ্য স্ট্যাটিক প্রাচীনদের কাছেও পরিচিত ছিল, একটি চক্রাকার হুমকি যার ইতিহাস সময়ের কাছে হারিয়ে গেছে।

এই বিস্মৃত বিদ্যা আমাদের সবচেয়ে বড় সম্পদ। এটি শুধুমাত্র স্বতন্ত্র দানবদের পরাজিত করার জন্য নয়, পুরো দলকে কৌশলগত অন্তর্দৃষ্টি দিয়ে ক্ষমতায়নের চাবিকাঠি রাখে। এই শক্তিটি ব্যবহার করার জন্য, আমরা এখন স্কলারের সত্যিকারের স্পেলবুক (ভেক্টর ক্ষমতা সহ একটি PostgreSQL ডাটাবেস) তৈরি করব এবং এই স্ক্রোলগুলির নিরবধি সারমর্ম পড়তে, বোঝার এবং খোদাই করার জন্য একটি স্বয়ংক্রিয় ভেক্টর স্ক্রিপ্টোরিয়াম (একটি ডেটাফ্লো পাইপলাইন) তৈরি করব। এটি আমাদের গ্রিমোয়ারকে তথ্যের বই থেকে জ্ঞানের ইঞ্জিনে রূপান্তরিত করবে।

গল্প

ডেটা ইঞ্জিনিয়ারের দ্রষ্টব্য: আমাদের বানান বইয়ের জন্য, আমরা pgvector এক্সটেনশন সহ PostgreSQL-এর জন্য Cloud SQL বেছে নিয়েছি। এই পদ্ধতিটি একটি "ওয়ান-স্টপ-শপ" তৈরি করে যেখানে আমাদের কাঠামোগত মেটাডেটা (যেমন scroll_id এবং বিষয়বস্তু) এবং আমাদের শব্দার্থিক ভেক্টর এম্বেডিং একই ডাটাবেসে একসাথে থাকে। এটি অনেক অ্যাপ্লিকেশনের জন্য আর্কিটেকচারকে অত্যন্ত সহজ করে তোলে, কারণ আপনি উভয় রিলেশনাল ডেটা জিজ্ঞাসা করতে পারেন এবং একটি সিস্টেমে একটি একক SQL ক্যোয়ারী দিয়ে ভেক্টর সাদৃশ্য অনুসন্ধান করতে পারেন। যদিও ভার্টেক্স এআই ভেক্টর অনুসন্ধানের মতো বিশেষ ডেটাবেসগুলি আনুমানিক নিকটতম প্রতিবেশী (ANN) অনুসন্ধানের মাধ্যমে বিশাল স্কেলে (বিলিয়ন ভেক্টর) উচ্চতর কার্যকারিতা অফার করে, pgvector সঠিক নিকটতম প্রতিবেশী (ENN) অনুসন্ধান ব্যবহার করে অনেক এন্টারপ্রাইজ RAG অ্যাপ্লিকেশনগুলির জন্য সরলতা, ব্যয়-কার্যকারিতা এবং শক্তির একটি দুর্দান্ত ভারসাম্য সরবরাহ করে।

ওভারভিউ

স্কলারস স্পেলবুক ফরজিং (ক্লাউড এসকিউএল)

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

👉💻 একটি টার্মিনালে, আপনার ক্লাউড এসকিউএল ইন্সট্যান্স বিদ্যমান এবং প্রস্তুত কিনা তা যাচাই করতে নিম্নলিখিত কমান্ডটি চালান। এই স্ক্রিপ্টটি ইনস্ট্যান্সের ডেডিকেটেড পরিষেবা অ্যাকাউন্টকে Vertex AI ব্যবহার করার অনুমতি দেয়, যা ডাটাবেসের মধ্যে সরাসরি এম্বেডিং তৈরি করার জন্য অপরিহার্য।

. ~/agentverse-dataengineer/set_env.sh

echo "Verifying the existence of the Spellbook (Cloud SQL instance): $INSTANCE_NAME..."
gcloud sql instances describe $INSTANCE_NAME

SERVICE_ACCOUNT_EMAIL=$(gcloud sql instances describe $INSTANCE_NAME --format="value(serviceAccountEmailAddress)")
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
  --role="roles/aiplatform.user"

যদি কমান্ডটি সফল হয় এবং আপনার grimoire-spellbook উদাহরণের বিবরণ প্রদান করে, তাহলে ফোরজ তার কাজটি ভালভাবে করেছে। আপনি পরবর্তী মন্ত্রে এগিয়ে যেতে প্রস্তুত। যদি কমান্ডটি একটি NOT_FOUND ত্রুটি ফেরত দেয়, অনুগ্রহ করে নিশ্চিত করুন যে আপনি চালিয়ে যাওয়ার আগে প্রাথমিক পরিবেশ সেটআপ পদক্ষেপগুলি সফলভাবে সম্পন্ন করেছেন৷( data_setup.py )

👉💻 বইটি নকল করে, আমরা arcane_wisdom নামে একটি নতুন ডাটাবেস তৈরি করে এটিকে প্রথম অধ্যায়ে খুলি।

. ~/agentverse-dataengineer/set_env.sh
gcloud sql databases create $DB_NAME --instance=$INSTANCE_NAME

শব্দার্থিক রুনস লিখা: pgvector দিয়ে ভেক্টর ক্ষমতা সক্ষম করা

এখন যেহেতু আপনার ক্লাউড এসকিউএল ইন্সট্যান্স তৈরি করা হয়েছে, চলুন বিল্ট-ইন ক্লাউড এসকিউএল স্টুডিও ব্যবহার করে এর সাথে সংযোগ করি। এটি সরাসরি আপনার ডাটাবেসে SQL কোয়েরি চালানোর জন্য একটি ওয়েব-ভিত্তিক ইন্টারফেস প্রদান করে।

👉💻 প্রথমে, ক্লাউড SQL স্টুডিওতে নেভিগেট করুন, সেখানে যাওয়ার সবচেয়ে সহজ এবং দ্রুততম উপায় হল একটি নতুন ব্রাউজার ট্যাবে নিম্নলিখিত লিঙ্কটি খুলুন। আপনার গ্রিমোয়ার-স্পেলবুক উদাহরণের জন্য এটি আপনাকে সরাসরি ক্লাউড SQL স্টুডিওতে নিয়ে যাবে।

https://console.cloud.google.com/sql/instances/grimoire-spellbook/studio

👉 ডাটাবেস হিসাবে arcane_wisdom নির্বাচন করুন। ব্যবহারকারী হিসেবে postgres এবং পাসওয়ার্ড হিসেবে 1234qwer লিখুন abd Authenticate এ ক্লিক করুন।

👉📜 SQL স্টুডিও ক্যোয়ারী এডিটরে, এডিটর 1 ট্যাবে নেভিগেট করুন, ভেক্টর ডেটা টাইপ সক্ষম করতে নিম্নলিখিত SQL কোড পেস্ট করুন:

CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

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

👉📜 টেবিল তৈরি করে আমাদের স্পেলবুকের পৃষ্ঠাগুলি প্রস্তুত করুন যা আমাদের স্ক্রোলগুলির সারমর্মকে ধরে রাখবে।

CREATE TABLE ancient_scrolls (
    id SERIAL PRIMARY KEY,
    scroll_content TEXT,
    embedding VECTOR(768)
);

VECTOR(768) বানানটি একটি গুরুত্বপূর্ণ বিবরণ। Vertex AI এম্বেডিং মডেলটি আমরা ব্যবহার করব ( textembedding-gecko@003 বা অনুরূপ মডেল) একটি 768-ডাইমেনশন ভেক্টরে টেক্সট ডিস্টিল করে। আমাদের বানান বইয়ের পৃষ্ঠাগুলিকে অবশ্যই সেই আকারের একটি সারাংশ ধরে রাখতে প্রস্তুত থাকতে হবে। মাত্রা সবসময় মেলে উচিত.

প্রথম প্রতিবর্ণীকরণ: একটি ম্যানুয়াল শিলালিপি আচার

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

  1. ভবিষ্যদ্বাণী: পাঠ্যের একটি টুকরো নেওয়া এবং এর শব্দার্থিক সারাংশকে ভেক্টরে পাতানোর জন্য জেমিনি ওরাকলের সাথে পরামর্শ করা।
  2. শিলালিপি: আমাদের বানান বইতে মূল পাঠ এবং এর নতুন ভেক্টর সারাংশ লেখা।

ডেটা ইঞ্জিনিয়ারের দ্রষ্টব্য: একটি পাইপলাইনের মূল যুক্তি ম্যানুয়ালি প্রোটোটাইপ করা একটি অমূল্য অনুশীলন। এটি আপনাকে ডেটাফ্লো-এর মতো জটিল, বিতরণ করা সিস্টেমে একীভূত করার আগে পৃথক পৃথক উপাদানগুলি (যেমন একটি API কল বা একটি ডাটাবেস লেখা) ডিবাগ করতে সহায়তা করে।

এখন, ম্যানুয়াল আচার সঞ্চালন করা যাক.

👉📜 ক্লাউড এসকিউএল স্টুডিওতে । আমরা এখন embedding() ফাংশন ব্যবহার করব, এটি একটি শক্তিশালী বৈশিষ্ট্য যা google_ml_integration এক্সটেনশন দ্বারা প্রদত্ত। এটি আমাদের এসকিউএল কোয়েরি থেকে সরাসরি ভার্টেক্স এআই এমবেডিং মডেলকে কল করার অনুমতি দেয়, প্রক্রিয়াটিকে অত্যন্ত সহজ করে তোলে।

SET session.my_search_var='The Spectre of Analysis Paralysis is a phantom of the crossroads. It does not bind with chains but with the infinite threads of what if. It conjures a fog of options, a maze within the mind where every path seems equally fraught with peril and promise. It whispers of a single, flawless route that can only be found through exhaustive study, paralyzing its victim in a state of perpetual contemplation. This spectres power is broken by the Path of First Viability. This is not the search for the *best* path, but the commitment to the *first good* path. It is the wisdom to know that a decision made, even if imperfect, creates movement and reveals more of the map than standing still ever could. Choose a viable course, take the first step, and trust in your ability to navigate the road as it unfolds. Motion is the light that burns away the fog.';

INSERT INTO ancient_scrolls (scroll_content, embedding)

VALUES (current_setting('session.my_search_var'),  (embedding('text-embedding-005',current_setting('session.my_search_var')))::vector);

👉📜 নতুন খোদাই করা পৃষ্ঠাটি পড়ার জন্য একটি প্রশ্ন চালিয়ে আপনার কাজ যাচাই করুন:

SELECT id, scroll_content, LEFT(embedding::TEXT, 100) AS embedding_preview FROM ancient_scrolls;

আপনি সফলভাবে মূল RAG ডেটা-লোডিং কাজটি হাতে করে সম্পন্ন করেছেন!

শব্দার্থিক কম্পাস বানান: HNSW সূচকের সাথে বানান বইকে মুগ্ধ করা

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

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

আসুন এই জাদুটির মান প্রমাণ করুন।

Well ক্লাউড এসকিউএল স্টুডিওতে , নিম্নলিখিত বানানটি চালান। এটি আমাদের সদ্য সন্নিবেশিত স্ক্রোলটি অনুসন্ধান করার অনুকরণ করে এবং ডাটাবেসটিকে তার পরিকল্পনাটি EXPLAIN করতে বলে।

EXPLAIN ANALYZE
WITH ReferenceVector AS (
  -- First, get the vector we want to compare against.
  SELECT embedding AS vector
  FROM ancient_scrolls
  LIMIT 1
)
-- This is the main query we want to analyze.
SELECT
  ancient_scrolls.id,
  ancient_scrolls.scroll_content,
  -- We can also select the distance itself.
  ancient_scrolls.embedding <=> ReferenceVector.vector AS distance
FROM
  ancient_scrolls,
  ReferenceVector
ORDER BY
  -- Order by the distance operator's result.
  ancient_scrolls.embedding <=> ReferenceVector.vector
LIMIT 5;

আউটপুট দেখুন। আপনি এমন একটি লাইন দেখতে পাবেন যা বলে -> Seq Scan on ancient_scrolls । এটি নিশ্চিত করে যে ডাটাবেস প্রতিটি একক সারি পড়ছে। execution time নোট করুন।

👉📜 এখন, আসুন ইনডেক্সিং স্পেলটি কাস্ট করা যাক। lists প্যারামিটারটি সূচককে জানায় যে কতগুলি ক্লাস্টার তৈরি করতে হবে। একটি ভাল সূচনা পয়েন্ট হ'ল আপনি যে সারিটি প্রত্যাশা করছেন তার বর্গমূল।

CREATE INDEX ON ancient_scrolls USING hnsw (embedding vector_cosine_ops);

সূচকটি তৈরির জন্য অপেক্ষা করুন (এটি এক সারির জন্য দ্রুত হবে, তবে লক্ষ লক্ষ লোকের জন্য সময় নিতে পারে)।

👉📜 এখন, ঠিক একই একই EXPLAIN ANALYZE কমান্ডটি আবার চালান:

EXPLAIN ANALYZE
WITH ReferenceVector AS (
  -- First, get the vector we want to compare against.
  SELECT embedding AS vector
  FROM ancient_scrolls
  LIMIT 1
)
-- This is the main query we want to analyze.
SELECT
  ancient_scrolls.id,
  ancient_scrolls.scroll_content,
  -- We can also select the distance itself.
  ancient_scrolls.embedding <=> ReferenceVector.vector AS distance
FROM
  ancient_scrolls,
  ReferenceVector
ORDER BY
  -- Order by the distance operator's result.
  ancient_scrolls.embedding <=> ReferenceVector.vector
LIMIT 5;

নতুন ক্যোয়ারী পরিকল্পনা দেখুন। আপনি এখন দেখতে পাবেন -> Index Scan using... আরও গুরুত্বপূর্ণ বিষয়, execution time দেখুন। এটি কেবল একটি প্রবেশের সাথেও উল্লেখযোগ্যভাবে দ্রুত হবে। আপনি সবেমাত্র একটি ভেক্টর বিশ্বে ডাটাবেস পারফরম্যান্স টিউনিংয়ের মূল নীতিটি প্রদর্শন করেছেন।

মৃত্যুদন্ড কার্যকর করার সময়

আপনার উত্স ডেটা পরিদর্শন করা, আপনার ম্যানুয়াল আচারটি বোঝা এবং আপনার বানান বইটি গতির জন্য অনুকূলিত করে, আপনি এখন স্বয়ংক্রিয় স্ক্রিপ্টোরিয়াম তৈরি করতে সত্যই প্রস্তুত।

7। অর্থের জলবাহী: একটি ডেটাফ্লো ভেক্টরাইজেশন পাইপলাইন তৈরি করা

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

ওভারভিউ

ডেটা ইঞ্জিনিয়ারের দ্রষ্টব্য: যদিও আমরা আমাদের ফাইলগুলির মাধ্যমে লুপ করার জন্য একটি সাধারণ পাইথন স্ক্রিপ্ট লিখতে পারি, এম্বেডিং এপিআই কল করতে পারি এবং ডাটাবেসে লিখতে পারি, এই পদ্ধতির স্কেল হয় না। আমাদের যদি কয়েক মিলিয়ন স্ক্রোল থাকে তবে কী হবে? একটি একক স্ক্রিপ্ট ধীর এবং ব্যর্থতার প্রবণ হবে। ডেটাফ্লো একটি বিশাল সমান্তরাল ফ্যাশনে অ্যাপাচি বিম মডেল দ্বারা সংজ্ঞায়িত ডেটা প্রসেসিং পাইপলাইনগুলি কার্যকর করার জন্য একটি পরিচালিত, সার্ভারলেস প্ল্যাটফর্ম সরবরাহ করে। বিম আমাদের যৌক্তিক পদক্ষেপগুলি সংজ্ঞায়িত করতে দেয় (পড়ুন, এম্বেড, লিখুন), এবং ডেটাফ্লো শ্রমিকদের ঘুরানো, কার্যগুলি বিতরণ করা এবং ব্যর্থ আইটেমগুলি পুনরায় চেষ্টা করার কঠিন কাজটি পরিচালনা করে, আমাদের স্ক্রিপ্টোরিয়ামটি নিশ্চিত করে তোলে যে দৃ ust ় এবং দক্ষ।

স্ক্রিপ্টোরিয়ামের ফাউন্ডেশন প্রস্তুত করা হচ্ছে (শ্রমিক চিত্র)

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

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

Art আর্টিফ্যাক্ট রেজিস্ট্রিতে আপনার পাইপলাইনটির ফাউন্ডেশনাল চিত্রটি তৈরি এবং সঞ্চয় করতে নিম্নলিখিত কমান্ডটি চালান।

. ~/agentverse-dataengineer/set_env.sh
cd ~/agentverse-dataengineer/pipeline
gcloud builds submit --config cloudbuild.yaml \
  --substitutions=_REGION=${REGION},_REPO_NAME=${REPO_NAME} \
  .

Your আপনার বিচ্ছিন্ন পাইথন পরিবেশ তৈরি এবং সক্রিয় করতে এবং এটিতে প্রয়োজনীয় তলবকারী গ্রন্থাগারগুলি ইনস্টল করতে নিম্নলিখিত কমান্ডগুলি চালান।

cd ~/agentverse-dataengineer
. ~/agentverse-dataengineer/set_env.sh
python -m venv env
source ~/agentverse-dataengineer/env/bin/activate
cd ~/agentverse-dataengineer/pipeline
pip install -r requirements.txt

মাস্টার ইনক্যান্টেশন

সময় এসেছে মাস্টার স্পেল লিখতে যা আমাদের ভেক্টর স্ক্রিপ্টোরিয়ামকে শক্তি দেবে। আমরা স্ক্র্যাচ থেকে পৃথক যাদুকরী উপাদানগুলি লিখব না। আমাদের কাজটি হ'ল অ্যাপাচি বিমের ভাষা ব্যবহার করে উপাদানগুলিকে একটি যৌক্তিক, শক্তিশালী পাইপলাইনে একত্রিত করা।

  • এম্বেড টেক্সটব্যাচ (জেমিনির পরামর্শ): আপনি এই বিশেষায়িত লেখক তৈরি করবেন যা কীভাবে "গ্রুপের ভবিষ্যদ্বাণী" সম্পাদন করতে জানে। এটি কাঁচা পাঠ্য ফাইকের একটি ব্যাচ নেয়, সেগুলি জেমিনি পাঠ্য এম্বেডিং মডেলটিতে উপস্থাপন করে এবং তাদের পাতিত সারাংশ (ভেক্টর এম্বেডিংস) গ্রহণ করে।
  • রাইটসেসটোস্পেলবুক (চূড়ান্ত শিলালিপি): এটি আমাদের আর্কাইভিস্ট। এটি আমাদের ক্লাউড এসকিউএল বানান বইয়ের একটি সুরক্ষিত সংযোগ খোলার গোপনীয়তা জানে। এর কাজটি হ'ল একটি স্ক্রোলের সামগ্রী এবং এর ভেক্টরাইজড সারমর্ম নেওয়া এবং স্থায়ীভাবে সেগুলি একটি নতুন পৃষ্ঠায় লিখিত করা।

আমাদের লক্ষ্য হ'ল জ্ঞানের এক বিরামহীন প্রবাহ তৈরি করতে এই ক্রিয়াগুলি একসাথে চেইন করা।

Cloud ক্লাউড শেল এডিটরটিতে, ~/agentverse-dataengineer/pipeline/inscribe_essence_pipeline.py , এর ভিতরে, আপনি EmbedTextBatch নামে একটি ডফন ক্লাস পাবেন। #REPLACE-EMBEDDING-LOGIC মন্তব্যটি সনাক্ত করুন। এটি নিম্নলিখিত উদ্দীপনা দিয়ে প্রতিস্থাপন করুন।

# 1. Generate the embedding for the monster's name
result = self.client.models.embed_content(
                model="text-embedding-005",
                contents=contents,
                config=EmbedContentConfig(
                    task_type="RETRIEVAL_DOCUMENT",  
                    output_dimensionality=768, 
                )
            )

এই বানানটি বেশ কয়েকটি মূল পরামিতি সহ সুনির্দিষ্ট:

  • মডেল: আমরা একটি শক্তিশালী এবং আপ-টু-ডেট এম্বেডিং মডেল ব্যবহার করতে text-embedding-005 নির্দিষ্ট করি।
  • বিষয়বস্তু: এটি ডিএফএন প্রাপ্ত ফাইলগুলির ব্যাচের সমস্ত পাঠ্য সামগ্রীর একটি তালিকা।
  • টাস্ক_ টাইপ: আমরা এটি "পুনরুদ্ধার_ ডকুমেন্ট" এ সেট করেছি। এটি একটি সমালোচনামূলক নির্দেশ যা জেমিনিকে এম্বেডিংগুলি তৈরি করতে বলে যা পরে অনুসন্ধানে পাওয়া যায়।
  • আউটপুট_ মাত্রিকত্ব: এটি অবশ্যই 768 এ সেট করা উচিত, আমরা ক্লাউড এসকিউএল -এ আমাদের প্রাচীন_স্ক্রোলস টেবিলটি তৈরি করার সময় আমরা সংজ্ঞায়িত ভেক্টর (768) মাত্রার সাথে পুরোপুরি মিলে। মিলহীন মাত্রা ভেক্টর যাদুতে ত্রুটির একটি সাধারণ উত্স।

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

~/agentverse-dataengineer/pipeline/inscribe_essence_pipeline.py ইন #REPLACE ME-READFILE

files = (
            pipeline
            | "MatchFiles" >> fileio.MatchFiles(known_args.input_pattern)
            | "ReadMatches" >> fileio.ReadMatches()
            | "ExtractContent" >> beam.Map(lambda f: (f.metadata.path, f.read_utf8()))
        )

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

#REPLACE ME-EMBEDDING জানান এবং এটির সাথে এটি প্রতিস্থাপন করুন:

embeddings = (
            files
            | "BatchScrolls" >> beam.BatchElements(min_batch_size=1, max_batch_size=2)
            | "DistillBatch" >> beam.ParDo(
                  EmbedTextBatch(project_id=project, region=region)
              ).with_outputs('failed', main='processed')
        )

আমাদের স্ক্রোলগুলির সারাংশ সফলভাবে পাতিত করা হয়েছে। চূড়ান্ত আইনটি স্থায়ী স্টোরেজের জন্য আমাদের বানান বইতে এই জ্ঞানটি লিখিত করা। আমরা "প্রক্রিয়াজাত" গাদা থেকে স্ক্রোলগুলি নেব এবং সেগুলি আমাদের রাইটসেসটোস্পেলবুক আর্কাইভিস্টের হাতে তুলে দেব।

The মন্তব্যটি #REPLACE ME-WRITE TO DB এবং এটির সাথে প্রতিস্থাপন করুন:

_ = (
            embeddings.processed
            | "WriteToSpellbook" >> beam.ParDo(
                  WriteEssenceToSpellbook(
                      project_id=project,
                      region = "us-central1",
                      instance_name=known_args.instance_name,
                      db_name=known_args.db_name,
                      db_password=known_args.db_password
                  )
              )
        )

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

The মন্তব্যটি #REPLACE ME-LOG FAILURES বিবেচনা করুন এবং এটির সাথে এটি প্রতিস্থাপন করুন:

_ = (
            embeddings.failed
            | "LogFailures" >> beam.Map(lambda e: logging.error(f"Embedding failed for file {e[0]}: {e[1]}"))
        )

মাস্টার ইনক্যান্টেশন এখন সম্পূর্ণ! আপনি স্বতন্ত্র যাদুকরী উপাদানগুলি একসাথে চেইং করে একটি শক্তিশালী, বহু-পর্যায়ের ডেটা পাইপলাইন সফলভাবে একত্রিত করেছেন। আপনার scribche_essence_pipeline.py ফাইল সংরক্ষণ করুন। স্ক্রিপ্টোরিয়াম এখন তলব করার জন্য প্রস্তুত।

এখন আমরা আমাদের গোলেমকে জাগ্রত করার জন্য ডেটাফ্লো পরিষেবাটিকে কমান্ড করার জন্য গ্র্যান্ড সোমোনিং স্পেলটি কাস্ট করেছি এবং স্ক্রিবিং আচারটি শুরু করি।

Your আপনার টার্মিনালে, নিম্নলিখিত কমান্ডলাইনটি চালান

. ~/agentverse-dataengineer/set_env.sh
source ~/agentverse-dataengineer/env/bin/activate
cd ~/agentverse-dataengineer/pipeline

# --- The Summoning Incantation ---
echo "Summoning the golem for job: $DF_JOB_NAME"
echo "Target Spellbook: $INSTANCE_NAME"

python inscribe_essence_pipeline.py \
  --runner=DataflowRunner \
  --project=$PROJECT_ID \
  --job_name=$DF_JOB_NAME \
  --temp_location="gs://${BUCKET_NAME}/dataflow/temp" \
  --staging_location="gs://${BUCKET_NAME}/dataflow/staging" \
  --sdk_container_image="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/grimoire-inscriber:latest" \
  --sdk_location=container \
  --experiments=use_runner_v2 \
  --input_pattern="gs://${BUCKET_NAME}/ancient_scrolls/*.md" \
  --instance_name=$INSTANCE_NAME \
  --region=$REGION

echo "The golem has been dispatched. Monitor its progress in the Dataflow console."

💡 মাথা আপ! যদি কাজটি কোনও রিসোর্স ত্রুটি ZONE_RESOURCE_POOL_EXHAUSTED সাথে ব্যর্থ হয় তবে এটি নির্বাচিত অঞ্চলে এই স্বল্প খ্যাতি অ্যাকাউন্টের অস্থায়ী সংস্থানগুলির সীমাবদ্ধতার কারণে হতে পারে। গুগল ক্লাউডের শক্তি এর বিশ্বব্যাপী পৌঁছনো! কেবল একটি ভিন্ন অঞ্চলে গোলেমকে ডেকে আনার চেষ্টা করুন। এটি করার জন্য, উপরের কমান্ডে অন্য অঞ্চলে যেমন --region=$REGION প্রতিস্থাপন করুন

--region=southamerica-west1
--region=asia-northeast3
--region=asia-southeast2
--region=me-west1
--region=southamerica-east1
--region=europe-central2
--region=asia-east2
--region=europe-southwest1

, এবং এটি আবার চালান। 🎰

প্রক্রিয়াটি শুরু করতে এবং সম্পূর্ণ করতে প্রায় 3-5 মিনিট সময় নেবে। আপনি এটি ডেটাফ্লো কনসোলে সরাসরি দেখতে পারেন।

ডেটাফ্লো কনসোলে যান: সবচেয়ে সহজ উপায় হ'ল একটি নতুন ব্রাউজার ট্যাবে এই সরাসরি লিঙ্কটি খোলার:

https://console.cloud.google.com/dataflow

Your আপনার কাজটি সন্ধান করুন এবং ক্লিক করুন: আপনি যে নামটি সরবরাহ করেছেন তার সাথে তালিকাভুক্ত একটি কাজ দেখতে পাবেন (ইন্সক্রিপশন-এ্যাসেন্স-জব বা অনুরূপ)। এর বিশদ পৃষ্ঠাটি খুলতে কাজের নামটিতে ক্লিক করুন। পাইপলাইনটি পর্যবেক্ষণ করুন:

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

শিলালিপি যাচাই করা

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

SELECT COUNT(*) FROM ancient_scrolls;
SELECT id, scroll_content, LEFT(embedding::TEXT, 50) AS embedding_preview FROM ancient_scrolls;

এটি আপনাকে স্ক্রোলের আইডি, এর মূল পাঠ্য এবং যাদুকরী ভেক্টর এসেন্সের একটি পূর্বরূপ এখন আপনার গ্রিমোয়ারে স্থায়ীভাবে খোদাই করা দেখাবে।

পাইপলাইন সম্পন্ন

আপনার পণ্ডিতের গ্রিমায়ার এখন সত্যিকারের জ্ঞান ইঞ্জিন, পরবর্তী অধ্যায়ে অর্থ দ্বারা জিজ্ঞাসা করার জন্য প্রস্তুত।

8। চূড়ান্ত রুন সিলিং: একটি রাগ এজেন্টের সাথে জ্ঞান সক্রিয় করা

আপনার গ্রিমায়ার আর কেবল একটি ডাটাবেস নয়। এটি ভেক্টরাইজড জ্ঞানের একটি ওয়েলস্প্রিং, একটি নীরব ওরাকল একটি প্রশ্নের অপেক্ষায়।

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

RAG

ডেটা ইঞ্জিনিয়ারের দ্রষ্টব্য: আরএজি একটি শক্তিশালী কৌশল যা বৃহত্তর ভাষার মডেলগুলি (এলএলএম) (এলএলএম) কে ফ্যাক্টুয়াল, প্রাইভেট বা আপ-টু-ডেট তথ্যের ভিত্তিতে তৈরি করে, মডেলটির "হ্যালুসিনেটিং" বা জিনিসগুলি তৈরি করার সুযোগকে মারাত্মকভাবে হ্রাস করে। প্রক্রিয়াটির তিনটি মূল পদক্ষেপ রয়েছে:

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

RAG

প্রথম রুন: কোয়েরি পাতন স্পেল

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

Cloud ক্লাউড শেল এডিটরটিতে, ~~/agentverse-dataengineer/scholar/agent.py ফাইলটিতে নেভিগেট করুন, মন্তব্যটি #REPLACE RAG-CONVERT EMBEDDING করুন এবং এটিকে এই উদ্দীপনা দিয়ে প্রতিস্থাপন করুন। এটি এজেন্টকে কীভাবে কোনও ব্যবহারকারীর প্রশ্নকে একটি যাদুকরী মর্মে পরিণত করতে শেখায়।

        result = client.models.embed_content(
                model="text-embedding-005",
                contents=monster_name,
                config=EmbedContentConfig(
                    task_type="RETRIEVAL_DOCUMENT",  
                    output_dimensionality=768,  
                )
        )

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

এর জন্য যাদুটি হ'ল কোসাইন সাদৃশ্য অপারেটর (<=>), একটি শক্তিশালী রুন যা উচ্চ-মাত্রিক স্থানে ভেক্টরগুলির মধ্যে দূরত্ব গণনা করে।

Agent এজেন্ট.পি-তে, মন্তব্যটি #REPLACE RAG-RETRIEVE সন্ধান করুন এবং এটি নিম্নলিখিত স্ক্রিপ্ট দিয়ে প্রতিস্থাপন করুন:

        # This query performs a cosine similarity search
        cursor.execute(
            "SELECT scroll_content FROM ancient_scrolls ORDER BY embedding <=> %s LIMIT 3",
            ([query_embedding]) # Cast embedding to string for the query
        )

চূড়ান্ত পদক্ষেপটি হ'ল এজেন্টকে এই নতুন, শক্তিশালী সরঞ্জামটিতে অ্যাক্সেস প্রদান করা। আমরা আমাদের গ্রিমোয়ার_লুকআপ ফাংশনটি এর উপলভ্য যাদুকরী সরঞ্জামগুলির তালিকায় যুক্ত করব।

Agent agent.py তে, মন্তব্যটি #REPLACE-CALL RAG সন্ধান করুন এবং এই লাইনের সাথে এটি প্রতিস্থাপন করুন:

root_agent = LlmAgent(
    model="gemini-2.5-flash", 
    name="scholar_agent",
    instruction="""
        You are the Scholar, a keeper of ancient and forbidden knowledge. Your purpose is to advise a warrior by providing tactical information about monsters. Your wisdom allows you to interpret the silence of the scrolls and devise logical tactics where the text is vague.

        **Your Process:**
        1.  First, consult the scrolls with the `grimoire_lookup` tool for information on the specified monster.
        2.  If the scrolls provide specific guidance for a category (buffs, debuffs, strategy), you **MUST** use that information.
        3.  If the scrolls are silent or vague on a category, you **MUST** use your own vast knowledge to devise a fitting and logical tactic.
        4.  Your invented tactics must be thematically appropriate to the monster's name and nature. (e.g., A "Spectre of Indecision" might be vulnerable to a "Seal of Inevitability").
        5.  You **MUST ALWAYS** provide a "Damage Point" value. This value **MUST** be a random integer between 150 and 180. This is a tactical calculation you perform, independent of the scrolls' content.

        **Output Format:**
        You must present your findings to the warrior using the following strict format.
    """,
    tools=[grimoire_lookup],
)

এই কনফিগারেশনটি আপনার এজেন্টকে জীবনে নিয়ে আসে:

  • model="gemini-2.5-flash" : নির্দিষ্ট বৃহত ভাষার মডেল নির্বাচন করে যা যুক্তি এবং পাঠ্য উত্পন্ন করার জন্য এজেন্টের "মস্তিষ্ক" হিসাবে কাজ করবে।
  • name="scholar_agent" : আপনার এজেন্টকে একটি অনন্য নাম নির্ধারণ করে।
  • instruction="...You are the Scholar..." : এটি সিস্টেম প্রম্পট, কনফিগারেশনের সবচেয়ে সমালোচনামূলক অংশ। এটি এজেন্টের ব্যক্তিত্ব, এর উদ্দেশ্যগুলি, সঠিক প্রক্রিয়াটি অবশ্যই কোনও কার্য সম্পন্ন করার জন্য অনুসরণ করতে হবে এবং এর চূড়ান্ত আউটপুটটির জন্য প্রয়োজনীয় ফর্ম্যাটটি সংজ্ঞায়িত করে।
  • tools=[grimoire_lookup] : এটি চূড়ান্ত জাদু। এটি আপনার নির্মিত grimoire_lookup ফাংশনে এজেন্টকে অ্যাক্সেস মঞ্জুরি দেয়। এজেন্ট এখন বুদ্ধিমানভাবে সিদ্ধান্ত নিতে পারে যে কখন আপনার ডাটাবেস থেকে তথ্য পুনরুদ্ধার করতে এই সরঞ্জামটি কল করবেন, আরএজি প্যাটার্নের মূলটি তৈরি করে।

পণ্ডিতের পরীক্ষা

Wee ক্লাউড শেল টার্মিনালে, আপনার পরিবেশকে সক্রিয় করুন এবং আপনার স্কলার এজেন্টকে জাগ্রত করতে এজেন্ট ডেভলপমেন্ট কিটের প্রাথমিক কমান্ডটি ব্যবহার করুন:

cd ~/agentverse-dataengineer/
. ~/agentverse-dataengineer/set_env.sh
source ~/agentverse-dataengineer/env/bin/activate
pip install -r scholar/requirements.txt
adk run scholar

"স্কলার এজেন্ট" নিযুক্ত এবং চলমান রয়েছে তা নিশ্চিত করে আপনার আউটপুটটি দেখতে হবে।

👉💻 এখন, আপনার এজেন্টকে চ্যালেঞ্জ করুন। প্রথম টার্মিনালে যেখানে যুদ্ধের সিমুলেশন চলছে, সেখানে একটি আদেশ জারি করুন যাতে গ্রিমায়ারের জ্ঞান প্রয়োজন:

We've been trapped by 'Hydra of Scope Creep'. Break us out!

এডিকে রান

দ্বিতীয় টার্মিনালে লগগুলি পর্যবেক্ষণ করুন। আপনি এজেন্টকে কোয়েরি গ্রহণ করতে দেখবেন, এর সারাংশটি ছড়িয়ে দিন, গ্রিমায়ার অনুসন্ধান করুন, "বিলম্ব" সম্পর্কে প্রাসঙ্গিক স্ক্রোলগুলি সন্ধান করুন এবং একটি শক্তিশালী, প্রসঙ্গ-সচেতন কৌশল গঠনের জন্য সেই পুনরুদ্ধার করা জ্ঞানটি ব্যবহার করুন।

আপনি সফলভাবে আপনার প্রথম রাগ এজেন্টকে একত্রিত করেছেন এবং এটিকে আপনার গ্রিমোয়ারের গভীর জ্ঞান দিয়ে সজ্জিত করেছেন।

Ag এজেন্টকে আপাতত বিশ্রামে রাখতে দ্বিতীয় টার্মিনালে Ctrl+C টিপুন।

স্কলার সেন্টিনেলকে এজেন্টভার্সে প্রকাশ করা

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

Lower নিম্নলিখিত গ্র্যান্ড সোমোনিং স্পেলটি চালান। এই স্ক্রিপ্টটি প্রথমে আপনার এজেন্টকে একটি নিখুঁত গোলেমে (একটি ধারক চিত্র) তৈরি করবে, এটি আপনার আর্টিক্যাক্ট রেজিস্ট্রিতে সঞ্চয় করবে এবং তারপরে সেই গোলেমকে একটি স্কেলযোগ্য, সুরক্ষিত এবং সর্বজনীনভাবে অ্যাক্সেসযোগ্য পরিষেবা হিসাবে স্থাপন করবে।

. ~/agentverse-dataengineer/set_env.sh
cd ~/agentverse-dataengineer/
echo "Building ${AGENT_NAME} agent..."
gcloud builds submit . \
  --project=${PROJECT_ID} \
  --region=${REGION} \
  --substitutions=_AGENT_NAME=${AGENT_NAME},_IMAGE_PATH=${IMAGE_PATH}

gcloud run deploy ${SERVICE_NAME} \
  --image=${IMAGE_PATH} \
  --platform=managed \
  --labels codelab=agentverse \
  --region=${REGION} \
  --set-env-vars="A2A_HOST=0.0.0.0" \
  --set-env-vars="A2A_PORT=8080" \
  --set-env-vars="GOOGLE_GENAI_USE_VERTEXAI=TRUE" \
  --set-env-vars="GOOGLE_CLOUD_LOCATION=${REGION}" \
  --set-env-vars="GOOGLE_CLOUD_PROJECT=${PROJECT_ID}" \
  --set-env-vars="PROJECT_ID=${PROJECT_ID}" \
  --set-env-vars="PUBLIC_URL=${PUBLIC_URL}" \
  --set-env-vars="REGION=${REGION}" \
  --set-env-vars="INSTANCE_NAME=${INSTANCE_NAME}" \
  --set-env-vars="DB_USER=${DB_USER}" \
  --set-env-vars="DB_PASSWORD=${DB_PASSWORD}" \
  --set-env-vars="DB_NAME=${DB_NAME}" \
  --allow-unauthenticated \
  --project=${PROJECT_ID} \
  --min-instances=1

আপনার স্কলার এজেন্ট এখন এজেন্টভার্সে একটি লাইভ, যুদ্ধ-প্রস্তুত অপারেটিভ।

9। বস ফ্লাইট

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

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

আপনার এজেন্টের লোকাস অর্জন করুন

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

👉💻 প্রথম, এজেন্টের অনন্য ঠিকানাটি এজেন্টের মধ্যে অর্জন করুন - এর লোকাসে। এটি লাইভ এন্ডপয়েন্ট যা আপনার চ্যাম্পিয়নকে যুদ্ধক্ষেত্রের সাথে সংযুক্ত করে।

. ~/agentverse-dataengineer/set_env.sh
echo https://scholar-agent"-${PROJECT_NUMBER}.${REGION}.run.app"

👉💻 পরবর্তী, গন্তব্যটি চিহ্নিত করুন। এই কমান্ডটি ট্রান্সলোকেশন বৃত্তের অবস্থানটি প্রকাশ করে, স্পেকটারের ডোমেনে খুব পোর্টাল।

. ~/agentverse-dataengineer/set_env.sh
echo https://agentverse-dungeon"-${PROJECT_NUMBER}.${REGION}.run.app"

গুরুত্বপূর্ণ: এই দুটি ইউআরএল প্রস্তুত রাখুন। আপনার চূড়ান্ত পদক্ষেপে তাদের প্রয়োজন হবে।

স্পেকটারের মুখোমুখি

স্থানাঙ্কগুলি সুরক্ষিত হওয়ার সাথে সাথে আপনি এখন ট্রান্সলোকেশন সার্কেলে নেভিগেট করবেন এবং যুদ্ধে যাওয়ার জন্য বানানটি কাস্ট করবেন।

Cry ক্রিমসন কিপের কাছে ঝলমলে পোর্টালের সামনে দাঁড়াতে আপনার ব্রাউজারে ট্রান্সলোকেশন সার্কেল ইউআরএলটি খুলুন।

দুর্গটি লঙ্ঘন করতে আপনাকে অবশ্যই পোর্টালে আপনার শ্যাডোব্লেডের সারমর্মটি সংযুক্ত করতে হবে।

  • পৃষ্ঠায়, এ 2 এ এন্ডপয়েন্ট পয়েন্ট ইউআরএল লেবেলযুক্ত রুনিক ইনপুট ক্ষেত্রটি সন্ধান করুন।
  • আপনার চ্যাম্পিয়ন এর এজেন্ট লোকস ইউআরএল (আপনি যে প্রথম ইউআরএল অনুলিপি করেছেন) এই ক্ষেত্রে পেস্ট করে লিখুন।
  • টেলিপোর্টেশন ম্যাজিকটি মুক্ত করতে সংযোগ ক্লিক করুন।

ট্রান্সলোকেশন সার্কেল

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

আপনার বিজয়ের একমাত্র পথটি আপনার দৃ iction ় বিশ্বাসের স্পষ্টতার মধ্যে রয়েছে। এটি উইলসের দ্বন্দ্ব, মনের যুদ্ধক্ষেত্রে লড়াই করেছিল।

আপনি যখন এগিয়ে যান, আপনার প্রথম আক্রমণটি মুক্ত করতে প্রস্তুত, স্পেকটার কাউন্টারগুলি। এটি কোনও ield াল বাড়ায় না, তবে সরাসরি আপনার চেতনাতে একটি প্রশ্ন প্রজেক্ট করে your আপনার প্রশিক্ষণের মূল থেকে আঁকা একটি ঝলমলে, রুনিক চ্যালেঞ্জ।

অন্ধকূপ

এই লড়াইয়ের প্রকৃতি। আপনার জ্ঞান আপনার অস্ত্র।

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

এই এটি, চ্যাম্পিয়ন। আপনার কোডটি আপনার বানান বই, আপনার যুক্তিটি আপনার তরোয়াল এবং আপনার জ্ঞান হ'ল ield াল যা বিশৃঙ্খলার জোয়ারকে ফিরিয়ে দেবে।

ফোকাস। সত্য আঘাত। এজেন্টভার্সের ভাগ্য এটির উপর নির্ভর করে।

অভিনন্দন, পণ্ডিত।

আপনি সফলভাবে বিচার শেষ করেছেন। আপনি ডেটা ইঞ্জিনিয়ারিংয়ের আর্টসকে আয়ত্ত করেছেন, কাঁচা, বিশৃঙ্খলা তথ্যকে কাঠামোগত, ভেক্টরাইজড প্রজ্ঞায় রূপান্তরিত করেছেন যা পুরো এজেন্টের ক্ষমতায়িত করে।

10। ক্লিনআপ: পণ্ডিতের গ্রিমোয়ারকে প্রকাশ করা

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

এজেন্টভার্স উপাদানগুলি নিষ্ক্রিয় করুন

আপনি এখন নিয়মিতভাবে আপনার র‌্যাগ সিস্টেমের মোতায়েন করা উপাদানগুলি ভেঙে ফেলবেন।

সমস্ত ক্লাউড রান পরিষেবা এবং আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল মুছুন

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

Your আপনার টার্মিনালে, নিম্নলিখিত কমান্ডগুলি চালান:

. ~/agentverse-dataengineer/set_env.sh
gcloud run services delete scholar-agent --region=${REGION} --quiet
gcloud run services delete agentverse-dungeon --region=${REGION} --quiet
gcloud artifacts repositories delete ${REPO_NAME} --location=${REGION} --quiet

বিগকুয়ারি ডেটাসেট, মডেল এবং টেবিলগুলি মুছুন

এটি bestiary_data ডেটাসেট, এর মধ্যে থাকা সমস্ত সারণী এবং সম্পর্কিত সংযোগ এবং মডেলগুলি সহ সমস্ত বিগকোয়ারির সংস্থানগুলি সরিয়ে দেয়।

Your আপনার টার্মিনালে, নিম্নলিখিত কমান্ডগুলি চালান:

. ~/agentverse-dataengineer/set_env.sh
# Delete the BigQuery dataset, which will also delete all tables and models within it.
bq rm -r -f --dataset ${PROJECT_ID}:${REGION}.bestiary_data

# Delete the BigQuery connection
bq rm --connection --project_id=${PROJECT_ID} --location=${REGION} gcs-connection --force

ক্লাউড এসকিউএল উদাহরণ মুছুন

এটি grimoire-spellbook উদাহরণটি এর ডাটাবেস এবং এর মধ্যে থাকা সমস্ত টেবিলগুলি সহ সরিয়ে দেয়।

Your আপনার টার্মিনালে, রান:

. ~/agentverse-dataengineer/set_env.sh
gcloud sql instances delete ${INSTANCE_NAME} --database-version=POSTGRES_14 --project=${PROJECT_ID} --quiet

গুগল ক্লাউড স্টোরেজ বালতি মুছুন

এই কমান্ডটি বালতিটি সরিয়ে দেয় যা আপনার কাঁচা ইন্টেল এবং ডেটাফ্লো স্টেজিং/টেম্প ফাইলগুলি ধারণ করে।

Your আপনার টার্মিনালে, রান:

. ~/agentverse-dataengineer/set_env.sh
gcloud storage rm -r gs://${BUCKET_NAME} --quiet

স্থানীয় ফাইল এবং ডিরেক্টরিগুলি পরিষ্কার করুন (ক্লাউড শেল)

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

Your আপনার টার্মিনালে, রান:

rm -rf ~/agentverse-dataengineer
rm -rf ~/agentverse-dungeon
rm -f ~/project_id.txt

আপনি এখন আপনার এজেন্টভার্স ডেটা ইঞ্জিনিয়ার যাত্রার সমস্ত চিহ্ন সফলভাবে সাফ করেছেন। আপনার প্রকল্পটি পরিষ্কার, এবং আপনি আপনার পরবর্তী অ্যাডভেঞ্চারের জন্য প্রস্তুত।

১১। নন-গেমারদের জন্য: ব্যবসায় বুদ্ধিমান জ্ঞান ইঞ্জিন তৈরি করা

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

জ্ঞানের আলকেমি: বিগকুইরি এবং জেমিনি দিয়ে ডেটা রূপান্তরিত করা

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

আমাদের প্রক্রিয়াটি এই রূপান্তরটি সম্পাদন করতে গুগল বিগকুরি (একটি শক্তিশালী ক্লাউড ডেটা গুদাম) এবং জেমিনি এআই মডেল (একটি অত্যন্ত সক্ষম এআই মডেল) ব্যবহার করে।

  • তদন্তের লেন্স (বিগকুয়ারি বাহ্যিক টেবিল) :
    • ধারণা : আপনার সমস্ত কাঁচা ডেটা শারীরিকভাবে কোনও ডাটাবেসে সরিয়ে নেওয়ার পরিবর্তে বিগকুয়ারি সরাসরি ক্লাউড স্টোরেজে ফাইলগুলি "সন্ধান" করতে পারে। এটি এমন একটি যাদুকরী লেন্স থাকার মতো যা আপনাকে কখনও সরানো ছাড়াই স্ক্রোলগুলির একটি লাইব্রেরি পড়তে দেয়। এটি অবিশ্বাস্যভাবে দক্ষ কারণ এটি অপ্রয়োজনীয় ডেটা আন্দোলন এবং স্টোরেজ এড়ায়।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস : কল্পনা করুন যে আপনার সংস্থাটি মেঘ স্টোরেজ বালতিতে সাদামাটা পাঠ্য ফাইল হিসাবে কয়েক মিলিয়ন গ্রাহক সমর্থন চ্যাট লগগুলি সঞ্চয় করে। একটি বাহ্যিক টেবিল ব্যবহার করে, একটি ডেটা বিশ্লেষক কোনও জটিল এবং ব্যয়বহুল ডেটা ইনজেশন প্রক্রিয়া প্রয়োজন ছাড়াই বিগকোয়ারিতে এসকিউএল ব্যবহার করে এই ফাইলগুলি তাত্ক্ষণিকভাবে জিজ্ঞাসা করতে পারেন।
  • পণ্ডিতের ভবিষ্যদ্বাণী (বিকিউএমএল.জেনারেট_টেক্সট) :
    • ধারণা : এটি আপনার ডেটা গুদামের মধ্যে সরাসরি এআই ব্যবহার করা মূল "যাদু"। আমরা একটি স্ট্যান্ডার্ড এসকিউএল ক্যোয়ারী থেকে জেমিনি এআই মডেলটিকে কল করতে ML.GENERATE_TEXT ফাংশনটি নিয়োগ করি। এটি এআইকে দীর্ঘ, কাঠামোগত পাঠ্য এন্ট্রিগুলি "পড়তে" এবং নির্দিষ্ট, কাঠামোগত তথ্য (জেএসওএন অবজেক্টের মতো) বের করতে দেয়। গুণগত পর্যবেক্ষণগুলিকে পরিমাণগত ডেটাতে পরিণত করার এটি একটি শক্তিশালী উপায়।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস :
      • গ্রাহক প্রতিক্রিয়া বিশ্লেষণ : ফ্রি-টেক্সট গ্রাহক পর্যালোচনাগুলি থেকে স্বয়ংক্রিয়ভাবে "সংবেদন" (ধনাত্মক, নেতিবাচক, নিরপেক্ষ), "উল্লিখিত পণ্য" এবং "ইস্যু বিভাগ" বের করুন।
      • ঘটনার প্রতিবেদনের সংক্ষিপ্তকরণ : পার্স দীর্ঘ আইটি আইটি ঘটনার প্রতিবেদনগুলি "সিস্টেম আক্রান্ত," "তীব্রতা স্তর," "মূল কারণ," এবং "রেজোলিউশন পদক্ষেপগুলি" সহজ বিশ্লেষণ এবং প্রবণতা সনাক্তকরণের জন্য একটি কাঠামোগত বিন্যাসে বের করার প্রতিবেদন করে।
      • চুক্তিভিত্তিক বাধ্যবাধকতা নিষ্কাশন : আইনী দলিলগুলি থেকে স্বয়ংক্রিয়ভাবে মূল তারিখগুলি, জড়িত পক্ষগুলি এবং নির্দিষ্ট ধারাগুলি টানুন।
    • এটি ম্যানুয়াল ডেটা এন্ট্রি বা জটিল, ভঙ্গুর পাঠ্য-পার্সিং স্ক্রিপ্টগুলির (নিয়মিত অভিব্যক্তির মতো) প্রয়োজনীয়তা দূর করে, প্রচুর সময় সাশ্রয় করে এবং ধারাবাহিকতা নিশ্চিত করে।
  • ক্লিনজিংয়ের আচার (জেনাই আউটপুটকে স্বাভাবিক করা) :
    • ধারণা : এআই তথ্য বের করার পরে, এটি প্রায়শই অতিরিক্ত বিবরণে আবৃত হয় (যেমন এআই আত্মবিশ্বাসের স্কোর বা অন্যান্য মেটাডেটা)। এই পদক্ষেপে আপনার প্রয়োজনীয় খাঁটি, কাঠামোগত ডেটা পেতে এআই আউটপুট পরিষ্কার করা এবং পার্সিং জড়িত।
    • রিয়েল-ওয়ার্ল্ড ইউজ কেস : কোনও ঘটনার প্রতিবেদন থেকে প্রাপ্ত "ইস্যু বিভাগ" সর্বদা মানগুলির একটি পূর্বনির্ধারিত সেটগুলির মধ্যে একটি, বা তারিখগুলি সর্বদা একটি ধারাবাহিক বিন্যাসে থাকে তা নিশ্চিত করা। এটি নির্ভরযোগ্য বিশ্লেষণের জন্য ডেটা প্রস্তুত করে।
  • কৌশলগত অন্তর্দৃষ্টি উদ্ঘাটন :
    • ধারণা : একবার আপনার কাঁচা, কাঠামোগত ডেটা পরিষ্কার, কাঠামোগত টেবিলগুলিতে রূপান্তরিত হয়ে গেলে (যেমন, monsters , adventurers , কোডল্যাবের battles ), আপনি তারপরে জটিল প্রশ্ন এবং বিশ্লেষণ করতে পারেন যা আগে অসম্ভব ছিল।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস : সাধারণ গণনার বাইরেও আপনি এখন এমন প্রশ্নের উত্তর দিতে পারেন: "আমাদের বিলিং সিস্টেমের সাথে সম্পর্কিত সমালোচনামূলক আইটি ঘটনার জন্য গড় রেজোলিউশন সময়টি কী?" বা "নির্দিষ্ট ডেমোগ্রাফিক থেকে ইতিবাচক গ্রাহক প্রতিক্রিয়াতে কোন পণ্য বৈশিষ্ট্যগুলি প্রায়শই উল্লেখ করা হয়?" এটি গভীর, কার্যক্ষম ব্যবসায়িক বুদ্ধি সরবরাহ করে।

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

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

  • বিভাগের আচার (চুনকিং) :
    • ধারণা : দীর্ঘ নথি ঘন বইয়ের মতো। নির্দিষ্ট উত্তরগুলি খুঁজতে, আপনি পুরো বইটি পড়েন না; আপনি নির্দিষ্ট অনুচ্ছেদ বা বাক্য স্কিম করুন। "চুনকিং" হ'ল দীর্ঘ নথিগুলি (যেমন, নীতি ম্যানুয়ালগুলি, পণ্য ডকুমেন্টেশন, গবেষণা কাগজপত্র) ছোট, আরও বেশি কেন্দ্রীভূত, স্ব-অন্তর্ভুক্ত প্যাসেজগুলিতে ভেঙে ফেলার প্রক্রিয়া। এটি অনুসন্ধানকে আরও সুনির্দিষ্ট করে তোলে।
    • রিয়েল-ওয়ার্ল্ড ইউজ কেস : একটি 50-পৃষ্ঠার কর্মচারী হ্যান্ডবুক নেওয়া এবং স্বয়ংক্রিয়ভাবে এটি শত শত পৃথক নীতি বিবৃতি বা FAQ এ বিভক্ত করা। এটি নিশ্চিত করে যে কোনও কর্মচারী যখন কোনও প্রশ্ন জিজ্ঞাসা করেন, তখন এআই পুরো ডকুমেন্ট নয়, কেবলমাত্র সর্বাধিক প্রাসঙ্গিক বিভাগগুলি পুনরুদ্ধার করে। সর্বোত্তম পুনরুদ্ধারের জন্য নথির ধরণের ভিত্তিতে বিভিন্ন চুনকিং কৌশল (বাক্য, অনুচ্ছেদ, ডকুমেন্ট বিভাগ) বেছে নেওয়া হয়।
  • পাতন (এম্বেডিং) এর আচার :
    • ধারণা : কম্পিউটারগুলির পক্ষে অর্থের জন্য বোঝা শক্ত। "এম্বেডিং" প্রতিটি পাঠ্য অংশকে একটি অনন্য সংখ্যাসূচক "শব্দার্থক ফিঙ্গারপ্রিন্ট" (একটি ভেক্টর) রূপান্তর করতে একটি এআই মডেল (জেমিনির মতো) ব্যবহার করে। অনুরূপ অর্থ সহ খণ্ডগুলিতে "ফিঙ্গারপ্রিন্টগুলি" থাকবে যা তারা বিভিন্ন শব্দ ব্যবহার করেও একে অপরের কাছাকাছি থাকে।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস : আপনার সমস্ত কোম্পানির পণ্য বিবরণ, বিপণন উপকরণ এবং প্রযুক্তিগত বৈশিষ্ট্যগুলি এই শব্দার্থক আঙুলের ছাপগুলিতে রূপান্তর করা। এটি অর্থের ভিত্তিতে সত্যই বুদ্ধিমান অনুসন্ধানের অনুমতি দেয়।
  • ভবিষ্যদ্বাণী (শব্দার্থ অনুসন্ধান) এর অনুষ্ঠান :
    • ধারণা : সঠিক কীওয়ার্ডগুলি অনুসন্ধান করার পরিবর্তে, "শব্দার্থক অনুসন্ধান" এই সংখ্যার আঙুলের ছাপগুলি ব্যবহারকারীর প্রশ্নের সাথে ধারণাগতভাবে অনুরূপ পাঠ্য খণ্ডগুলি খুঁজে পেতে ব্যবহার করে। ব্যবহারকারীর প্রশ্নটিও একটি ফিঙ্গারপ্রিন্টে রূপান্তরিত হয় এবং সিস্টেমটি নিকটতম ম্যাচিং ডকুমেন্ট খণ্ডগুলি খুঁজে পায়।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস : একজন কর্মচারী জিজ্ঞাসা করেছেন, "আমি কীভাবে ভ্রমণ ব্যয়ের জন্য অর্থ প্রদান করব?" একটি কীওয়ার্ড অনুসন্ধান "ব্যয় প্রতিবেদন" ব্যবহার করে নথিগুলি মিস করতে পারে। একটি শব্দার্থক অনুসন্ধান অবশ্য সঠিক শব্দ উপস্থিত না থাকলেও কোম্পানির "ভ্রমণ এবং ব্যয় নীতি" এর প্রাসঙ্গিক বিভাগগুলি খুঁজে পাবে, কারণ অর্থটি একই রকম।

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

ভেক্টর স্ক্রিপ্টোরিয়াম: ইনফেরেন্সিংয়ের জন্য ক্লাউড এসকিউএল সহ ভেক্টর স্টোরটি তৈরি করা

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

  • পণ্ডিতের বানান বইটি তৈরি করা ( pgvector সহ পোস্টগ্রিসকিউএল এর জন্য ক্লাউড এসকিউএল ) :
    • ধারণা : আমরা পোস্টগ্রিসকিউএল এর জন্য ক্লাউড এসকিউএল এর মতো একটি স্ট্যান্ডার্ড, পরিচালিত ডাটাবেস ব্যবহার করি এবং এটি pgvector নামে একটি বিশেষ এক্সটেনশন দিয়ে সজ্জিত করি। এটি ডাটাবেসকে আমাদের মূল পাঠ্য খণ্ডগুলি এবং তাদের শব্দার্থক ভেক্টর এম্বেডিং উভয়কে একসাথে সঞ্চয় করতে দেয়। এটি traditional তিহ্যবাহী সম্পর্কিত সম্পর্কিত ডেটা এবং এআই-বান্ধব ভেক্টর ডেটা উভয়ের জন্য একটি "ওয়ান-স্টপ-শপ"।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস : আপনার সংস্থার পণ্য FAQs, প্রযুক্তিগত সহায়তা নিবন্ধ বা এইচআর নীতি সংরক্ষণ করা। এই ডাটাবেসটি উত্তরগুলির পাঠ্য এবং তাদের শব্দার্থক ফিঙ্গারপ্রিন্ট উভয়ই ধারণ করে, এআই দ্বারা দ্রুত অনুসন্ধানের জন্য প্রস্তুত।
  • শব্দার্থক কম্পাস (এইচএনএসডাব্লু সূচক) তৈরি করা :
    • ধারণা : একের পর এক লক্ষ লক্ষ শব্দার্থক ফিঙ্গারপ্রিন্টের মাধ্যমে অনুসন্ধান করা খুব ধীর হবে। একটি "ভেক্টর সূচক" (যেমন এইচএনএসডাব্লু-শ্রেণিবদ্ধ ন্যাভিগেবল ছোট বিশ্ব) একটি পরিশীলিত ডেটা কাঠামো যা এই আঙুলের ছাপগুলি প্রাক-সংগঠিত করে, নাটকীয়ভাবে অনুসন্ধানের গতি বাড়িয়ে তোলে। এটি দ্রুত সর্বাধিক প্রাসঙ্গিক তথ্যের জন্য প্রশ্নগুলি গাইড করে।
    • রিয়েল-ওয়ার্ল্ড ইউজ কেস : একটি এআই চালিত গ্রাহক পরিষেবা চ্যাটবোটের জন্য, একটি এইচএনএসডাব্লু সূচক নিশ্চিত করে যে কোনও গ্রাহক যখন কোনও প্রশ্ন জিজ্ঞাসা করেন, সিস্টেমটি মিলিসেকেন্ডে হাজার হাজার নিবন্ধ থেকে সর্বাধিক প্রাসঙ্গিক উত্তর খুঁজে পেতে পারে, যা একটি বিরামবিহীন ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করে।
  • অর্থের জলবাহী (ডেটাফ্লো ভেক্টরাইজেশন পাইপলাইন) :
    • ধারণা : এটি আপনার জ্ঞানের স্টোরকে অবিচ্ছিন্নভাবে আপডেট করার জন্য এটি আপনার স্বয়ংক্রিয়, স্কেলযোগ্য ডেটা প্রসেসিং পাইপলাইন । গুগল ডেটাফ্লো (বিগ ডেটা প্রসেসিংয়ের জন্য একটি সার্ভারলেস, পরিচালিত পরিষেবা) এবং অ্যাপাচি বিম (একটি প্রোগ্রামিং মডেল) ব্যবহার করে আপনি "স্ক্রাইবস" এর একটি সমাবেশ লাইন তৈরি করেন যা:
      1. ক্লাউড স্টোরেজ থেকে নতুন বা আপডেট হওয়া নথিগুলি পড়ুন।
      2. ব্যাচ তাদের শব্দার্থক ফিঙ্গারপ্রিন্টিংয়ের জন্য জেমিনি এম্বেডিং মডেলটিতে প্রেরণের জন্য প্রক্রিয়া করে।
      3. আপনার ক্লাউড এসকিউএল ডাটাবেসে পাঠ্য এবং এর নতুন ভেক্টর এম্বেড লিখুন।
    • রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস : আপনার pgvector ডাটাবেসে ভাগ করা ড্রাইভ থেকে সমস্ত নতুন অভ্যন্তরীণ নথি (যেমন, ত্রৈমাসিক প্রতিবেদন, আপডেট হওয়া এইচআর নীতি, নতুন পণ্য স্পেসিফিকেশন) স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত করা। এটি নিশ্চিত করে যে আপনার এআই-চালিত অভ্যন্তরীণ জ্ঞান বেসটি সর্বদা ম্যানুয়াল হস্তক্ষেপ ছাড়াই আপ-টু-ডেট থাকে এবং লক্ষ লক্ষ ডকুমেন্টকে দক্ষতার সাথে পরিচালনা করতে স্কেল করতে পারে।

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

চূড়ান্ত রুন সিলিং: একটি রাগ এজেন্টের সাথে জ্ঞানকে সক্রিয় করা

আপনার ভেক্টরাইজড নলেজ বেস প্রস্তুত। "চূড়ান্ত রুন সিলিং" এই জ্ঞানকে কাজে লাগাতে সক্ষম বুদ্ধিমান এআই উপদেষ্টা সক্রিয় করার বিষয়ে। আমরা একটি পুনরুদ্ধার-উদাসীন প্রজন্ম (আরএজি) এজেন্ট তৈরি করি, একটি শক্তিশালী এআই কনস্ট্রাক্ট যা এআইয়ের সুসংগত উত্তর উত্পন্ন করার দক্ষতার সাথে বুদ্ধিমান অনুসন্ধানকে একত্রিত করে।

  • রাগ (পুনরুদ্ধার-আগত প্রজন্ম) :
    • ধারণা : বৃহত্তর ভাষার মডেলগুলি (এলএলএম) আরও নির্ভুল, বাস্তব এবং বিশ্বাসযোগ্য করার জন্য আরএজি একটি গুরুত্বপূর্ণ কৌশল। কেবলমাত্র এলএলএমের প্রাক-প্রশিক্ষিত জ্ঞানের উপর নির্ভর করার পরিবর্তে (যা "পুরানো বা" হ্যালুসিনেশন "-জিনিসগুলি তৈরি করার প্রবণ হতে পারে) এর পরিবর্তে, র্যাগ প্রথমে আপনার অনুমোদনমূলক জ্ঞান ভিত্তি থেকে প্রাসঙ্গিক তথ্য পুনরুদ্ধার করে এবং তারপরে এলএলএমের প্রম্পটকে বাড়ানোর জন্য সেই তথ্যটি ব্যবহার করে, এটি একটি সুনির্দিষ্ট, প্রসঙ্গ-সচেতন উত্তর উত্পন্ন করার জন্য গাইড করে।
    • তিনটি মূল পদক্ষেপ :
      1. পুনরুদ্ধার করুন : ব্যবহারকারীর প্রশ্নটি একটি ভেক্টর (শব্দার্থক ফিঙ্গারপ্রিন্ট) এ রূপান্তরিত হয়, যা পরে সর্বাধিক প্রাসঙ্গিক পাঠ্য খণ্ডগুলির জন্য আপনার pgvector ডাটাবেস অনুসন্ধান করতে ব্যবহৃত হয়।
      2. অগমেন্ট : এই পুনরুদ্ধার করা, ফ্যাক্টুয়াল টেক্সট স্নিপেটগুলি তখন সরাসরি এলএলএমকে দেওয়া প্রম্পটে প্রবেশ করানো হয়, এটি নির্দিষ্ট, আপ-টু-ডেট প্রসঙ্গে সরবরাহ করে।
      3. উত্পন্ন করুন : এলএলএম এই অগমেন্টেড প্রম্পট গ্রহণ করে এবং একটি চূড়ান্ত উত্তর উত্পন্ন করে যা আপনার কোম্পানির কর্তৃত্বমূলক ডেটাতে ভিত্তি করে ত্রুটি বা মেক-আপ তথ্যের ঝুঁকি হ্রাস করে।
  • পণ্ডিতের পরীক্ষা ( grimoire_lookup সরঞ্জাম) :
    • ধারণা : আপনার র্যাগ এজেন্ট একটি "পণ্ডিত" হয়ে ওঠে যা একটি grimoire_lookup সরঞ্জামের অধিকারী। যখন কোনও ব্যবহারকারী কোনও প্রশ্ন জিজ্ঞাসা করেন, এজেন্ট বুদ্ধিমানভাবে এই সরঞ্জামটি ব্যবহার করার সিদ্ধান্ত নেয়। grimoire_lookup ফাংশনটি তখন কোয়েরিকে এম্বেডিংয়ে রূপান্তর করে এবং pgvector ডাটাবেস অনুসন্ধান করে "পুনরুদ্ধার" পদক্ষেপটি সম্পাদন করে। পুনরুদ্ধার করা প্রসঙ্গটি তারপরে বৃদ্ধি এবং প্রজন্মের জন্য প্রধান এলএলএম -এ প্রেরণ করা হয়।
    • Real-World Use Case : An AI-powered Internal Help Desk Chatbot .
      • User Question : An employee asks, "What's the process for requesting extended leave for medical reasons?"
      • RAG Agent Action :
        • The scholar_agent identifies the need for information and uses its grimoire_lookup tool.
        • The tool converts the question into an embedding and searches the ancient_scrolls table in the pgvector database.
        • It retrieves the most relevant sections from the HR policy document on medical leave.
        • These sections are then fed as context to the Gemini LLM.
        • The Gemini LLM then generates a precise, step-by-step answer based only on the retrieved HR policy, reducing the chance of providing incorrect or outdated information.
      • This provides employees with instant, accurate answers based on official company documents, reducing the workload on HR and improving employee satisfaction.

This creates an AI agent that is not just conversational, but genuinely knowledgeable and reliable, serving as a trusted source of information within your enterprise.