मुख्य सामग्री पर जाएँ

Text-Embedding-3-Large का अन्वेषण: नए OpenAI Embeddings पर एक व्यापक गाइड

डेवलपर्स और शोधकर्ताओं के लिए अत्याधुनिक AI embeddings के साथ NLP कार्यों को बेहतर बनाने हेतु हमारे गाइड में OpenAI के text-embedding-3-large और -small मॉडलों का अन्वेषण करें।
· 13 मि॰ पढ़ें

AI के साथ खोजें

मशीन लर्निंग और प्राकृतिक भाषा संसाधन (NLP) का परिदृश्य लगातार विकसित हो रहा है, और OpenAI निरंतर नवाचार का नेतृत्व कर रहा है।

इसके text-embedding-3-large और text-embedding-3-small मॉडलों का परिचय इस क्षेत्र में एक नए युग की शुरुआत करता है, जो यह बदलने वाला है कि डेवलपर्स और AI प्रैक्टिशनर टेक्स्ट विश्लेषण और एंबेडिंग कार्यों को कैसे अपनाते हैं।

कृत्रिम बुद्धिमत्ता की जटिल दुनिया में, एंबेडिंग जटिल मानवीय भाषा को ऐसी रूपरेखा में बदलने के लिए अहम है जिसे मशीनें समझ और संसाधित कर सकें। OpenAI का यह नया मॉडल डेवलपर्स और उभरते डेटा प्रैक्टिशनरों के लिए एक उल्लेखनीय प्रगति का प्रतिनिधित्व करता है।

यह लेख text-embedding-3-large और text-embedding-3-small मॉडलों को समझाने का उद्देश्य रखता है, उनके मूल कार्यों, विभिन्न अनुप्रयोगों और उन्हें प्रभावी ढंग से उपयोग करने के तरीकों पर प्रकाश डालते हुए।

टेक्स्ट एंबेडिंग की मूल बातें खोजते हुए और मॉडल की नई विशेषताओं व व्यावहारिक उपयोगों को रेखांकित करते हुए, लेख का उद्देश्य पाठकों को अपने प्रोजेक्ट्स में इस उन्नत टूल का उपयोग करने के लिए आवश्यक जानकारी प्रदान करना है।

इसके अतिरिक्त, यह मॉडल के साथ शुरुआत करने की मूल बातें कवर करेगा, एंबेडिंग कार्यों में सुधार के सुझाव साझा करेगा, और NLP क्षेत्र पर इस तकनीकी प्रगति के व्यापक प्रभाव पर चर्चा करेगा।

टेक्स्ट एंबेडिंग को समझना

नए मॉडल की विशिष्टताओं में जाने से पहले, टेक्स्ट एंबेडिंग का एक संक्षिप्त अवलोकन बेहतर समझ में सहायक होगा।

टेक्स्ट एंबेडिंग पाठ के संख्यात्मक निरूपण हैं जो शब्दों, वाक्यांशों या पूरे दस्तावेजों के अर्थ-संदर्भ (semantics) को पकड़ते हैं। ये भाव विश्लेषण, टेक्स्ट वर्गीकरण आदि जैसे कई NLP कार्यों में आधारभूत हैं।

OpenAI API के साथ टेक्स्ट एंबेडिंग का हमारा परिचय OpenAI API का उपयोग करके टेक्स्ट एंबेडिंग बनाने पर एक संपूर्ण गाइड प्रदान करता है। टेक्स्ट वर्गीकरण, सूचना पुनर्प्राप्ति, और सेमान्टिक समानता पहचान में इनके उपयोग जानें।

नीचे एक एंबेडिंग मॉडल का उपयोग करते हुए एक आरेख प्रस्तुत है:

  • बाईं ओर वे दस्तावेज़ हैं जिन्हें निरूपित करना है
  • बीच में एंबेडिंग मॉडल है, और
  • दाईं ओर प्रत्येक दस्तावेज़ के संबंधित एंबेडिंग हैं

Text embeddings illustration

टेक्स्ट एंबेडिंग का चित्रण

जो इस अवधारणा में नए हैं, वे हमारे Introduction to Embeddings with the OpenAI API कोर्स को देखें। यह बताता है कि OpenAI API के माध्यम से OpenAI की एंबेडिंग का उपयोग करते हुए टेक्स्टुअल डेटा से एंबेडिंग कैसे बनाई जाती है और वास्तविक दुनिया के अनुप्रयोग विकसित करना कैसे शुरू करें।

