ওয়েবের জন্য টেক্সট এম্বেডিং গাইড

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

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

কোডের উদাহরণ

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

সেটআপ

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

জাভাস্ক্রিপ্ট প্যাকেজ

@mediapipe/tasks-text প্যাকেজের মাধ্যমে টেক্সট এমবেডার কোড পাওয়া যায়। প্ল্যাটফর্ম সেটআপ গাইডে দেওয়া লিঙ্কগুলো থেকে আপনি এই লাইব্রেরিগুলো খুঁজে ও ডাউনলোড করতে পারবেন।

নিম্নলিখিত কমান্ড ব্যবহার করে লোকাল স্টেজিং-এর জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করতে পারেন:

npm install @mediapipe/tasks-text

আপনি যদি কোনো সার্ভারে ডেপ্লয় করতে চান, তাহলে jsDelivr-এর মতো একটি কন্টেন্ট ডেলিভারি নেটওয়ার্ক (CDN) পরিষেবা ব্যবহার করে সরাসরি আপনার HTML পৃষ্ঠায় কোড যোগ করতে পারেন, যেভাবে নিচে দেখানো হয়েছে:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

মডেল

MediaPipe Text Embedder টাস্কটির জন্য এমন একটি প্রশিক্ষিত মডেল প্রয়োজন যা এই টাস্কের সাথে সামঞ্জস্যপূর্ণ। Text Embedder-এর জন্য উপলব্ধ প্রশিক্ষিত মডেলগুলো সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ-এর Models বিভাগটি দেখুন।

একটি মডেল নির্বাচন করে ডাউনলোড করুন এবং তারপর সেটি আপনার প্রজেক্ট ডিরেক্টরিতে সংরক্ষণ করুন:

<dev-project-root>/app/shared/models

টাস্কটি তৈরি করুন

ইনফারেন্স চালানোর জন্য টাস্কটি প্রস্তুত করতে টেক্সট এমবেডারের createFrom...() ফাংশনগুলোর মধ্যে একটি ব্যবহার করুন। আপনি প্রশিক্ষিত মডেল ফাইলের রিলেটিভ বা অ্যাবসোলিউট পাথ সহ createFromModelPath() ফাংশনটি ব্যবহার করতে পারেন। নিচের কোড উদাহরণটি createFromOptions() ফাংশনের ব্যবহার প্রদর্শন করে। উপলব্ধ কনফিগারেশন অপশনগুলো সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন অপশনস দেখুন।

নিম্নলিখিত কোডটি দেখায় কিভাবে এই টাস্কটি বিল্ড এবং কনফিগার করতে হয়:

async function createEmbedder() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textEmbedder = await TextEmbedder.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
      },
      quantize: true
    }
  );
}
createEmbedder();

কনফিগারেশন বিকল্পগুলি

ওয়েব এবং জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনের জন্য এই টাস্কটিতে নিম্নলিখিত কনফিগারেশন অপশনগুলো রয়েছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
l2Normalize ফেরত আসা ফিচার ভেক্টরকে L2 নর্ম দিয়ে নর্মালাইজ করা হবে কিনা। এই অপশনটি শুধুমাত্র তখনই ব্যবহার করুন, যদি মডেলে আগে থেকেই কোনো নেটিভ L2_NORMALIZATION TFLite Op না থাকে। বেশিরভাগ ক্ষেত্রেই, এটি আগে থেকেই থাকে এবং তাই TFLite ইনফারেন্সের মাধ্যমেই L2 নর্মালাইজেশন সম্পন্ন হয়, এক্ষেত্রে এই অপশনটির কোনো প্রয়োজন হয় না। Boolean False
quantize ফেরত আসা এমবেডিংটি স্কেলার কোয়ান্টাইজেশনের মাধ্যমে বাইটে কোয়ান্টাইজ করা হবে কিনা। এমবেডিংগুলোকে অন্তর্নিহিতভাবে ইউনিট-নর্ম হিসেবে ধরে নেওয়া হয় এবং তাই যেকোনো ডাইমেনশনের মান [-1.0, 1.0] পরিসরের মধ্যে থাকবে বলে নিশ্চিত করা হয়। যদি এমনটা না হয়, তবে l2Normalize অপশনটি ব্যবহার করুন। Boolean False

ডেটা প্রস্তুত করুন

টেক্সট এমবেডার টেক্সট ( string ) ডেটা নিয়ে কাজ করে। এই টাস্কটি ডেটা ইনপুটের প্রিপ্রসেসিং পরিচালনা করে, যার মধ্যে টোকেনাইজেশন এবং টেনসর প্রিপ্রসেসিং অন্তর্ভুক্ত। সমস্ত প্রিপ্রসেসিং embed ফাংশনের মধ্যেই সম্পন্ন করা হয়। ইনপুট টেক্সটের জন্য আগে থেকে কোনো অতিরিক্ত প্রিপ্রসেসিংয়ের প্রয়োজন নেই।

const inputText = "The input text to be embedded.";

টাস্কটি চালান

টেক্সট এমবেডার অনুমান প্রক্রিয়া শুরু করতে embed ফাংশনটি ব্যবহার করে। টেক্সট এমবেডিংয়ের ক্ষেত্রে, এর অর্থ হলো ইনপুট টেক্সটের জন্য এমবেডিং ভেক্টরগুলো ফেরত দেওয়া।

নিম্নলিখিত কোডটি টাস্ক মডেল ব্যবহার করে প্রসেসিং সম্পাদনের পদ্ধতি প্রদর্শন করে।

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

ফলাফল পরিচালনা এবং প্রদর্শন করুন

টেক্সট এমবেডারটি একটি TextEmbedderResult আউটপুট করে, যাতে ইনপুট টেক্সটের জন্য এমবেডিংগুলোর (ফ্লোটিং-পয়েন্ট অথবা স্কেলার-কোয়ান্টাইজড) একটি তালিকা থাকে।

নিম্নলিখিতে এই টাস্কটির আউটপুট ডেটার একটি উদাহরণ দেখানো হলো:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

আপনি TextEmbedder.cosineSimilarity ফাংশনটি ব্যবহার করে দুটি এমবেডিংয়ের শব্দার্থগত সাদৃশ্য তুলনা করতে পারেন। একটি উদাহরণের জন্য নিম্নলিখিত কোডটি দেখুন।

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

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