ভেক্টর এমবেডিংয়ের জন্য textembedding-gecko@003 ব্যবহার করা হচ্ছে

1. ভূমিকা

শেষ আপডেট: 2024-04-08

পাঠ্য এমবেডিং

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

পাঠ্য একটি জটিল ভাষার মতো, সূক্ষ্মতা এবং অস্পষ্টতায় পূর্ণ।

টেক্সট এম্বেডিং সেই ভাষাটিকে একটি সহজ, গাণিতিক বিন্যাসে অনুবাদ করে যা কম্পিউটার বুঝতে এবং ম্যানিপুলেট করতে পারে।

টেক্সট এমবেডিং এর সুবিধা

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

টেক্সট এম্বেডিংয়ের ক্ষেত্রে ব্যবহার করুন

পাঠ্য এমবেডিং, পাঠ্যকে সংখ্যাসূচক উপস্থাপনায় রূপান্তর করে, প্রাকৃতিক ভাষা প্রক্রিয়াকরণে (NLP) বিভিন্ন অ্যাপ্লিকেশন আনলক করে। এখানে কিছু মূল ব্যবহারের ক্ষেত্রে রয়েছে:

1. অনুসন্ধান ইঞ্জিন এবং তথ্য পুনরুদ্ধার:

টেক্সট এম্বেডিং সার্চ ইঞ্জিনগুলিকে প্রশ্নের পিছনের শব্দার্থিক অর্থ বুঝতে এবং প্রাসঙ্গিক নথিগুলির সাথে মিলিত করতে দেয়, এমনকি সঠিক কীওয়ার্ডগুলি উপস্থিত না থাকলেও৷

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

2. সুপারিশ সিস্টেম:

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

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

3. চৌর্যবৃত্তি সনাক্তকরণ:

দুটি টেক্সট টুকরা এমবেডিং তুলনা তাদের শব্দার্থিক কাঠামোর মধ্যে উল্লেখযোগ্য মিল খুঁজে বের করে সম্ভাব্য চুরির পরিচয় সনাক্ত করতে সাহায্য করতে পারে।

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

textembedding-gecko@003

Textembedding-gecko@003 হল Google ক্লাউড প্ল্যাটফর্ম (GCP) দ্বারা Vertex AI এবং তাদের AI টুল ও পরিষেবাগুলির স্যুটের মাধ্যমে অফার করা একটি প্রাক-প্রশিক্ষিত টেক্সট এমবেডিং মডেলের একটি নির্দিষ্ট সংস্করণ।

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

এই কোডল্যাবে, আপনি একটি পাইথন স্ক্রিপ্ট তৈরি করতে যাচ্ছেন। এই স্ক্রিপ্ট হবে:

  • Textembedding-gecko@003 কল করতে Vertex API ব্যবহার করুন এবং টেক্সট এম্বেডিং (ভেক্টর) এ টেক্সট রূপান্তর করুন।
  • পাঠ্য এবং তাদের ভেক্টর দিয়ে তৈরি একটি সিমুলেটেড ডাটাবেস তৈরি করুন
  • ভেক্টর তুলনা করে আমাদের সিমুলেটেড ভেক্টর ডাটাবেসে একটি প্রশ্ন সম্পাদন করুন এবং সম্ভাব্য প্রতিক্রিয়া পান।

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

  • জিসিপিতে টেক্সট এম্বেডিং কীভাবে ব্যবহার করবেন
  • কিভাবে টেক্সটেমবেডিং-gecko@003 কল করবেন
  • ওয়ার্কবেঞ্চে এটি কীভাবে চালাবেন
  • স্ক্রিপ্ট চালানোর জন্য Vertex AI - Workbench কিভাবে ব্যবহার করবেন

আপনি কি প্রয়োজন হবে

  • Chrome এর সাম্প্রতিক সংস্করণ
  • পাইথনের জ্ঞান
  • একটি Google ক্লাউড প্রকল্প
  • ভার্টেক্স এআই - ওয়ার্কবেঞ্চে অ্যাক্সেস

2. সেট আপ করা হচ্ছে