नए OpenAI एंबेडिंग्स एक नज़र में

25 जनवरी, 2024 को घोषित, ये मॉडल नवीनतम और सबसे शक्तिशाली एंबेडिंग मॉडल हैं, जो टेक्स्ट को उच्च-आयामी स्पेस में निरूपित करने के लिए डिज़ाइन किए गए हैं, जिससे पाठ को बेहतर तरीके से समझना आसान हो जाता है।

text-embedding-3-small लेटेंसी और स्टोरेज के लिए अनुकूलित है। दूसरी ओर, text-embedding-3-large उच्च सटीकता के लिए एक अच्छा विकल्प है, और हम नए dimensions पैरामीटर का लाभ उठाकर एंबेडिंग को मूल 3072 के आकार के बजाय 1536 पर रख सकते हैं, बिना कुल प्रदर्शन को प्रभावित किए।

बेंचमार्किंग विश्लेषण

रिलीज़ से पहले, text-embedding-ada-2 पिछले सभी OpenAI एंबेडिंग मॉडलों की लीडरबोर्ड में शीर्ष पर था, और निम्न तालिका इन तीन मॉडलों के बीच बेंचमार्किंग का एक त्वरित अवलोकन प्रदान करती है।

Model

Dimension

Max token

Knowledge cutoff

Pricing ($/1k tokens)

MIRACL average

MTEB average

ada v2

1536

8191

September 2021

0.0001

31.4

61.0

text-embedding-3-small

0.00002

44.0

62.3

text-embedding-3-large

3072

0.00013

54.9

64.6

दिए गए मीट्रिक्स से, हम MIRACL और MTEB दोनों बेंचमार्क पर ada v2 (text-embedding-ada-002) से text-embedding-3-large तक प्रदर्शन में सुधार देख सकते हैं। यह इंगित करता है कि अधिक आयामों (3072) वाला text-embedding-3-large अन्य दो की तुलना में बेहतर एंबेडिंग गुणवत्ता प्रदान करता है, जो सीधे बेहतर बेंचमार्क स्कोर से संबंधित है।


text-embedding-ada-002 और text-embedding-3-small (दोनों 1536) से text-embedding-3-large (3072) तक आयामों में वृद्धि एक अधिक जटिल मॉडल का सुझाव देती है, जो अपनी एंबेडिंग में विशेषताओं के एक समृद्ध सेट को कैप्चर कर सकता है। हालाँकि, इसके साथ 1,000 टोकन संसाधन पर उच्चतर मूल्य भी जुड़ा है, जो प्रदर्शन और लागत के बीच एक ट्रेड-ऑफ को इंगित करता है।


कार्य की विशिष्ट आवश्यकताओं (जैसे बहुभाषी क्षमताओं की आवश्यकता, एंबेड किए जाने वाले टेक्स्ट की जटिलता, या बजट सीमाएँ) के आधार पर, कोई भिन्न मॉडल चुन सकता है।

ऐसे कार्यों के लिए जिनमें कई भाषाओं और कार्यों में उच्च-गुणवत्ता वाली एंबेडिंग की आवश्यकता होती है, अधिक लागत के बावजूद text-embedding-3-large वांछनीय हो सकता है। इसके विपरीत, जहाँ बजट सीमाएँ कड़ी हों या जहाँ अत्यधिक उच्च प्रिसीजन उतना महत्वपूर्ण न हो, वहाँ text-embedding-ada-002 या text-embedding-3-small अधिक उपयुक्त विकल्प हो सकते हैं।


Text-Embedding-3-Large के अनुप्रयोग

एंबेडिंग तकनीकें आधुनिक प्राकृतिक भाषा संसाधन और समझ के कई अनुप्रयोगों के लिए अत्यंत लाभकारी रही हैं। text-embedding-3-large जैसे अधिक शक्तिशाली मॉडल और text-embedding-3-small जैसे अधिक किफायती विकल्पों के बीच चयन NLP अनुप्रयोगों के प्रदर्शन और लागत-प्रभावशीलता को प्रभावित कर सकता है।

नीचे दोनों मॉडलों के उपयोग मामलों के तीन-तीन उदाहरण दिए गए हैं, जो वास्तविक दुनिया के परिदृश्यों में उनकी बहुमुखी प्रतिभा और प्रभाव को दर्शाते हैं।

