Spanner এবং Vertex AI এর সাথে মিল অনুসন্ধান

1. ভূমিকা

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

কেস ব্যবহার করুন

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

  1. স্প্যানার থেকে প্রাপ্ত ডেটা
  2. ML.PREDICT ব্যবহার করে পোশাকের ডেটার জন্য তৈরি করা ভেক্টর এবং স্প্যানারে সংরক্ষিত
  3. স্প্যানার ভেক্টর ডেটা ডেটাফ্লো এবং ওয়ার্কফ্লো কাজগুলি ব্যবহার করে ভেক্টর অনুসন্ধানের সাথে একীভূত
  4. ব্যবহারকারীর প্রবেশ করা ইনপুটের জন্য মিল খুঁজে পেতে ভেক্টর অনুসন্ধান করা হয়েছে

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

স্প্যানার থেকে ভেক্টর অনুসন্ধান সূচক:

পোশাক অনুসন্ধানের ডেটা স্প্যানারে সংরক্ষণ করা হয়। আমরা সরাসরি স্প্যানার ডেটা থেকে ML.PREDICT কনস্ট্রাকটে Vertex AI এম্বেডিং এপিআই চালু করব। তারপরে আমরা ডেটাফ্লো এবং ওয়ার্কফ্লো কাজের সুবিধা দেব যেগুলি এই ডেটা (ইনভেন্টরি এবং এম্বেডিংগুলি) ভার্টেক্স এআই-এর ভেক্টর অনুসন্ধানে আপলোড করে এবং সূচকটিকে রিফ্রেশ করে।

সূচীতে ব্যবহারকারীর প্রশ্নগুলি চলমান:

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

আর্কিটেকচার ওভারভিউ

স্প্যানার-ভেক্টর অনুসন্ধান অ্যাপ্লিকেশনটির আর্কিটেকচার নিম্নলিখিত 2-অংশের চিত্রে দেখানো হয়েছে:

স্প্যানার থেকে ভেক্টর অনুসন্ধান সূচক: a79932a25bee23a4.png

সূচীতে ব্যবহারকারীর প্রশ্নগুলি চালানোর জন্য ক্লায়েন্ট অ্যাপ:

b2b4d5a5715bd4c4.png আপনি কি নির্মাণ করবেন

স্প্যানার থেকে ভেক্টর সূচক:

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

সূচীতে ব্যবহারকারীর প্রশ্নগুলি চলমান:

  • একটি ওয়েব অ্যাপ্লিকেশন যা ব্যবহারকারীদের পোশাকের পাঠ্য বিবরণ প্রবেশ করতে দেয়, নিয়োজিত সূচকের শেষ পয়েন্ট ব্যবহার করে সাদৃশ্য অনুসন্ধান করে এবং ইনপুটে নিকটতম পোশাক ফেরত দেয়।

কিভাবে এটা কাজ করে

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

  1. স্প্যানারে সংরক্ষিত ডেটার জন্য এম্বেডিং তৈরি করুন
  2. একটি ভেক্টর অনুসন্ধান সূচকে এম্বেডিং রপ্তানি এবং আপলোড করুন।
  3. একটি নিকটতম-প্রতিবেশী অনুসন্ধান সম্পাদন করে অনুরূপ আইটেমগুলির জন্য ভেক্টর অনুসন্ধান সূচকটি জিজ্ঞাসা করুন৷

2. প্রয়োজনীয়তা

আপনি শুরু করার আগে

  1. Google ক্লাউড কনসোলে , প্রকল্প নির্বাচক পৃষ্ঠায়, একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন৷
  2. নিশ্চিত করুন যে আপনার ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে৷ একটি প্রকল্পে বিলিং সক্ষম কিনা তা পরীক্ষা করতে শিখুন
  3. নিশ্চিত করুন যে সমস্ত প্রয়োজনীয় API (ক্লাউড স্প্যানার, ভার্টেক্স এআই, গুগল ক্লাউড স্টোরেজ) সক্ষম আছে
  4. আপনি Cloud Shell ব্যবহার করবেন, Google ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ যা gcloud-এর সাথে প্রি-লোড করা হয়। জিক্লাউড কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন পড়ুন। যদি আপনার প্রজেক্ট সেট করা না থাকে, তাহলে এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
  1. শুরু করতে আপনার সক্রিয় Google ক্লাউড প্রকল্পের সাথে ক্লাউড স্প্যানার পৃষ্ঠাতে নেভিগেট করুন৷

