क्वेरी क्लस्टरिंग: बॅच प्रोसेसिंगसह ऑल-टू-ऑल साम्य
हा लेख स्पष्ट करतो की आम्ही मेमरी कार्यक्षमतेसाठी बॅच प्रोसेसिंगसह ऑल-टू-ऑल कोसाइन साम्य तुलना वापरून शोध क्वेरींना सिमँटिक गटांमध्ये कसा क्लस्टर करतो.
समस्या: समान क्वेरींचे गट करणे
वापरकर्ते एकाच गोष्टीसाठी अनेक प्रकारे शोध घेतात:
-
"मिनी पीसी"
-
"छोटा संगणक"
-
"कॉम्पॅक्ट डेस्कटॉप"
-
"लहान पीसी"
या क्वेरींनी समान पृष्ठावर नेले पाहिजे. आम्हाला सिमँटिकदृष्ट्या समान क्वेरींना एकत्र क्लस्टर करणे आवश्यक आहे जेणेकरून आम्ही हे करू शकू:
-
प्रति क्लस्टर एक क्वेरी पृष्ठ तयार करा
-
समान शोधांमध्ये ट्रॅफिक एकत्रित करा
-
डुप्लिकेट कंटेंट टाळा
-
उच्च-ट्रॅफिक क्लस्टर्सवर लक्ष केंद्रित करून SEO सुधारा
मोठ्या क्वेरी व्हॉल्यूमसह, आम्हाला मेमरी संपू न देता सर्वोत्तम जुळणी शोधण्यासाठी एक कार्यक्षम क्लस्टरिंग अल्गोरिदम आवश्यक आहे.
अल्गोरिदम: ऑल-टू-ऑल बॅच तुलना
आम्ही ऑल-टू-ऑल साम्य तुलना वापरतो जिथे प्रत्येक क्वेरीची तुलना तिची सर्वोत्तम जुळणी शोधण्यासाठी प्रत्येक इतर क्वेरीशी केली जाते. मोठ्या संख्येने क्वेरीसह मेमरी संपणे टाळण्यासाठी, आम्ही प्रक्रियेचे बॅच करतो.
चरण 1: एम्बेडिंग लोड करा
आम्ही पूर्व-गणना केलेली एम्बेडिंग मेमरीमध्ये लोड करतो. प्रत्येक क्वेरी सेंटन्स ट्रान्सफॉर्मर मॉडेलमधून निश्चित-आयामी वेक्टर म्हणून दर्शविली जाते.
चरण 2: बॅच प्रोसेसिंग
मेमरी ओव्हरफ्लो टाळण्यासाठी आम्ही क्वेरींची बॅचमध्ये प्रक्रिया करतो. प्रत्येक बॅच त्यातील क्वेरी आणि सर्व उपलब्ध क्वेरींमधील कोसाइन साम्य स्कोअरची गणना करते. बॅचमधून पुनरावृत्ती करून, सर्व साम्यता एकाच वेळी मेमरीमध्ये लोड न करता प्रत्येक क्वेरीची तुलना सर्व इतरांशी केली जाते.
चरण 3: सर्वोत्तम जुळणी शोधा
बॅचमधील प्रत्येक क्वेरीसाठी, आम्ही सर्व क्वेरींमध्ये तिची सर्वोत्तम जुळणी ओळखतो. सर्वोत्तम साम्यता स्कोअर असलेली क्वेरी क्लस्टर केंद्र बनते. साम्यता कॉन्फिगर केलेल्या थ्रेशोल्डपेक्षा कमी असल्यास, क्वेरी आत्तासाठी क्लस्टर न केलेली राहते.
चरण 4: सिंगलटन क्लस्टर्स
सर्व बॅच पूर्ण झाल्यानंतर, कोणतीही क्वेरी जी क्लस्टरला नियुक्त केली गेली नाही ती सिंगलटन क्लस्टर बनते (फक्त स्वतःच असलेले क्लस्टर). हे सुनिश्चित करते की प्रत्येक क्वेरी नक्की एका क्लस्टरशी संबंधित आहे.
कॉन्फिगर करण्यायोग्य थ्रेशोल्ड
साम्यता थ्रेशोल्ड क्लस्टरिंग किती कठोर आहे हे निर्धारित करते:
-
उच्च थ्रेशोल्ड: फक्त या मूल्याच्या वरील कोसाइन साम्यता असलेल्या क्वेरी समान क्लस्टरमध्ये सामील होतात; घट्ट सिमँटिक गटासह अधिक क्लस्टर्स परिणाम
-
कमी थ्रेशोल्ड: कमी साम्यता स्कोअर असलेल्या क्वेरी एकत्र गट केल्या जातात; व्यापक सिमँटिक कव्हरेजसह कमी, मोठे क्लस्टर्स परिणाम
थ्रेशोल्ड अॅप्लिकेशन कॉन्फिग फाइलमध्ये कॉन्फिगर केलेला आहे आणि कोड बदलल्याशिवाय समायोजित केला जाऊ शकतो.
क्लस्टर रँकिंग
क्लस्टर्सची Google Search Console इम्प्रेशन आणि क्लिकमधून एकूण ट्रॅफिक स्कोअरनुसार रँक केली जातात. प्रत्येक क्लस्टरसाठी, सर्व सदस्य क्वेरींच्या ट्रॅफिक स्कोअरची बेरीज त्याची रँकिंग निश्चित करते. उच्च-ट्रॅफिक क्लस्टर्सला क्वेरी पृष्ठ निर्मितीसाठी प्राधान्य मिळते.
आउटपुट स्वरूप
क्लस्टरिंग सांख्यिकी आणि क्लस्टर डेटासह एक JSON फाइल तयार करते:
{
"stats": {
"threshold": "configured_value",
# ... (अंमलबजावणी तपशील वगळले)
क्लस्टर्स एकूण स्कोअरनुसार क्रमवारी लावले जातात (सर्वात जास्त ट्रॅफिक प्रथम).
मेमरी कार्यक्षमता
बॅच केलेला दृष्टिकोन सर्व साम्यता एकाच वेळी गणना करण्याऐवजी क्वेरींची चंकमध्ये प्रक्रिया करून मेमरी वापर व्यवस्थापनीय ठेवतो. हे संगणनादरम्यान आवश्यक असलेली इंटरमीडिएट डेटा संरचना कमी करते.
पूर्ण साम्यता मॅट्रिक्स (num_queries × num_queries) तयार करण्याऐवजी, आम्ही एका वेळी एक बॅच गणना करतो:
-
प्रति-बॅच मेमरी: फक्त सध्याचा बॅच प्लस पूर्ण एम्बेडिंग अॅरे मेमरीमध्ये असतात
-
मेमरी कपात: बॅचिंग प्रति पुनरावृत्ती लहान उपसंच प्रक्रिया करून तात्पुरत्या मॅट्रिक्स आकार कमी करते
-
ट्रेड-ऑफ: किंचित अधिक संगणना (एम्बेडिंग अनेक वेळा वाचणे) परंतु लक्षणीयरीत्या कमी पीक मेमरी वापर
बॅच आकार कॉन्फिगर करण्यायोग्य आहे, उपलब्ध सिस्टम मेमरीवर आधारित समायोजन करण्यास परवानगी देतो. मोठे बॅच पुनरावृत्ती संख्या कमी करतात परंतु मेमरी वापर वाढवतात; लहान बॅच कमी मेमरी वापरतात परंतु अधिक पुनरावृत्ती आवश्यक असतात.
ब्लॅकलिस्ट फिल्टरिंग
क्लस्टरिंग करण्यापूर्वी, आम्ही ब्लॅकलिस्ट केलेल्या क्वेरी (ब्रँड नावे, स्पर्धक, असंबंधित संज्ञा) फिल्टर करतो. हे आवाज कमी करते आणि क्लस्टर गुणवत्ता सुधारते.
ब्लॅकलिस्ट स्वतंत्रपणे राखली जाते आणि क्वेरी लोडिंग दरम्यान तपासली जाते.
इंक्रिमेंटल क्लस्टरिंग
जेव्हा नवीन क्वेरी येतात, तेव्हा आम्ही सर्वकाही पुन्हा क्लस्टर करत नाही:
- विद्यमान क्लस्टर्स लोड करा
- नवीन क्वेरी एम्बेड करा
- नवीन क्वेरीची विद्यमान क्लस्टर केंद्रांशी तुलना करा
- सर्वोत्तम जुळणार्या क्लस्टरला नियुक्त करा किंवा नवीन क्लस्टर तयार करा
- अद्यतनित स्कोअरनुसार क्लस्टर्स पुन्हा रँक करा
ही इंक्रिमेंटल पद्धत फक्त नवीन डेटावर प्रक्रिया करते, संगणना वेळ वाचवते.
SEO पाइपलाइनसह एकत्रीकरण
क्वेरी क्लस्टरिंग ही SEO पाइपलाइनमधील चरण 5 आहे:
- चरण 0: एम्बेड सोर्स डेटा - उत्पादने, भाग, लेख
- चरण 1: क्वेरी आणा - GSC, Google Ads, लाइव्ह, Algolia
- चरण 2: क्वेरी एकत्र करा - सर्व स्त्रोत विलीन करा
- चरण 3a: बेस फ्रेझ मॅपिंग्ज तयार करा - प्रारंभिक फिल्टर
- चरण 3b: क्वेरी एम्बेड करा - वेक्टरमध्ये रूपांतरित करा
- चरण 4: फ्रेझ मॅपिंग्ज विस्तृत करा - समान फ्रेझ शोधा
- चरण 5: क्वेरी क्लस्टर करा ← तुम्ही इथे आहात
- चरण 6: उत्पादने जुळवा - क्वेरी-उत्पादन जुळणी
- चरण 7: क्वेरी पृष्ठ तयार करा - HTML जनरेट करा
- चरण 8: संबंधित शोध निर्माण करा - संबंधित क्वेरी शोधा
- चरण 11: Valkey वर मायग्रेट करा - शोध सेवेत लोड करा
संपूर्ण प्रवाहासाठी SEO पाइपलाइन ओव्हरव्ह्यू पहा.
K-मीन्सऐवजी ऑल-टू-ऑल का?
आम्ही पूर्वी पूर्व-निवडलेल्या क्लस्टर केंद्रांसह k-मीन्स क्लस्टरिंग वापरले होते. ऑल-टू-ऑल दृष्टिकोनाचे फायदे आहेत:
-
चांगली जुळणी: प्रत्येक क्वेरीला तिची खरी सर्वोत्तम जुळणी सापडते, फक्त काही पूर्व-निवडलेल्या केंद्रांपैकी जवळची नाही
-
पूर्व-निवड पूर्वग्रह नाही: क्लस्टर केंद्रे डेटामधून नैसर्गिकरित्या उदयास येतात
-
अॅडाप्टिव्ह क्लस्टर संख्या: क्लस्टर्सची संख्या डेटा वितरणास अनुकूल करते
-
उच्च गुणवत्ता: क्वेरी त्यांच्या सर्वात समान जुळणीसह क्लस्टर करतात, समझोता नाही
ट्रेड-ऑफ म्हणजे वाढलेला संगणना वेळ, परंतु गुणवत्तेतील सुधारणा त्याचे समर्थन करते.
कार्यप्रदर्शन वैशिष्ट्ये
क्लस्टरिंग प्रक्रियेची ही वैशिष्ट्ये आहेत:
-
प्रक्रिया वेळ: क्वेरी व्हॉल्यूम आणि साम्यता थ्रेशोल्डसह स्केल करते; मोठे बॅच पुनरावृत्ती कमी करतात
-
मेमरी वापर: एम्बेडिंग मॅट्रिक्स + सक्रिय बॅच + तात्पुरती कार्यरत जागा; बॅच आकाराद्वारे कॉन्फिगर करण्यायोग्य
-
डिस्क I/O: सुरुवातीला पूर्ण एम्बेडिंग अॅरेचे एक अनुक्रमिक वाचन; प्रक्रियेदरम्यान किमान I/O
-
CPU वापर: सर्व बॅच-टू-ऑल तुलनांमधील कोसाइन