text-embedding-3-large के अनुप्रयोग

Applications of text-embedding-3-large (images generated using GPT-4)

text-embedding-3-large के अनुप्रयोग (छवियाँ GPT-4 द्वारा जनित)

बहुभाषी ग्राहक सहायता स्वचालन

18 विभिन्न भाषाओं को समझने और संसाधित करने में अपनी श्रेष्ठ क्षमता के साथ, text-embedding-3-large वैश्विक कंपनियों के लिए ग्राहक सहायता चैटबॉट्स और स्वचालित प्रतिक्रिया प्रणालियों को शक्ति दे सकता है, विविध भाषाई पृष्ठभूमियों में सटीक, संदर्भ-सचेत समर्थन सुनिश्चित करते हुए।

उन्नत सेमान्टिक सर्च इंजन

अपनी उच्च-आयामी एंबेडिंग का लाभ उठाते हुए, text-embedding-3-large सर्च इंजन एल्गोरिदम को बेहतर बनाता है, जिससे वे सर्च क्वेरी की बारीकियों को बेहतर समझ सकें और विशेषकर विधि या चिकित्सा अनुसंधान जैसे विशिष्ट क्षेत्रों में अधिक प्रासंगिक, संदर्भ-संगत परिणाम प्राप्त कर सकें।

क्रॉस-लिंगुअल कंटेंट रिकमेंडेशन सिस्टम

स्ट्रीमिंग सेवाओं या समाचार एग्रीगेटरों जैसे बहुभाषी सामग्री होस्ट करने वाले प्लेटफ़ॉर्म के लिए, text-embedding-3-large कई भाषाओं में उपयोगकर्ता प्राथमिकताओं और सामग्री का विश्लेषण कर सकता है, भाषा बाधाओं की परवाह किए बिना उपयोगकर्ताओं को अत्यधिक प्रासंगिक सामग्री की सिफारिश करते हुए।

text-embedding-3-small के अनुप्रयोग

Applications of text-embedding-3-small (Image generated using GPT-4)

text-embedding-3-small के अनुप्रयोग (छवि GPT-4 द्वारा जनित)

किफायती भाव विश्लेषण

स्टार्टअप्स और मध्यम आकार के व्यवसाय जो सोशल मीडिया मॉनिटरिंग या फीडबैक विश्लेषण के माध्यम से ग्राहक भावना समझना चाहते हैं, उनके लिए text-embedding-3-small एक बजट-अनुकूल फिर भी प्रभावी समाधान प्रदान करता है, जिससे जनमत और ग्राहक संतुष्टि का अनुमान लगाया जा सके।

स्केलेबल सामग्री वर्गीकरण

ब्लॉग्स या ई-कॉमर्स साइट्स जैसी बड़े डेटा वॉल्यूम वाली सामग्री प्लेटफ़ॉर्म text-embedding-3-small का उपयोग सामग्री या उत्पादों को स्वचालित रूप से वर्गीकृत करने के लिए कर सकते हैं। इसकी दक्षता और कम लागत इसे विशाल डेटासेट्स को बिना सटीकता से समझौता किए संभालने के लिए आदर्श बनाती है।

कुशल भाषा-शिक्षण उपकरण

ऐसी शैक्षिक ऐप्स जिन्हें शब्द-मतलब मिलान या व्याकरण जाँच जैसे भाषा-शिक्षण अभ्यास प्रदान करने के लिए स्केलेबल और किफायती समाधानों की आवश्यकता होती है, वे text-embedding-3-small से लाभान्वित हो सकती हैं। प्रदर्शन और किफायतीपन के इसके संतुलन से इंटरैक्टिव, भाषा-केंद्रित शैक्षिक सामग्री का विकास संभव होता है।

ये अनुप्रयोग दर्शाते हैं कि text-embedding-3-large और text-embedding-3-small को विभिन्न क्षेत्रों में कैसे इष्टतम रूप से तैनात किया जा सकता है, प्रत्येक अनुप्रयोग की विशिष्ट जरूरतों के साथ उनकी ताकतों को संरेखित करते हुए बेहतर प्रदर्शन, उपयोगकर्ता अनुभव और लागत दक्षता के लिए।

नए OpenAI एंबेडिंग का उपयोग: चरण-दर-चरण मार्गदर्शिका