একটি ভার্টেক্স এআই ওয়ার্কবেঞ্চ ইনস্ট্যান্স তৈরি করুন

  1. Google ক্লাউড কনসোলে, প্রকল্প নির্বাচক পৃষ্ঠায়, একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন৷
  1. প্রকল্প নির্বাচক যান
  2. আপনার Google ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে তা নিশ্চিত করুন৷
  3. নোটবুক API সক্ষম করুন।

আপনি Google ক্লাউড কনসোল, gcloud CLI, বা Terraform ব্যবহার করে একটি Vertex AI Workbench উদাহরণ তৈরি করতে পারেন। এই টিউটোরিয়ালের উদ্দেশ্যে, আমরা Google ক্লাউড কনসোল ব্যবহার করে এটি তৈরি করব। অন্যান্য পদ্ধতি সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে।

  1. Google ক্লাউড কনসোলে, ইনস্ট্যান্স পৃষ্ঠাতে যান যা ভার্টেক্স এআই মেনু, নোটবুক বিভাগে অ্যাক্সেস করা যেতে পারে এবং ওয়ার্কবেঞ্চে ক্লিক করুন। 56c087d619c464dd.png
  2. ইনস্ট্যান্সে যান।
  3. নতুন তৈরি করুন ক্লিক করুন। 381ff9b895e77641.png
  4. ইনস্ট্যান্স তৈরি করুন ডায়ালগে, বিশদ বিভাগে, আপনার নতুন উদাহরণের জন্য নিম্নলিখিত তথ্য প্রদান করুন:

নাম : আপনার নতুন উদাহরণের জন্য একটি নাম দিন। নামটি অবশ্যই একটি অক্ষর দিয়ে শুরু হতে হবে যার পরে 62টি ছোট হাতের অক্ষর, সংখ্যা, বা হাইফেন (-), এবং একটি হাইফেন দিয়ে শেষ করা যাবে না।

অঞ্চল এবং অঞ্চল : নতুন উদাহরণের জন্য একটি অঞ্চল এবং অঞ্চল নির্বাচন করুন। সেরা নেটওয়ার্ক পারফরম্যান্সের জন্য, ভৌগলিকভাবে আপনার সবচেয়ে কাছের অঞ্চলটি নির্বাচন করুন৷

GPU ইন্সটল করার দরকার নেই

নেটওয়ার্কিং বিভাগে, নিম্নলিখিত প্রদান করুন:

নেটওয়ার্কিং : আপনার বর্তমান প্রকল্পে একটি নেটওয়ার্ক ব্যবহার করার জন্য নেটওয়ার্ক বিকল্পগুলি সামঞ্জস্য করুন বা একটি হোস্ট প্রকল্প থেকে একটি শেয়ার্ড ভিপিসি নেটওয়ার্ক, যদি একটি কনফিগার করা থাকে। আপনি যদি হোস্ট প্রজেক্টে একটি শেয়ার্ড ভিপিসি ব্যবহার করেন, তাহলে আপনাকে অবশ্যই পরিষেবা প্রকল্প থেকে নোটবুক পরিষেবা এজেন্টকে কম্পিউট নেটওয়ার্ক ব্যবহারকারীর ভূমিকা (roles/compute.networkUser) প্রদান করতে হবে৷

নেটওয়ার্ক ক্ষেত্রে : আপনি যে নেটওয়ার্ক চান তা নির্বাচন করুন। আপনি একটি VPC নেটওয়ার্ক নির্বাচন করতে পারেন, যতক্ষণ না নেটওয়ার্কে ব্যক্তিগত Google অ্যাক্সেস সক্ষম থাকে বা ইন্টারনেট অ্যাক্সেস করতে পারে

সাবনেটওয়ার্ক ক্ষেত্রে: আপনি যে সাবনেটওয়ার্ক চান তা নির্বাচন করুন। আপনি ডিফল্ট এক চয়ন করতে পারেন.

ইনস্ট্যান্স বৈশিষ্ট্যে আপনি ডিফল্টটি ছেড়ে দিতে পারেন, এটি একটি e2-মানক-4।

