MediaPipe Text Embedder टास्क की मदद से, टेक्स्ट डेटा को संख्या के तौर पर दिखाया जा सकता है. इससे टेक्स्ट के सिमैंटिक मतलब को कैप्चर किया जा सकता है. इन निर्देशों में, वेब और JavaScript ऐप्लिकेशन के लिए Text Embedder का इस्तेमाल करने का तरीका बताया गया है.
इस टास्क की सुविधाओं, मॉडल, और कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानने के लिए, खास जानकारी देखें.
कोड का उदाहरण
टेक्स्ट एम्बेडर के लिए दिए गए उदाहरण कोड में, इस टास्क को JavaScript में पूरी तरह से लागू करने का तरीका बताया गया है. इस कोड की मदद से, इस टास्क को टेस्ट किया जा सकता है. साथ ही, टेक्स्ट एम्बेड करने वाला अपना ऐप्लिकेशन बनाया जा सकता है. सिर्फ़ वेब ब्राउज़र का इस्तेमाल करके, टेक्स्ट एम्बेड करने वाले उदाहरण को देखा, चलाया, और उसमें बदलाव किया जा सकता है.
सेटअप
इस सेक्शन में, टेक्स्ट एम्बेडर का इस्तेमाल करने के लिए, डेवलपमेंट एनवायरमेंट और कोड प्रोजेक्ट सेट अप करने के मुख्य चरणों के बारे में बताया गया है. MediaPipe Tasks का इस्तेमाल करने के लिए, डेवलपमेंट एनवायरमेंट सेट अप करने के बारे में सामान्य जानकारी के लिए, वेब के लिए सेटअप गाइड देखें. इसमें प्लैटफ़ॉर्म के वर्शन से जुड़ी ज़रूरी शर्तें भी शामिल हैं.
JavaScript पैकेज
Text Embedder कोड, @mediapipe/tasks-text पैकेज के ज़रिए उपलब्ध है. इन लाइब्रेरी को, प्लैटफ़ॉर्म की सेटअप गाइड में दिए गए लिंक से ढूंढा और डाउनलोड किया जा सकता है.
स्थानीय स्टेजिंग के लिए ज़रूरी पैकेज इंस्टॉल करने के लिए, इस कोड का इस्तेमाल करें. इसके लिए, इस निर्देश का इस्तेमाल करें:
npm install @mediapipe/tasks-text
अगर आपको किसी सर्वर पर डिप्लॉय करना है, तो कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) सेवा का इस्तेमाल किया जा सकता है. जैसे, jsDelivr. इससे कोड को सीधे अपने एचटीएमएल पेज में जोड़ा जा सकता है. इसके लिए, यह तरीका अपनाएं:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
crossorigin="anonymous"></script>
</head>
मॉडल
MediaPipe Text Embedder टास्क के लिए, ट्रेनिंग दिया गया ऐसा मॉडल ज़रूरी है जो इस टास्क के साथ काम करता हो. टेक्स्ट एम्बेडर के लिए उपलब्ध ट्रेन किए गए मॉडल के बारे में ज़्यादा जानने के लिए, टास्क की खास जानकारी वाला मॉडल सेक्शन देखें.
कोई मॉडल चुनें और उसे डाउनलोड करें. इसके बाद, उसे अपने प्रोजेक्ट डायरेक्ट्री में सेव करें:
<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();
कॉन्फ़िगरेशन विकल्प
इस टास्क में, वेब और JavaScript ऐप्लिकेशन के लिए कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:
| विकल्प का नाम | ब्यौरा | वैल्यू की सीमा | डिफ़ॉल्ट मान |
|---|---|---|---|
l2Normalize |
क्या L2 नॉर्म का इस्तेमाल करके, दिखाए गए फ़ीचर वेक्टर को नॉर्मलाइज़ करना है. इस विकल्प का इस्तेमाल सिर्फ़ तब करें, जब मॉडल में पहले से कोई नेटिव L2_NORMALIZATION TFLite Op मौजूद न हो. ज़्यादातर मामलों में, ऐसा पहले से ही होता है. इसलिए, L2 नॉर्मलाइज़ेशन को TFLite इन्फ़रेंस के ज़रिए हासिल किया जाता है. इसके लिए, इस विकल्प की ज़रूरत नहीं होती. | Boolean |
False |
quantize |
क्या दिखाई गई एम्बेडिंग को स्केलर क्वांटाइज़ेशन के ज़रिए बाइट में क्वांटाइज़ किया जाना चाहिए. एम्बेडिंग को यूनिट-नॉर्म माना जाता है. इसलिए, किसी भी डाइमेंशन की वैल्यू [-1.0, 1.0] के बीच होती है. अगर ऐसा नहीं है, तो l2Normalize विकल्प का इस्तेमाल करें. | Boolean |
False |
डेटा तैयार करना
Text Embedder, टेक्स्ट (string) डेटा के साथ काम करता है. यह टास्क, डेटा इनपुट की प्रीप्रोसेसिंग करता है. इसमें टोकनाइज़ेशन और टेंसर प्रीप्रोसेसिंग शामिल है. सभी प्रीप्रोसेसिंग, embed फ़ंक्शन में हैंडल की जाती है. इनपुट टेक्स्ट को पहले से प्रोसेस करने की ज़रूरत नहीं होती.
const inputText = "The input text to be embedded.";
टास्क को रन करना
Text Embedder, अनुमानों को ट्रिगर करने के लिए embed फ़ंक्शन का इस्तेमाल करता है. टेक्स्ट एम्बेड करने के लिए, इसका मतलब है कि इनपुट टेक्स्ट के लिए एम्बेडिंग वेक्टर वापस लाना.
नीचे दिए गए कोड में, टास्क मॉडल का इस्तेमाल करके प्रोसेसिंग को पूरा करने का तरीका बताया गया है.
// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
inputText
);
नतीजों को मैनेज करना और दिखाना
Text Embedder, 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]);
टेक्स्ट एम्बेडर के उदाहरण कोड में बताया गया है कि टास्क से मिले एम्बेडर के नतीजों को कैसे दिखाया जाए. ज़्यादा जानकारी के लिए, उदाहरण देखें.