अब हमारे पास दस्तावेज़ समानता के एक परिदृश्य में text-embedding-3-large, text-embedding-3-small और ada-v2—तीनों—को लागू करने के लिए सभी टूल उपलब्ध हैं।

इस ट्यूटोरियल का सारा कोड एक DataLab वर्कबुक में उपलब्ध है। इस वर्कबुक की एक कॉपी बनाएँ और बिना कुछ इंस्टॉल किए सीधे अपना कोड चलाएँ।

डेटा के बारे में

  • यह CORD-19 डेटा सेट है—COVID-19, SARS-CoV-2, और संबंधित कोरोनावायरस पर 59,000 से अधिक विद्वतापूर्ण लेखों का संसाधन, जिनमें से 48,000 से अधिक पूर्ण-पाठ सहित हैं।
  • यह डेटा व्हाइट हाउस और प्रमुख अनुसंधान समूहों के एक गठबंधन द्वारा निःशुल्क उपलब्ध कराया गया है, ताकि इस संक्रामक रोग के खिलाफ चल रही लड़ाई में वैश्विक अनुसंधान अंतर्दृष्टियाँ उत्पन्न कर सके।
  • इसे Kaggle के इस पेज से डाउनलोड किया जा सकता है।
  • डेटासेट के बारे में और विवरण इसी पेज पर मिल सकते हैं।

आगे बढ़ने से पहले, इस प्रोजेक्ट की सफलता के लिए निम्नलिखित लाइब्रेरीज़ को इंस्टॉल और इम्पोर्ट करना ज़रूरी है।

हम %%bash स्टेटमेंट का उपयोग करके, विस्मयादिबोधक (!) चिह्न का उपयोग किए बिना कई लाइब्रेरी इंस्टॉल कर सकते हैं।

%%bash
pip -q install tiktoken
pip -q install openai

अब, लाइब्रेरीज़ को निम्नानुसार इम्पोर्ट किया जा सकता है:

import os
import tiktoken
import numpy as np
import pandas as pd
from openai import OpenAI
from sklearn.metrics.pairwise import cosine_similarity

आइए प्रत्येक लाइब्रेरी की भूमिका समझते हैं:

  • os: फाइल सिस्टम में पढ़ने या लिखने जैसी ऑपरेटिंग सिस्टम-निर्भर कार्यक्षमता उपयोग करने का तरीका प्रदान करता है।
  • tiktoken: वैज्ञानिक दस्तावेजों के प्रसंस्करण के लिए विशिष्ट टोकनाइजेशन कार्यों को संभालता है।
  • numpy (np): बड़े, बहु-आयामी एरेज़ और मैट्रिसेस के लिए सपोर्ट देता है, साथ ही इन एरेज़ पर ऑपरेट करने के लिए उच्च-स्तरीय गणितीय फंक्शनों का बड़ा संग्रह—जो वैज्ञानिक कंप्यूटिंग के लिए अहम है।
  • pandas (pd): संख्यात्मक तालिकाओं और टाइम सीरीज़ में हेरफेर के लिए डेटा स्ट्रक्चर और ऑपरेशन्स प्रदान करता है, जो वैज्ञानिक डेटासेट्स को संभालने के लिए आवश्यक है।
  • openai.OpenAI: OpenAI के API के साथ इंटरफ़ेस का काम करता है, जिससे वैज्ञानिक टेक्स्ट के लिए एंबेडिंग जनरेट करने जैसे कार्यों हेतु मशीन लर्निंग मॉडलों से इंटरैक्शन संभव होता है।
  • sklearn.metrics.pairwise.cosine_similarity: वेक्टरों के बीच कोसाइन समानता की गणना करता है, जो वैज्ञानिक दस्तावेज़ समानता विश्लेषण में उपयोगी है।

डेटा एक्सप्लोरेशन

मूल डेटा फ़्रेम 1GB से अधिक का है, और सरलता के लिए केवल 1000 रैंडम ऑब्ज़र्वेशन्स का एक सैंपल लोड किया गया है।

scientific_docs = pd.read_parquet("./data/cord19_df_sample.parquet")

.head() फ़ंक्शन का उपयोग करके, हम डेटा की पहली 2 पंक्तियाँ देख सकते हैं, और परिणाम नीचे के एनीमेशन में है।

