एम्बेडिंग धोरण: सिमेंटिक शोधासाठी all-mpnet-base-v2
हा लेख आम्ही आमच्या SEO पाईपलाइनमध्ये सिमेंटिक शोधाची शक्ती देण्यासाठी all-mpnet-base-v2 सेंटन्स ट्रान्सफॉर्मर मॉडेल कसे वापरतो हे स्पष्ट करतो.
समस्या: क्वेरींची उत्पादनांशी जुळणी करणे
जेव्हा वापरकर्ते "मिनी पीसी" किंवा "लहान संगणक" शोधतात, तेव्हा त्यांचा अर्थ समान असतो, जरी त्यामध्ये कोणतीही कीवर्ड्स सामाईक नसली तरीही. येथे पारंपारिक कीवर्ड जुळणी अयशस्वी होते. आम्हाला सिमेंटिक एम्बेडिंग्ज - दाट वेक्टर प्रतिनिधित्वांची गरज आहे जी केवळ शब्द नव्हे तर अर्थही पकडतात.
आमची SEO पाईपलाइन ६५,०००+ शोध क्वेरी प्रक्रिया करते आणि त्यासाठी हे करणे आवश्यक आहे:
-
क्वेरी पृष्ठांसाठी समान क्वेरी एकत्र क्लस्टर करणे
-
अर्थावर आधारित क्वेरींची उत्पादनांशी जुळणी करणे
-
संबंधित शोध शोधणे
-
फ्रेज-टू-फिल्टर मॅपिंग विस्तृत करणे
मॉडेल: all-mpnet-base-v2
आम्ही all-mpnet-base-v2 वापरतो, एक सेंटन्स ट्रान्सफॉर्मर मॉडेल जो:
-
७६८-डायमेंशनल वेक्टर्स आउटपुट करतो
-
१ अब्ज+ वाक्य जोड्यांवर प्रशिक्षित केलेला आहे
-
३८४ टोकन पर्यंतचे अनुक्रम हाताळू शकतो
हा मॉडेल मजकूर एका दाट वेक्टर स्पेसमध्ये मॅप करतो जिथे सिमेंटिकली समान मजकूराची कोसाइन समानता जास्त असते.
आम्ही ते कसे वापरतो
१. क्वेरी एम्बेड करणे
आम्ही सर्व शोध क्वेरी ७६८-डायमेंशनल वेक्टरमध्ये एम्बेड करतो:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-mpnet-base-v2")
embeddings = model.encode(queries)
प्रत्येक क्वेरी ७६८-फ्लोट वेक्टर (३,०७२ बाइट्स) बनते. ६५,००० क्वेरीसाठी, ते ~१९० एमबी एम्बेडिंग्ज आहेत.
२. क्वेरी क्लस्टरिंग
आम्ही समानतेनुसार क्वेरी क्लस्टर करतो:
-
ट्रॅफिकनुसार शीर्ष १,००० क्वेरी क्लस्टर केंद्र म्हणून निवडा
-
सर्व ६५K क्वेरी आणि या १K केंद्रांमधील कोसाइन समानता कम्प्युट करा
-
समानता ≥ ०.८५ असलेल्या क्वेरी त्या क्लस्टरमध्ये सामील होतात
-
क्लस्टर न केलेल्या क्वेरी सिंगलटन क्लस्टर बनतात
हे क्वेरी पृष्ठे तयार करते जिथे प्रत्येक पृष्ठ समान शोधांच्या क्लस्टरचे प्रतिनिधित्व करते.
तपशीलांसाठी क्वेरी क्लस्टरिंग अल्गोरिदम पहा.
३. उत्पादन जुळणी
आम्ही उत्पादन नावे आणि वैशिष्ट्ये एम्बेड करतो, नंतर कोसाइन समानता वापरून क्वेरींची उत्पादनांशी जुळणी करतो. क्वेरीशी सर्वात जास्त समानता असलेली उत्पादने त्या क्वेरी पृष्ठावर दिसतात.
तपशीलांसाठी उत्पादन जुळणी अल्गोरिदम पहा.
४. फ्रेज मॅपिंग विस्तृत करणे
फिल्टर एक्सट्रॅक्शनसाठी समान फ्रेज शोधण्यासाठी आम्ही एम्बेडिंग्ज वापरतो. उदाहरणार्थ, जर "मिनी पीसी" साइझ फिल्टरशी मॅप होत असेल, तर आम्हाला कळेल की "लहान संगणक" देखील तसेच करावे.
तपशीलांसाठी फ्रेज मॅपिंग विस्तार पहा.
स्टोरेज: NumPy अॅरे
आम्ही एम्बेडिंग्ज NumPy .npy फाइल म्हणून साठवतो:
import numpy as np
# जतन करा
np.save("embeddings.npy", embeddings)
# लोड करा (मेमरी-मॅप्ड)
embeddings = np.load("embeddings.npy", mmap_mode='r')
NumPy का?
-
मेमरी मॅपिंग सह जलद लोडिंग
-
समानता गणनेसाठी नेटिव्ह अॅरे ऑपरेशन्स
-
कॉम्पॅक्ट बायनरी फॉरमॅट (~१९० एमबी ६५K क्वेरीसाठी)
इंक्रिमेंटल एम्बेडिंग
आम्ही प्रत्येक वेळी सर्व क्वेरी पुन्हा एम्बेड करत नाही. आमचे इंक्रिमेंटल एम्बेडिंग:
- विद्यमान एम्बेडिंग्ज लोड करते
- क्वेरी की (मजकूर + मेटाडेटा) तुलना करते
- केवळ नवीन/बदललेल्या क्वेरी एम्बेड करते
- विद्यमान अॅरेमध्ये जोडते
जेव्हा फक्त काही क्वेरी बदलतात तेव्हा हे प्रक्रिया वेळ लक्षणीयरीत्या कमी करते.
मल्टी-सर्व्हर आर्किटेक्चर
एम्बेडिंग्ज एकाधिक सर्व्हरवर वापरली जातात:
- बॅच पाईपलाइन: क्वेरी आणि उत्पादनांमधून एम्बेडिंग्ज तयार करते
- सर्च सर्व्हिस: संबंधित शोध API साठी एम्बेडिंग्ज लोड करते
- मुख्य वेब सर्व्हर: उत्पादन जुळणीसाठी एम्बेडिंग्ज वापरते
सर्व्हरनुसार स्टोरेज बदलते:
-
NumPy फाइल्स: बॅच पाईपलाइन (जलद स्थानिक प्रवेश)
-
Valkey RediSearch: सर्च सर्व्हिस (वेक्टर समानता शोध)
Valkey इंटिग्रेशन तपशीलांसाठी सर्च सर्व्हिस आर्किटेक्चर पहा.
SEO पाईपलाइनशी एकत्रीकरण
एम्बेडिंग्ज पाईपलाइनच्या अनेक चरणांना शक्ती देतात:
- चरण ०: स्रोत डेटा एम्बेड करा - उत्पादने, भाग, लेख
- चरण ३b: क्वेरी एम्बेड करा - सर्व शोध क्वेरी
- चरण ४: फ्रेज मॅपिंग विस्तृत करा - समान फ्रेज शोधा
- चरण ५: क्वेरी क्लस्टर करा - क्वेरी पृष्ठांमध्ये गट करा
- चरण ६: उत्पादन जुळणी करा - क्वेरी-उत्पादन जुळणी
- चरण ८: संबंधित शोध व्युत्पन्न करा - संबंधित क्वेरी शोधा
संपूर्ण प्रवाहासाठी SEO पाईपलाइन ओव्हरव्ह्यू पहा.
संदर्भ
मॉडेल डॉक्युमेंटेशन
-
all-mpnet-base-v2 मॉडेल कार्ड - हगिंग फेस
-
सेंटन्स ट्रान्सफॉर्मर डॉक्युमेंटेशन - अधिकृत दस्तऐवज
-
सेंटन्स ट्रान्सफॉर्मर पेपर - रीमर्स आणि गुरेविच, २०१९
तांत्रिक संकल्पना
-
वर्ड एम्बेडिंग्ज - विकिपीडिया
-
कोसाइन समानता - विकिपीडिया
-
NumPy मेमरी-मॅप्ड फाइल्स - NumPy दस्तऐवज
संबंधित लेख
-
SEO पाईपलाइन ओव्हरव्ह्यू - संपूर्ण पाईपलाइन आर्किटेक्चर
-
क्वेरी क्लस्टरिंग अल्गोरिदम - आम्ही ६५K क्वेरी कशा क्लस्टर करतो
-
सर्च सर्व्हिस आर्किटेक्चर - Valkey RediSearch एकत्रीकरण
-
उत्पादन जुळणी अल्गोरिदम - सिमेंटिक जुळणी
-
फ्रेज मॅपिंग विस्तार - फिल्टरसाठी एम्बेडिंग्ज वापरणे
सारांश
आम्ही मजकूर ७६८-डायमेंशनल वेक्टरमध्ये रूपांतरित करण्यासाठी all-mpnet-base-v2 वापरतो जे सिमेंटिक अर्थ पकडतात. ही एम्बेडिंग्ज आमच्या संपूर्ण SEO पाईपलाइनला शक्ती देतात:
-
क्वेरी क्लस्टरिंग: ०.८५ समानता थ्रेशोल्ड वापरून ६५K क्वेरी पृष्ठांमध्ये गट करा
-
उत्पादन जुळणी: क्वेरींची उत्पादनांशी सिमेंटिक जुळणी करा
-
संबंधित शोध: नेव्हिगेशनसाठी समान क्वेरी शोधा
-
फ्रेज विस्तार: नवीन फिल्टर फ्रेज शोधा
एम्बेडिंग्ज जलद लोडिंगसाठी NumPy अॅरे म्हणून साठवली जातात आणि न बदललेला डेटा पुन्हा एम्बेड करणे टाळण्यासाठी वाढत्या पद्धतीने प्रक्रिया केली जातात. समान एम्बेडिंग्ज NumPy फाइल्स आणि Valkey RediSearch द्वारे एकाधिक सर्व्हरवर वापरली जातात.