3. ব্যাকএন্ড: আপনার স্প্যানার ডেটা উৎস এবং এম্বেডিং তৈরি করুন

এই ব্যবহারের ক্ষেত্রে, স্প্যানার ডাটাবেসে সংশ্লিষ্ট ছবি এবং বিবরণ সহ পোশাকের ইনভেন্টরি রয়েছে। নিশ্চিত করুন যে আপনি পাঠ্য বিবরণের জন্য এমবেডিং তৈরি করেছেন এবং সেগুলিকে আপনার স্প্যানার ডাটাবেসে ARRAY<float64> হিসাবে সংরক্ষণ করুন৷

  1. স্প্যানার ডেটা তৈরি করুন

"স্প্যানার-ভার্টেক্স" নামে একটি উদাহরণ এবং "স্প্যানার-ভার্টেক্স-এম্বেডিংস" নামে একটি ডাটাবেস তৈরি করুন। DDL ব্যবহার করে একটি টেবিল তৈরি করুন:

CREATE TABLE
  apparels ( id NUMERIC,
    category STRING(100),
    sub_category STRING(50),
    uri STRING(200),
    content STRING(2000),
    embedding ARRAY<FLOAT64>
    )
PRIMARY KEY
  (id);
  1. INSERT SQL ব্যবহার করে টেবিলে ডেটা সন্নিবেশ করুন

নমুনা ডেটার জন্য স্ক্রিপ্ট সন্নিবেশ করান এখানে উপলব্ধ।

  1. টেক্সট এমবেডিং মডেল তৈরি করুন

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

CREATE MODEL text_embeddings INPUT(content STRING(MAX))
OUTPUT(
  embeddings
    STRUCT<
      statistics STRUCT<truncated BOOL, token_count FLOAT64>,
      values ARRAY<FLOAT64>>
)
REMOTE OPTIONS (
  endpoint = '//aiplatform.googleapis.com/projects/abis-345004/locations/us-central1/publishers/google/models/textembedding-gecko');
  1. উৎস ডেটার জন্য টেক্সট এম্বেডিং তৈরি করুন

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

CREATE TABLE apparels_embeddings (id string(100), embedding ARRAY<FLOAT64>)
PRIMARY KEY (id);

INSERT INTO apparels_embeddings(id, embeddings) 
SELECT CAST(id as string), embeddings.values
FROM ML.PREDICT(
  MODEL text_embeddings,
  (SELECT id, content from apparels)
) ;

এখন যেহেতু বাল্ক বিষয়বস্তু এবং এম্বেডিংগুলি প্রস্তুত, আসুন আমরা একটি ভেক্টর অনুসন্ধান সূচক এবং এন্ডপয়েন্ট তৈরি করি যাতে এমবেডিংগুলি সঞ্চয় করা যায় যা ভেক্টর অনুসন্ধান সম্পাদনে সহায়তা করবে।

4. ওয়ার্কফ্লো কাজ: ভেক্টর অনুসন্ধানে স্প্যানার ডেটা এক্সপোর্ট করুন

  1. একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন

ভেক্টর অনুসন্ধান ইনপুট হিসাবে আশা করে এমন একটি json বিন্যাসে একটি GCS বালতিতে স্প্যানার থেকে এম্বেডিংগুলি সঞ্চয় করার জন্য এটি প্রয়োজন৷ স্প্যানারে আপনার ডেটার মতো একই অঞ্চলে একটি বালতি তৈরি করুন । প্রয়োজনে ভিতরে একটি ফোল্ডার তৈরি করুন, তবে প্রধানত এটিতে empty.json নামে একটি খালি ফাইল তৈরি করুন।

  1. ক্লাউড ওয়ার্কফ্লো সেট আপ করুন

স্প্যানার থেকে ভার্টেক্স এআই ভেক্টর অনুসন্ধান সূচকে একটি ব্যাচ রপ্তানি সেট আপ করতে:

একটি খালি সূচক তৈরি করুন :

ভেক্টর অনুসন্ধান সূচকটি আপনার ক্লাউড স্টোরেজ বাকেট এবং ডেটার মতো একই অঞ্চলে রয়েছে তা নিশ্চিত করুন৷ ইনডেক্স পরিচালনা পৃষ্ঠায় ব্যাচ আপডেটের জন্য একটি সূচক তৈরি করুন বিভাগে কনসোল ট্যাবের অধীনে নির্দেশের 11টি ধাপ অনুসরণ করুন। কনটেন্টসডেল্টাউরি-তে পাস করা ফোল্ডারে, empty.json নামে একটি খালি ফাইল তৈরি করুন কারণ আপনি এই ফাইলটি ছাড়া একটি সূচক তৈরি করতে পারবেন না। এটি একটি খালি সূচক তৈরি করে।

আপনার যদি ইতিমধ্যেই একটি সূচক থাকে তবে আপনি এই ধাপটি এড়িয়ে যেতে পারেন। ওয়ার্কফ্লো আপনার সূচকটি ওভাররাইট করবে।

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

এই গিট রিপোজিটরি ক্লোন করুন : একটি গিট রিপোজিটরি ক্লোন করার একাধিক উপায় রয়েছে, একটি উপায় হল GitHub CLI ব্যবহার করে নিম্নলিখিত কমান্ডটি চালানো। ক্লাউড শেল টার্মিনাল থেকে নীচের 2টি কমান্ড চালান:

gh repo clone cloudspannerecosystem/spanner-ai

cd spanner-ai/vertex-vector-search/workflows

এই ফোল্ডারে দুটি ফাইল রয়েছে

  • batch-export.yaml : এটি ওয়ার্কফ্লো সংজ্ঞা।
  • sample-batch-input.json : এটি ওয়ার্কফ্লো ইনপুট প্যারামিটারের একটি নমুনা।

নমুনা ফাইল থেকে input.json সেটআপ করুন: প্রথমে, নমুনা json কপি করুন।

cp sample-batch-input.json input.json

তারপর আপনার প্রকল্পের বিবরণ সহ input.json সম্পাদনা করুন। এই ক্ষেত্রে, আপনার json এটি পছন্দ করা উচিত:

{
  "project_id": "<<YOUR_PROJECT>>",
  "location": "<<us-central1>>",
  "dataflow": {
    "temp_location": "gs://<<YOUR_BUCKET>>/<<FOLDER_IF_ANY>>/workflow_temp"
  },
  "gcs": {
    "output_folder": "gs://<<YOUR_BUCKET>>/<<FOLDER_IF_ANY>>/workflow_output"
  },
  "spanner": {
    "instance_id": "spanner-vertex",
    "database_id": "spanner-vertex-embeddings",
    "table_name": "apparels_embeddings",
    "columns_to_export": "embedding,id"
  },
  "vertex": {
    "vector_search_index_id": "<<YOUR_INDEX_ID>>"
  }
}

সেটআপ অনুমতি

উৎপাদন পরিবেশের জন্য, আমরা দৃঢ়ভাবে একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করার এবং এটিকে এক বা একাধিক IAM ভূমিকা প্রদান করার সুপারিশ করি যাতে পরিষেবা পরিচালনার জন্য প্রয়োজনীয় ন্যূনতম অনুমতি থাকে। স্প্যানার (এম্বেডিং) থেকে ভেক্টর অনুসন্ধান সূচকে ডেটা রপ্তানি করার জন্য ওয়ার্কফ্লো সেটআপ করার জন্য নিম্নলিখিত ভূমিকাগুলির প্রয়োজন:

ক্লাউড ওয়ার্কফ্লো পরিষেবা অ্যাকাউন্ট :

ডিফল্টরূপে এটি Compute Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে।

আপনি যদি একটি ম্যানুয়ালি কনফিগার করা পরিষেবা অ্যাকাউন্ট ব্যবহার করেন, তাহলে আপনাকে অবশ্যই নিম্নলিখিত ভূমিকাগুলি অন্তর্ভুক্ত করতে হবে:

একটি ডেটাফ্লো কাজ ট্রিগার করতে: ডেটাফ্লো অ্যাডমিন, ডেটাফ্লো কর্মী৷