scientific_docs.head(2)

डेटा की पहली दो पंक्तियाँ

किसी दिए गए वैज्ञानिक दस्तावेज़ का बॉडी, शीर्षक और सार उस दस्तावेज़ का प्रतिनिधित्व करने के लिए पर्याप्त हो सकते हैं। प्रत्येक दस्तावेज़ के लिए एकल टेक्स्टुअल निरूपण पाने हेतु इन तीन विशेषताओं को जोड़ा (concatenate) जाता है।

उससे पहले, इन तीनों कॉलम में मिसिंग वैल्यू का प्रतिशत देखते हैं:

percent_missing = scientific_docs.isnull().sum() * 100 / len(scientific_docs)
percent_missing

Percentage of missing data in the  targeted columns

लक्षित कॉलमों में मिसिंग डेटा का प्रतिशत

उपरोक्त छवि से, हम देखते हैं कि शीर्षक और सार में क्रमशः 10.5% और 12.4% मिसिंग वैल्यू हैं। इसलिए, संयोजन से पहले उन मिसिंग वैल्यू को खाली स्ट्रिंग्स से भरना महत्वपूर्ण है ताकि सूचना की हानि से बचा जा सके।

मिसिंग वैल्यू भरने और कॉलमों को जोड़ने की संपूर्ण प्रक्रिया निम्नलिखित फ़ंक्शन से हासिल की जाती है।

def concatenate_columns_with_null_handling(df, body_text_column,
                                       	abstract_column,
                                       	title_column,
                                       	new_col_name):
    
	df[new_col_name] = df[body_text_column].fillna('') + df[abstract_column].fillna('') + df[title_column].fillna('')
    
	return df

मूल डेटा पर संयोजन फ़ंक्शन चलाने और पहली 3 पंक्तियाँ जाँचने के बाद, हम देख सकते हैं कि संयोजन सफल रहा है।

new_scientific_docs = concatenate_columns_with_null_handling(scientific_docs,
                                                         	"body_text",
                                                         	"abstract",
                                                         	"title",
                                                         	"concatenated_text")
new_scientific_docs.head(3)

नया जोड़ा गया कॉलम concatenated_text है।

नए कॉलम के साथ पहली 3 पंक्तियाँ

अगला चरण इस नए कॉलम पर इस लेख में उल्लिखित विभिन्न एंबेडिंग मॉडलों का उपयोग करते हुए एंबेडिंग लागू करना है। लेकिन उससे पहले टोकनों की लंबाई के वितरण को देखते हैं।

इस विश्लेषण का उद्देश्य मॉडल की अधिकतम टोकन सीमा की तुलना किसी दिए गए दस्तावेज़ के वास्तविक टोकन संख्या से करना है।

पर पहले, हमें प्रत्येक दस्तावेज़ के भीतर कुल टोकन की संख्या गिननी होगी, जो सहायक फ़ंक्शन num_tokens_from_text और cl100k_base एन्कोडर का उपयोग करके की जाती है।

def num_tokens_from_text(text: str, encoding_name="cl100k_base"):
    	"""
    	Returns the number of tokens in a text string.
    	"""
    	encoding = tiktoken.get_encoding(encoding_name)
    	num_tokens = len(encoding.encode(text))
    	return num_tokens

कुल डेटासेट पर फ़ंक्शन लागू करने से पहले, देखते हैं कि यह निम्नलिखित टेक्स्ट पर कैसे काम करता है: This article is about new OpenAI Embeddings.

text = "This article is about new OpenAI Embeddings"
num_tokens = num_tokens_from_text(text)
print(f"Number of tokens: {num_tokens}")

उपरोक्त कोड को सफलतापूर्वक चलाने के बाद, हम देखते हैं कि टेक्स्ट में 10 टोकन हैं।

Number of tokens in the text

टेक्स्ट में टोकनों की संख्या

विश्वास के साथ, हम निम्नानुसार लैम्ब्डा एक्सप्रेशन का उपयोग करके पूरे डेटा फ्रेम के टेक्स्ट पर यह फ़ंक्शन लागू कर सकते हैं:

new_scientific_docs['num_tokens'] = new_scientific_docs["concatenated_text"].apply(lambda x: num_tokens_from_text(x))