d47bdc2d7f516c46.png

  1. Create এ ক্লিক করুন।

Vertex AI Workbench একটি উদাহরণ তৈরি করে এবং স্বয়ংক্রিয়ভাবে এটি শুরু করে। উদাহরণটি ব্যবহারের জন্য প্রস্তুত হলে, Vertex AI Workbench একটি ওপেন JupyterLab লিঙ্ক সক্রিয় করে। এটিতে ক্লিক করুন।

একটি পাইথন 3 নোটবুক তৈরি করুন

  1. Jupyterlab এর ভিতরে, লঞ্চার থেকে, নোটবুক বিভাগে, পাইথন লোগো সহ আইকনে ক্লিক করুন যা Python3 বলে। e16bb118cd28256f.png
  2. শিরোনামহীন এবং এক্সটেনশন ipynb সহ একটি জুপিটার নোটবুক তৈরি করা হয়েছে। da9bd34cf307156c.png
  3. আপনি বাম দিকের ফাইল ব্রাউজার বিভাগটি ব্যবহার করে এটির নাম পরিবর্তন করতে পারেন বা আপনি এটিকে রেখে দিতে পারেন।

এখন, আমরা আমাদের কোড নোটবুকে রাখা শুরু করতে পারি।

3. প্রয়োজনীয় লাইব্রেরি আমদানি করা

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

আমাদের প্রয়োজন হবে:

  1. নম্র
  2. পান্ডা
  3. vertexai.language_models থেকে TextEmbeddingInput, TextEmbeddingModel

নিচের কোডটি কপি করে একটি ঘরে পেস্ট করুন:

from vertexai.language_models import TextEmbeddingInput, TextEmbeddingModel

import numpy as np
import pandas as pd

এটা এই মত কিছু দেখতে হবে:

6852d323eedcac93.png

4. একটি সিমুলেটেড ভেক্টর ডাটাবেস তৈরি করুন

আমাদের কোড পরীক্ষা করার জন্য, আমরা টেক্সট এবং তাদের নিজ নিজ ভেক্টর দিয়ে তৈরি একটি ডাটাবেস তৈরি করব, যা gecko@003 টেক্সট এমবেডিং মডেল ব্যবহার করে অনুবাদ করা হয়েছে।

উদ্দেশ্য হল ব্যবহারকারীদের একটি পাঠ্য অনুসন্ধান করা, এটি একটি ভেক্টরে অনুবাদ করা, আমাদের ডাটাবেসে এটি অনুসন্ধান করা এবং সর্বাধিক আনুমানিক ফলাফল প্রদান করা।

আমাদের ভেক্টর ডাটাবেস 3টি রেকর্ড ধারণ করবে, এইভাবে আমরা এটি তৈরি করব:

নিচের কোডটি কপি করে একটি নতুন ঘরে পেস্ট করুন।

DOCUMENT1 = {
    "title": "Operating the Climate Control System",
    "content": "Your Googlecar has a climate control system that allows you to adjust the temperature and airflow in the car. To operate the climate control system, use the buttons and knobs located on the center console.  Temperature: The temperature knob controls the temperature inside the car. Turn the knob clockwise to increase the temperature or counterclockwise to decrease the temperature. Airflow: The airflow knob controls the amount of airflow inside the car. Turn the knob clockwise to increase the airflow or counterclockwise to decrease the airflow. Fan speed: The fan speed knob controls the speed of the fan. Turn the knob clockwise to increase the fan speed or counterclockwise to decrease the fan speed. Mode: The mode button allows you to select the desired mode. The available modes are: Auto: The car will automatically adjust the temperature and airflow to maintain a comfortable level. Cool: The car will blow cool air into the car. Heat: The car will blow warm air into the car. Defrost: The car will blow warm air onto the windshield to defrost it."}

DOCUMENT2 = {
    "title": "Touchscreen",
    "content": "Your Googlecar has a large touchscreen display that provides access to a variety of features, including navigation, entertainment, and climate control. To use the touchscreen display, simply touch the desired icon.  For example, you can touch the \"Navigation\" icon to get directions to your destination or touch the \"Music\" icon to play your favorite songs."}