একটি ডেটাফ্লো কর্মী পরিষেবা অ্যাকাউন্টের ছদ্মবেশ ধারণ করতে: পরিষেবা অ্যাকাউন্ট ব্যবহারকারী৷

লগ লিখতে: লগ রাইটার।

ভার্টেক্স এআই ভেক্টর অনুসন্ধান পুনর্নির্মাণকে ট্রিগার করতে: ভার্টেক্স এআই ব্যবহারকারী।

ডেটাফ্লো কর্মী পরিষেবা অ্যাকাউন্ট :

আপনি যদি একটি ম্যানুয়ালি কনফিগার করা পরিষেবা অ্যাকাউন্ট ব্যবহার করেন, তাহলে আপনাকে অবশ্যই নিম্নলিখিত ভূমিকাগুলি অন্তর্ভুক্ত করতে হবে:

ডেটাফ্লো পরিচালনা করতে: ডেটাফ্লো অ্যাডমিন , ডেটাফ্লো কর্মী। স্প্যানার থেকে ডেটা পড়তে: ক্লাউড স্প্যানার ডেটাবেস রিডার। নির্বাচিত GCS কন্টেইনার রেজিস্ট্রিতে অ্যাক্সেস লিখুন: GCS স্টোরেজ বাকেট মালিক।

  1. ক্লাউড ওয়ার্কফ্লো স্থাপন করুন

আপনার Google ক্লাউড প্রকল্পে ওয়ার্কফ্লো yaml ফাইলটি স্থাপন করুন। আপনি সেই অঞ্চল বা অবস্থান কনফিগার করতে পারেন যেখানে কার্যপ্রবাহ চালানো হবে যখন কার্যকর করা হবে।

gcloud workflows deploy vector-export-workflow --source=batch-export.yaml --location="us-central1" [--service account=<service_account>]

or 

gcloud workflows deploy vector-export-workflow --source=batch-export.yaml --location="us-central1"

ওয়ার্কফ্লো এখন Google ক্লাউড কনসোলে ওয়ার্কফ্লো পৃষ্ঠায় দৃশ্যমান হওয়া উচিত।

দ্রষ্টব্য : আপনি Google ক্লাউড কনসোল থেকে কর্মপ্রবাহ তৈরি এবং স্থাপন করতে পারেন। ক্লাউড কনসোলে প্রম্পটগুলি অনুসরণ করুন। কর্মপ্রবাহের সংজ্ঞার জন্য, batch-export.yaml-এর বিষয়বস্তু অনুলিপি করে পেস্ট করুন।

একবার এটি সম্পূর্ণ হলে, কর্মপ্রবাহ চালান যাতে ডেটা রপ্তানি শুরু হয়।

  1. ক্লাউড ওয়ার্কফ্লো চালান

ওয়ার্কফ্লো চালানোর জন্য নিম্নলিখিত কমান্ডটি চালান:

gcloud workflows execute vector-export-workflow --data="$(cat input.json)"

কার্যপ্রবাহের এক্সিকিউশন ট্যাবে এক্সিকিউশন দেখানো উচিত। এটি ভেক্টর অনুসন্ধান ডাটাবেসে আপনার ডেটা লোড করবে এবং এটিকে সূচী করবে।

দ্রষ্টব্য : আপনি এক্সিকিউট বোতাম ব্যবহার করে কনসোল থেকেও চালাতে পারেন। প্রম্পটগুলি অনুসরণ করুন এবং ইনপুটের জন্য, আপনার কাস্টমাইজড input.json-এর বিষয়বস্তু অনুলিপি করুন এবং পেস্ট করুন৷

5. ভেক্টর অনুসন্ধান সূচক স্থাপন করুন

একটি শেষ বিন্দুতে সূচী স্থাপন করুন

আপনি সূচক স্থাপন করতে নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন:

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

বিকল্পভাবে, আপনি এই নোটবুকটিকে একটি এন্ডপয়েন্টে স্থাপন করতে দেখতে পারেন (নোটবুকের ডিপ্লোয় অংশে যান)। একবার স্থাপন করা হলে, স্থাপন করা সূচক আইডি এবং এন্ডপয়েন্ট ইউআরএলের একটি নোট নিন।