हम उन दस्तावेज़ों की कुल संख्या गिन सकते हैं जिनमें 8191 से अधिक टोकन हैं, इसके लिए सभी टोकन की संख्या को फ़िल्टर करके देखते हैं कि कौन-सा वास्तविक टोकन सीमा 8191 से अधिक है।

smaller_tokens_docs = new_scientific_docs[new_scientific_docs['num_tokens'] <= 8191]
len(smaller_tokens_docs)

⇒ आउटपुट: 764

इसका अर्थ है कि 1000 में से 764 दस्तावेज़ अधिकतम टोकन सीमा की आवश्यकता को पूरा करते हैं, और सरलता के लिए हम इन्हीं दस्तावेज़ों का उपयोग कर रहे हैं।

शेष दस्तावेज़ों के सेट—जिनमें 8191 से अधिक टोकन हैं—को संसाधित करने के लिए उन्नत तकनीकों को लागू किया जा सकता है।

ऐसी तकनीकों में से एक एकल दस्तावेज़ की सभी एंबेडिंग्स का औसत लेना है। दूसरी तकनीक दस्तावेज़ के पहले 8191 टोकन लेने की होती है। यह तरीका कुशल नहीं है क्योंकि इससे सूचना की हानि हो सकती है।

सुनिश्चित करें कि डेटा फ्रेम का इंडेक्स रीसेट हो ताकि वह शून्य से शुरू हो।

smaller_tokens_docs_reset = smaller_tokens_docs.reset_index(drop=True)

एंबेडिंग्स चलाएँ

अब सभी आवश्यकताएँ पूरी हो चुकी हैं ताकि सभी दस्तावेज़ों का एंबेडिंग निरूपण प्राप्त किया जा सके, और यह प्रत्येक एंबेडिंग मॉडल के लिए किया जाएगा।

पहला चरण OpenAI क्रेडेंशियल प्राप्त करना और क्लाइंट को निम्नानुसार कॉन्फ़िगर करना है:

os.environ["OPENAI_API_KEY"] = "YOUR KEY"
client = OpenAI()

इसके बाद, निम्न सहायक फ़ंक्शन एंबेडिंग मॉडल और एंबेड किए जाने वाले टेक्स्ट को प्रदान करके एंबेडिंग जनरेट करने में मदद करता है।

def get_embedding(text_to_embbed, model_ID):
    
	text = text_to_embbed.replace("\n", " ")
	return client.embeddings.create(input = [text_to_embbed],
                                	model=model_ID).data[0].embedding

अब एक नया डेटा फ़्रेम बनाया गया है, जिसमें तीन अतिरिक्त कॉलम हैं जो तीनों मॉडलों की एंबेडिंग्स से संबंधित हैं:

  • text-embedding-3-small
  • text-embedding-3-large
  • text-embedding-ada-002
smaller_tokens_docs_reset['text-embedding-3-small'] = smaller_tokens_docs_reset["concatenated_text"].apply(lambda x: get_embedding(x, "text-embedding-3-small"))

smaller_tokens_docs_reset['text-embedding-3-large'] = smaller_tokens_docs_reset["concatenated_text"].apply(lambda x: get_embedding(x, "text-embedding-3-large"))

smaller_tokens_docs_reset['text-embedding-ada-002'] = smaller_tokens_docs_reset["concatenated_text"].apply(lambda x: get_embedding(x, "text-embedding-ada-002"))

उपरोक्त कोड सफलतापूर्वक चलाने के बाद, हम देख सकते हैं कि संबंधित एंबेडिंग कॉलम जोड़े जा चुके हैं।

smaller_tokens_docs_reset.head(1)

image4.gif

संबंधित एंबेडिंग कॉलमों वाला नया डेटा फ़्रेम

समानता खोज

यह खंड ऊपर दिए गए प्रत्येक एंबेडिंग दृष्टिकोण पर कोसाइन समानता तकनीक का उपयोग करता है, ताकि किसी विशिष्ट दस्तावेज़ के लिए शीर्ष 3 समान दस्तावेज़ ढूंढ़े जा सकें।

निम्न सहायक फ़ंक्शन चार मुख्य पैरामीटर लेता है:

  • वर्तमान डेटा फ़्रेम
  • उस टेक्स्ट का इंडेक्स जिसके सबसे समान दस्तावेज़ हमें ढूंढ़ने हैं
  • उपयोग किए जाने वाले विशिष्ट एंबेडिंग
  • वांछित शीर्ष समान दस्तावेज़ों की संख्या, जो डिफ़ॉल्ट रूप से 3 है।