DOCUMENT3 = {
    "title": "Shifting Gears",
    "content": "Your Googlecar has an automatic transmission. To shift gears, simply move the shift lever to the desired position.  Park: This position is used when you are parked. The wheels are locked and the car cannot move. Reverse: This position is used to back up. Neutral: This position is used when you are stopped at a light or in traffic. The car is not in gear and will not move unless you press the gas pedal. Drive: This position is used to drive forward. Low: This position is used for driving in snow or other slippery conditions."}

documents = [DOCUMENT1, DOCUMENT2, DOCUMENT3]

df_initial_db = pd.DataFrame(documents)
df_initial_db.columns = ['Title', 'Text']
df_initial_db

এটি এই মত দেখাবে:

26baa3b876c0605d.png

এর কোড বিশ্লেষণ করা যাক

DOCUMENT1, DOCUMENT2 এবং DOCUMENT3 ভেরিয়েবলগুলিতে আমরা একটি অভিধান সংরক্ষণ করছি যা নথিগুলিকে তাদের শিরোনাম এবং বিষয়বস্তু সহ অনুকরণ করবে। এই "দস্তাবেজগুলি" একটি Google তৈরি গাড়ির একটি সিমুলেটেড ম্যানুয়াল উল্লেখ করছে৷

পরের লাইনে, আমরা সেই ৩টি নথির (অভিধান) একটি তালিকা তৈরি করি।

documents = [DOCUMENT1, DOCUMENT2, DOCUMENT3]

পরিশেষে, পান্ডাদের ব্যবহার করে, আমরা সেই তালিকা থেকে একটি ডেটাফ্রেম তৈরি করি যাকে df_initial_db বলা হবে।

df_initial_db = pd.DataFrame(documents)
df_initial_db.columns = ['Title', 'Text']
df_initial_db

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

আমরা এখন আমাদের নথির সিমুলেটেড ডাটাবেসের প্রতিটি রেকর্ডের জন্য gecko@003 মডেল ব্যবহার করে একটি পাঠ্য এম্বেডিং পাব।

নিচের কোডটি কপি করে একটি নতুন কক্ষে পেস্ট করুন:

def embed_fn(df_input):
    list_embedded_values = []
    for index, row in df_input.iterrows():        
        model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
        embeddings = model.get_embeddings([(row['Text'])])        
        list_embedded_values.append(embeddings[0].values)
    df_input['Embedded text'] = list_embedded_values
    return df_input        
                                           
df_embedded_values_db = embed_fn(df_initial_db)
df_embedded_values_db      

এটি এই মত দেখাবে:

4c4af091c7a82861.png

এর কোড বিশ্লেষণ করা যাক

আমরা embed_fn নামে একটি ফাংশন সংজ্ঞায়িত করেছি যা একটি পান্ডাস ডেটাফ্রেম ইনপুট হিসাবে গ্রহণ করবে যাতে এমবেডিং সম্পাদন করার জন্য পাঠ্য থাকে। ফাংশন তারপর একটি ভেক্টর হিসাবে এনকোড করা পাঠ্য ফেরত দেয়।

def embed_fn(df_input):
    list_embedded_values = []
    for index, row in df_input.iterrows():        
        model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
        embeddings = model.get_embeddings([(row['Text'])])        
        list_embedded_values.append(embeddings[0].values)
    df_input['Embedded text'] = list_embedded_values
    return df_input             

list_embedded_values ​​নামক তালিকায় আমরা প্রতিটি সারির এনকোড করা পাঠ্য সংরক্ষণ এবং সংযোজন করব।

pandas থেকে iterrows পদ্ধতি ব্যবহার করে, আমরা ডাটাফ্রেমের প্রতিটি সারি পুনরাবৃত্তি করতে পারি, কলাম টেক্সট (যা আমাদের সিমুলেটেড ডাটাবেস থেকে ম্যানুয়াল তথ্য ধারণ করে) থেকে মান পেতে পারি।