6. ফ্রন্টেন্ড: ভেক্টর অনুসন্ধানের জন্য ব্যবহারকারীর ডেটা

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

  1. আমরা এম্বেডিং এপিআই কল করার জন্য এবং ভেক্টর সার্চ ইনডেক্স এন্ডপয়েন্ট চালু করার জন্য aipplatform python sdk ব্যবহার করব।
# [START aiplatform_sdk_embedding]
!pip install google-cloud-aiplatform==1.35.0 --upgrade --quiet --user


import vertexai
vertexai.init(project=PROJECT_ID, location="us-central1")


from vertexai.language_models import TextEmbeddingModel


import sys
if "google.colab" in sys.modules:
    # Define project information
    PROJECT_ID = " "  # Your project id
    LOCATION = " "  # Your location 


    # Authenticate user to Google Cloud
    from google.colab import auth
    auth.authenticate_user()
  1. আমরা একটি ইউজার ইন্টারফেস দিয়ে দ্রুত এবং সহজে যে AI অ্যাপ্লিকেশন তৈরি করছি তা ডেমো করতে আমরা গ্র্যাডিও ব্যবহার করব। আপনি এই পদক্ষেপটি বাস্তবায়ন করার আগে রানটাইম পুনরায় চালু করুন।
!pip install gradio
import gradio as gr
  1. ব্যবহারকারীর ইনপুটের উপর ওয়েব অ্যাপ থেকে, এম্বেডিং এপিআই চালু করুন, আমরা টেক্সট এমবেডিং মডেল ব্যবহার করব: textembedding-gecko@latest

নীচের পদ্ধতিটি পাঠ্য এমবেডিং মডেলকে আহ্বান করে এবং ব্যবহারকারীর দ্বারা প্রবেশ করা পাঠ্যের জন্য ভেক্টর এম্বেডিংগুলি প্রদান করে:

def text_embedding(content) -> list:
    """Text embedding with a Large Language Model."""
    model = TextEmbeddingModel.from_pretrained("textembedding-gecko@latest")
    embeddings = model.get_embeddings(content)
    for embedding in embeddings:
        vector = embedding.values
        #print(f"Length of Embedding Vector: {len(vector)}")
    return vector

এটি পরীক্ষা করুন

text_embedding("red shorts for girls")

আপনি নীচের অনুরূপ একটি আউটপুট দেখতে হবে (দয়া করে মনে রাখবেন যে ছবিটি উচ্চতায় কাটা হয়েছে তাই আপনি সম্পূর্ণ ভেক্টর প্রতিক্রিয়া দেখতে সক্ষম হবেন না):

5d8355ec04dac1f9.png

  1. স্থাপন করা সূচক আইডি এবং শেষ পয়েন্ট আইডি ঘোষণা করুন
from google.cloud import aiplatform
DEPLOYED_INDEX_ID = "spanner_vector1_1702366982123"
#Vector Search Endpoint
index_endpoint = aiplatform.MatchingEngineIndexEndpoint('projects/273845608377/locations/us-central1/indexEndpoints/2021628049526620160')
  1. ইনডেক্স এন্ডপয়েন্টকে কল করার জন্য ভেক্টর অনুসন্ধান পদ্ধতিটি সংজ্ঞায়িত করুন এবং ব্যবহারকারীর ইনপুট পাঠ্যের সাথে সম্পর্কিত এমবেডিং প্রতিক্রিয়ার জন্য 10টি নিকটতম মিলের সাথে ফলাফল দেখান।

ভেক্টর অনুসন্ধানের জন্য নীচের পদ্ধতির সংজ্ঞায়, লক্ষ্য করুন যে 10টি নিকটতম ভেক্টর সনাক্ত করতে find_neighbours পদ্ধতিটি চালু করা হয়েছে।

def vector_search(content) -> list:
  result = text_embedding(content)
  #call_vector_search_api(content)
  index_endpoint = aiplatform.MatchingEngineIndexEndpoint('projects/273845608377/locations/us-central1/indexEndpoints/2021628049526620160')
  # run query
  response = index_endpoint.find_neighbors(
      deployed_index_id = DEPLOYED_INDEX_ID,
      queries = [result],
      num_neighbors = 10
  )
  out = []
  # show the results
  for idx, neighbor in enumerate(response[0]):
      print(f"{neighbor.distance:.2f} {spanner_read_data(neighbor.id)}")
      out.append(f"{spanner_read_data(neighbor.id)}")
  return out