def find_top_N_similar_documents(df, chosen_index,
                             	embedding_column_name,
                             	top_N=3):
    
	chosen_document_embedding = np.array(df.iloc[chosen_index][embedding_column_name]).reshape(1, -1)
	embedding_matrix = np.vstack(df[embedding_column_name])
	similarity_scores = cosine_similarity(chosen_document_embedding, embedding_matrix)[0]
    
	df_temp = df.copy()
	df_temp['similarity_to_chosen'] = similarity_scores
	similar_documents = df_temp.drop(index=chosen_index).sort_values(by='similarity_to_chosen', ascending=False)
	top_N_similar = similar_documents.head(top_N)
    
	return top_N_similar[[concatenated_text, 'similarity_to_chosen']]

अगले भाग में, हम पहले दस्तावेज़ (index=0) के सबसे समान दस्तावेज़ ढूंढ़ रहे हैं।

पहला दस्तावेज़ इस प्रकार दिखता है:

chosen_index = 0

first_document_data = smaller_tokens_docs_reset.iloc[0]["concatenated_text"]
print(first_document_data)

image5.gif

पहले दस्तावेज़ की सामग्री (संयोजित संस्करण)

समानता खोज फ़ंक्शन को निम्नानुसार चलाया जा सकता है:

top_3_similar_3_small = find_top_N_similar_documents(smaller_tokens_docs_reset,
                                                 	chosen_index,
                                                 	"text-embedding-3-small")

top_3_similar_3_large= find_top_N_similar_documents(smaller_tokens_docs_reset,
                                                 	chosen_index,
                                                 	"text-embedding-3-large")

top_3_similar_ada_002 = find_top_N_similar_documents(smaller_tokens_docs_reset,
                                                 	chosen_index,
                                                 	"text-embedding-ada-002")

समानता कार्यों के प्रसंस्करण के बाद, परिणाम निम्नानुसार प्रदर्शित किए जा सकते हैं:

print("Top 3 Similar Documents with :")
print("--> text-embedding-3-small")
print(top_3_similar_3_small)
print("\n")

print("--> text-embedding-3-large")
print(top_3_similar_3_large)
print("\n")

print("--> text-embedding-ada-002")
print(top_3_similar_ada_002)
print("\n")

Top 3 most similar documents using each embedding model

प्रत्येक एंबेडिंग मॉडल का उपयोग करते हुए शीर्ष 3 सबसे समान दस्तावेज़

परिणाम का अवलोकन

"text-embedding-3-small" मॉडल लगभग 0.54 के आसपास मध्यम समानता स्कोर दिखाता है, जबकि "text-embedding-3-large" के स्कोर थोड़े अधिक हैं, जो समानता को बेहतर कैप्चर करने का संकेत देते हैं।

"text-embedding-ada-002" मॉडल में समानता स्कोर काफ़ी उच्च हैं, जहाँ शीर्ष स्कोर 0.85 के क़रीब है, जो चुने गए दस्तावेज़ के साथ बहुत मजबूत समानता का संकेत देता है।

हालाँकि, डॉक्यूमेंट 372 सभी मॉडलों में एक सामान्य शीर्ष परिणाम है, जो क्वेरी के प्रति इसकी सुसंगत प्रासंगिकता की ओर इशारा करता है। मॉडलों के बीच स्कोर में भिन्नता यह उजागर करती है कि समानता परिणामों पर एंबेडिंग मॉडल के चयन का क्या प्रभाव पड़ता है।

निष्कर्ष

संक्षेप में, OpenAI के नए text-embedding-3-large और text-embedding-3-small मॉडल प्राकृतिक भाषा संसाधन के क्षेत्र में एक महत्वपूर्ण छलांग का प्रतिनिधित्व करते हैं, जो टेक्स्ट डेटा का अधिक सूक्ष्म और उच्च-आयामी निरूपण प्रदान करते हैं।

जैसा कि लेख में प्रदर्शित किया गया, इन मॉडलों के बीच चयन दस्तावेज़ समानता, भाव विश्लेषण, और बहुभाषी समर्थन प्रणालियों जैसे विभिन्न NLP कार्यों के परिणामों को काफी प्रभावित कर सकता है। जहाँ text-embedding-3-large अपने अधिक आयामों के कारण उच्च सटीकता देता है, वहीं text-embedding-3-small लागत-संवेदी अनुप्रयोगों के लिए दक्षता और प्रदर्शन का संतुलन प्रदान करता है।