নিয়মিত টেক্সট পাঠানোর জন্য এবং gecko@003 মডেল ব্যবহার করে এর ভেক্টর ফেরত দেওয়ার জন্য, আমরা পরিবর্তনশীল মডেলটি শুরু করি যেখানে আমরা TextEmbeddingModel.from_pretrained ফাংশন কল করে মডেলটিকে ব্যবহার করার জন্য সেট করি।

model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
embeddings = model.get_embeddings([(row['Text'])])                     

তারপর, পরিবর্তনশীল এমবেডিং-এ, মডেল.get_embedding ফাংশনের মাধ্যমে আমরা যে টেক্সট পাঠাই তার ভেক্টর ক্যাপচার করি।

ফাংশনের শেষে, আমরা এম্বেডেড টেক্সট নামে ডেটাফ্রেমে একটি নতুন কলাম তৈরি করি এবং এতে gecko@003 মডেলের উপর ভিত্তি করে তৈরি ভেক্টরের তালিকা থাকবে।

df_input['Embedded text'] = list_embedded_values
return df_input             

অবশেষে, ভেরিয়েবল df_embedded_values_db-এ আমরা সিমুলেটেড ডাটাবেস থেকে আমাদের আসল ডেটা সহ প্রতিটি সারির ভেক্টরের তালিকা সহ একটি নতুন কলাম ক্যাপচার করি।

df_embedded_values_db = embed_fn(df_initial_db)
df_embedded_values_db      

6. ভেক্টর ডাটাবেসকে একটি প্রশ্ন জিজ্ঞাসা করা

এখন যেহেতু আমাদের ডাটাবেসে পাঠ্য এবং তাদের ভেক্টর রয়েছে, আমরা একটি প্রশ্ন জিজ্ঞাসা করতে এবং উত্তর খুঁজতে আমাদের ডাটাবেসকে জিজ্ঞাসা করতে পারি।

তার জন্য নিচের কোডটি কপি করে একটি নতুন ঘরে পেস্ট করুন:

question='How do you shift gears in the Google car?'
model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
embeddings = model.get_embeddings([(question)])        
text_to_search=embeddings[0].values
len(text_to_search)

ফলাফল এই মত কিছু দেখতে হবে:

6b7cf9b08e3b4573.png

এর কোড বিশ্লেষণ করা যাক

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

question='How do you shift gears in the Google car?'

তারপর, মডেল ভেরিয়েবলে আমরা TextEmbeddingModel.from_pretrained ফাংশনের মাধ্যমে যে মডেলটি ব্যবহার করতে চাই সেটি সেট করি যা এই ক্ষেত্রে, হল gecko@003 মডেল।

model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")

এমবেডিং ভেরিয়েবলে, আমরা model.get_embeddings ফাংশনকে কল করি এবং ভেক্টরে রূপান্তরিত করার জন্য পাঠ্য পাস করি, এই ক্ষেত্রে, আমরা জিজ্ঞাসা করার জন্য প্রশ্নটি পাস করি।

embeddings = model.get_embeddings([(question)])        

অবশেষে, text_to_search ভেরিয়েবল প্রশ্ন থেকে অনুবাদ করা ভেক্টরের তালিকা ধারণ করে।

আমরা রেফারেন্স হিসাবে ভেক্টরের দৈর্ঘ্য প্রিন্ট করি।

text_to_search=embeddings[0].values
len(text_to_search)

7. ভেক্টর তুলনা করা

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

এটি সম্পন্ন করার জন্য, আমরা প্রশ্নের ভেক্টর এবং ডাটাবেসের প্রতিটি ভেক্টরের মধ্যে দূরত্ব পরিমাপ করব। ভেক্টরের মধ্যে দূরত্ব পরিমাপ করার একাধিক কৌশল রয়েছে, এই নির্দিষ্ট কোডল্যাবের জন্য, আমরা ইউক্লিডীয় দূরত্ব বা L2 আদর্শ ব্যবহার করব।

73ea8635c4570bea.png

পাইথনে, আমরা এটি সম্পন্ন করতে নম্পি ফাংশনটি ব্যবহার করতে পারি।