আপনি স্প্যানার_রিড_ডেটা পদ্ধতিতে কল আউটও লক্ষ্য করবেন। এর পরবর্তী ধাপে তা দেখুন।

  1. স্প্যানার রিড ডেটা মেথড ইমপ্লিমেন্টেশন সংজ্ঞায়িত করুন যা শেষ ধাপ থেকে ফিরে আসা নিকটতম প্রতিবেশী ভেক্টরের আইডির সাথে সম্পর্কিত ইমেজগুলি বের করতে execute_sql পদ্ধতি ব্যবহার করে।
!pip install google-cloud-spanner==3.36.0


from google.cloud import spanner


instance_id = "spanner-vertex"
database_id = "spanner-vertex-embeddings"
projectId = PROJECT_ID
client = spanner.Client()
client.project = projectId
instance = client.instance(instance_id)
database = instance.database(database_id)
def spanner_read_data(id):
    query = "SELECT uri FROM apparels where id = " + id
    outputs = []
    with database.snapshot() as snapshot:
        results = snapshot.execute_sql(query)


        for row in results:
            #print(row)
            #output = "ID: {}, CONTENT: {}, URI: {}".format(*row)
            output = "{}".format(*row)
            outputs.append(output)


    return "\n".join(outputs)

এটি নির্বাচিত ভেক্টরগুলির সাথে সম্পর্কিত চিত্রগুলির URL গুলি ফেরত দেবে৷

  1. সবশেষে টুকরোগুলোকে ইউজার ইন্টারফেসে একসাথে রাখি এবং ভেক্টর সার্চ প্রক্রিয়াটি ট্রিগার করি
from PIL import Image


def call_search(query):
  response = vector_search(query)
  return response


input_text = gr.Textbox(label="Enter your query. Examples: Girls Tops White Casual, Green t-shirt girls, jeans shorts, denim skirt etc.")
output_texts = [gr.Image(label="") for i in range(10)]
demo = gr.Interface(fn=call_search, inputs=input_text, outputs=output_texts, live=True)
resp = demo.launch(share = True)

আপনি নীচের হিসাবে দেখানো ফলাফল দেখতে হবে:

8093b39fbab1a9cc.png

ছবি: লিঙ্ক

ফলাফল ভিডিও দেখুন: এখানে .

7. পরিষ্কার করুন

এই পোস্টে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন:

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

8. উপসংহার

অভিনন্দন! আপনি সফলভাবে স্প্যানার - ভার্টেক্স ভেক্টর অনুসন্ধান বাস্তবায়ন সম্পন্ন করেছেন

  1. স্প্যানার ডেটাবেস থেকে প্রাপ্ত অ্যাপ্লিকেশনগুলির জন্য স্প্যানার ডেটা উত্স এবং এম্বেডিং তৈরি করা৷
  2. ভেক্টর অনুসন্ধান ডাটাবেস সূচক তৈরি করা।
  3. ডেটাফ্লো এবং ওয়ার্কফ্লো কাজগুলি ব্যবহার করে স্প্যানার থেকে ভেক্টর অনুসন্ধানে ভেক্টর ডেটা একীভূত করা।
  4. একটি শেষ পয়েন্টে সূচী স্থাপন করা হচ্ছে।
  5. অবশেষে Vertex AI sdk-এর পাইথন-চালিত বাস্তবায়নে ব্যবহারকারীর ইনপুটে ভেক্টর অনুসন্ধান শুরু করা হচ্ছে।

নির্দ্বিধায় বাস্তবায়নকে আপনার নিজের ব্যবহারের ক্ষেত্রে প্রসারিত করুন বা নতুন বৈশিষ্ট্য সহ বর্তমান ব্যবহারের ক্ষেত্রে উন্নতি করুন। এখানে Spanner এর মেশিন লার্নিং ক্ষমতা সম্পর্কে আরও জানুন।