बेंचमार्किंग विश्लेषण से पता चला कि text-embedding-3-large ने अपने पूर्ववर्तियों को पीछे छोड़ दिया है और इस क्षेत्र में एक नया मानक स्थापित किया है। इन मॉडलों के वास्तविक दुनिया के अनुप्रयोग व्यापक हैं—ग्राहक सहायता को बेहतर बनाने से लेकर परिष्कृत सर्च इंजन और कंटेंट रिकमेंडेशन सिस्टम्स को शक्ति देने तक।

प्रस्तुत विस्तृत मार्गदर्शिका के माध्यम से, क्षेत्र के प्रैक्टिशनर कार्य की जटिलता, बजट सीमाएँ, और बहुभाषी क्षमताओं की आवश्यकता के आधार पर किस मॉडल का उपयोग करना है, इस पर सूचित निर्णय लेने में सक्षम हैं।

अंततः, मॉडल का चयन मौजूदा प्रोजेक्ट की विशिष्ट मांगों के अनुरूप होना चाहिए—उच्च निष्ठा की आवश्यकता वाले कार्यों के लिए text-embedding-3-large की ताकत का लाभ उठाते हुए और अधिक सामान्य प्रयोजनों के लिए text-embedding-3-small का। इन मॉडलों का आगमन AI तकनीक को आगे बढ़ाने और मशीन लर्निंग टूल्स के निरंतर विकास के प्रति OpenAI की प्रतिबद्धता को रेखांकित करता है।

यहाँ से आगे क्या?

हमारा लेख The OpenAI API in Python एक चीट शीट है जो आपको सबसे शक्तिशाली AI APIs में से एक—OpenAI API—का लाभ उठाने की मूल बातें सीखने में मदद करता है।

हमारा कोड-अलॉन्ग सत्र Fine-tuning GPT3.5 with OpenAI API यह बताता है कि OpenAI API और Python का उपयोग करके GPT3.5 का फाइन-ट्यूनिंग कैसे शुरू करें, कब बड़े भाषा मॉडलों का फाइन-ट्यूनिंग लाभकारी हो सकता है, OpenAI API में फाइन-ट्यूनिंग टूल्स का उपयोग कैसे करें, और अंततः फाइन-ट्यूनिंग की वर्कफ़्लो को समझें।

Zoumana Keita

लेखक

Zoumana Keita

बहु-प्रतिभाशाली डेटा साइंटिस्ट जो अपना ज्ञान साझा करने और समुदाय को वापस देने में आनंद लेते हैं, ज़ूमाना YouTube पर कंटेंट क्रिएटर हैं और Medium पर शीर्ष तकनीकी लेखक हैं। उन्हें बोलने, कोडिंग करने और पढ़ाने में खुशी मिलती है। ज़ूमाना के पास दो मास्टर डिग्री हैं—पहली पेरिस, फ्रांस से कंप्यूटर साइंस में, मशीन लर्निंग पर केंद्रित, और दूसरी अमेरिका के टेक्सास टेक यूनिवर्सिटी से डेटा साइंस में। उनका करियर फ्रांस में Groupe OPEN में सॉफ्टवेयर डेवलपर के रूप में शुरू हुआ, जिसके बाद वे IBM में मशीन लर्निंग कंसल्टेंट बने, जहाँ उन्होंने बीमा कंपनियों के लिए एंड-टू-एंड एआई समाधान विकसित किए। ज़ूमाना ने Axionable, पेरिस और मॉन्ट्रियल स्थित पहली Sustainable AI स्टार्टअप, से जुड़कर डेटा साइंटिस्ट के रूप में काम किया और फ्रांस, मॉन्ट्रियल, सिंगापुर और स्विट्ज़रलैंड के क्लाइंट्स के लिए मुख्यतः NLP उपयोग मामलों पर आधारित एआई प्रोडक्ट्स लागू किए। इसके अतिरिक्त, अपने समय का 5% उन्होंने अनुसंधान और विकास को समर्पित किया। वर्तमान में, वे IFC - The World Bank Group में सीनियर डेटा साइंटिस्ट के रूप में कार्यरत हैं।

विषय