নিচের কোডটি কপি করে একটি নতুন কক্ষে পেস্ট করুন:

list_embedded_text_from_db = df_embedded_values_db['Embedded text']
shortest_distance=1
for position, embedded_value in enumerate(list_embedded_text_from_db):
    distance=np.linalg.norm((np.array(embedded_value) - np.array(text_to_search)), ord = 2)
    print(distance)
    if distance<shortest_distance:
        shortest_distance=distance
        shortest_position=position
        
print(f'The shortest distance is {shortest_distance} and the position of that value is {shortest_position}')

ফলাফল এই মত হওয়া উচিত:

b70563b50ea86668.png

এর কোড বিশ্লেষণ করা যাক

আমরা এম্বেড করা টেক্সট বা আমাদের ডাটাবেসের ভেক্টর ধারণ করা কলামটিকে একটি তালিকায় রূপান্তর করে এবং list_embedded_text_from_db-এ সংরক্ষণ করে শুরু করি।

আমরা প্রকৃত সংক্ষিপ্ততম দূরত্ব খুঁজে না পাওয়া পর্যন্ত এটি আপডেট করার জন্য আমরা 1 থেকে shortest_distance ভেরিয়েবলকেও আরম্ভ করেছি।

list_embedded_text_from_db = df_embedded_values_db['Embedded text']
shortest_distance=1

তারপর a for loop ব্যবহার করে আমরা পুনরাবৃত্তি করি এবং প্রশ্ন থেকে ভেক্টর এবং ডাটাবেসের প্রতিটি ভেক্টরের মধ্যে দূরত্ব পাই।

numpy linalg.norm ফাংশন ব্যবহার করে আমরা তাদের দূরত্ব গণনা করি।

যদি গণনা করা দূরত্ব shortest_distance ভেরিয়েবলের একটি থেকে কম হয়, তাহলে গণনা করা দূরত্ব এই ভেরিয়েবলে সেট করা হবে

তারপরে আমরা স্বল্পতম দূরত্বের পাশাপাশি তালিকার অবস্থানটি যেখানে এটি পাওয়া গেছে তা ক্যাপচার করি। সংক্ষিপ্ত_দূরত্ব এবং সংক্ষিপ্ত_ অবস্থান ভেরিয়েবলে।

for position, embedded_value in enumerate(list_embedded_text_from_db):
    distance=np.linalg.norm((np.array(embedded_value) - np.array(text_to_search)), ord = 2)
    print(distance)
    if distance<shortest_distance:
        shortest_distance=distance
        shortest_position=position

8. ফলাফল

প্রশ্ন এবং ডাটাবেসের মধ্যে সবচেয়ে কম দূরত্ব ধারণকারী ভেক্টরের তালিকার অবস্থান জেনে আমরা ফলাফলগুলি প্রিন্ট করতে পারি।

একটি নতুন কক্ষে নীচের কোডটি অনুলিপি করুন এবং পেস্ট করুন:

print("Your question was:\n "+question+ " \nAnd our answer is:\n "+
      df_embedded_values_db.at[shortest_position, 'Title']+": "+
      df_embedded_values_db.at[shortest_position, 'Text'])

এটি কার্যকর করার পরে, আপনি এই মত কিছু পাবেন:

7a0e429171a19afe.png

9. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে একটি বাস্তব ব্যবহারের ক্ষেত্রে textembedding-gecko@003 মডেল ব্যবহার করে আপনার প্রথম অ্যাপ্লিকেশনটি তৈরি করেছেন!

আপনি টেক্সট এম্বেডিংয়ের ভিত্তি এবং GCP ওয়ার্কবেঞ্চে gecko003 মডেলটি কীভাবে ব্যবহার করবেন তা শিখেছেন।

আপনি এখন আরও ব্যবহারের ক্ষেত্রে আপনার জ্ঞান প্রয়োগ চালিয়ে যাওয়ার জন্য প্রয়োজনীয় মূল পদক্ষেপগুলি জানেন৷

এরপর কি?

এই কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...

রেফারেন্স ডক্স